⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgdlg.cpp

📁 基于WINCE
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	qiposition=m_strRXData.Find(L"+CMGL",iGet_Cmgl0_Position);//2006/4/3


	if(CC=="+CMGL")
	{
		MsgPosition=m_strRXData.Find(L"\r\n",qiposition)+2;//Position是+CMGL的位置,MsgPosition是0891..开始位置
		MsgChange(MsgPosition,_T("未读"));
		CC.Empty();
		TCHAR CMGD[12]=TEXT("at+cmgd=1\r\n");
		SendAtCommand(CMGD,12);
		Sleep(200);
	}
	CDialog::OnTimer(nIDEvent);
}
void CMsgDlg::OnDelete() //删除除除除除除除除除除除除除除除除除除除除除除除除除除除除除除除除
{
	Index=m_ListCtrl.GetItemText(IndexInFieldList2,4);		   //CString Index;
//MessageBox(Index,TEXT("OnDelete()Index"),MB_OK);
	if(Index=="")
	{
		MessageBox(TEXT("没有选择项目,请重新点击"),TEXT("提示"),MB_OK);
	}
	else
	{
		DelogDialog diadel;
		if(diadel.DoModal()==IDOK)
		{
			//MessageBox(TEXT("进入删除"),TEXT("提示"),MB_OK);
			DelFileLine(Index);
		}
	
	}

	//SetTimer(1,3000,NULL);20061/10暂时删除20061/10暂时删除20061/10暂时删除20061/10暂时删除暂时删除20061/10暂时删除20061/10暂时删除
}

void CMsgDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_ListCtrl.SetFocus();
	POSITION pos2;
	
    pos2 = m_ListCtrl.GetFirstSelectedItemPosition();

    IndexInFieldList2 = m_ListCtrl.GetNextSelectedItem(pos2);  //int IndexInFieldList2;
	iStatee=IndexInFieldList2;
	Index=m_ListCtrl.GetItemText(IndexInFieldList2,4);		   //CString Index;

	content= m_ListCtrl.GetItemText(IndexInFieldList2, 5);//在MSGDLG.H中定义int IndexInFieldList2
content_phone=m_ListCtrl.GetItemText(IndexInFieldList2, 0);
content_date =m_ListCtrl.GetItemText(IndexInFieldList2, 2);
content_time =m_ListCtrl.GetItemText(IndexInFieldList2, 3);
//MessagXT("content"),MB_OK);

	CString display;
	display=content;
	CString ss=openfile();
	CPLAY *dlg=new CPLAY;
	CMsgDlg *dlgg=this;
	dlg->dlggg=dlgg;
	dlg->m_Msgcontent=content;
	dlg->m_Msgcontent_phone=content_phone;
	dlg->m_Msgcontent_date=content_date;
	dlg->m_Msgcontent_time=content_time;
	dlg->m_MsgIndex=Index;//将
	dlg->m_Msgcontent_index=Index;
	dlg->playposfin=posfinish;
	dlg->m_wholefile=ss;
	dlg->Create(IDD_DIALOG3);
	dlg->ShowWindow(SW_SHOW);

	m_ListCtrl.SetItemText(IndexInFieldList2,1,TEXT("已读"));
	chasta(Index);
	*pResult = 0;
}
void CMsgDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) //list
{
	m_ListCtrl.SetFocus();
	POSITION pos2;
	
    pos2 = m_ListCtrl.GetFirstSelectedItemPosition();

    IndexInFieldList2 = m_ListCtrl.GetNextSelectedItem(pos2);  //int IndexInFieldList2;

	iStatee=IndexInFieldList2;
	Index=m_ListCtrl.GetItemText(IndexInFieldList2,4);		   //CString Index;

	CString zanIndex=" "+Index+" ";
	CString wholefile=openfile();
	long posIndex=wholefile.Find(zanIndex,0);
CString kk;
kk.Format(TEXT("%s%d"),kk,posIndex);
//MessageBox(kk,TEXT("posIndex"),MB_OK);
	posfinish=wholefile.Find(TEXT("\r\n"),posIndex)+2;
CString kkk;
kkk.Format(TEXT("%s%d"),kkk,posfinish);
//MessageBox(kkk,TEXT("posfinish"),MB_OK);//点击第一条显示119,

	if(Index=="")
	{
		//MessageBox(TEXT("没有选择项目,请重新点击"),TEXT("提示"),MB_OK);
	}
//MessageBox(Index,TEXT("OnClickList1中的Index"),MB_OK);

	*pResult = 0;
}
void CMsgDlg::OnShowMessage() //查看查看查看查看查看查看查看查看查看查看查看查看查看查看查看查看
{
	// TODO: Add your control notification handler code here
//MessageBox(m_ListCtrl,TEXT("查看m_ListCtrl"),MB_OK);
	Index=m_ListCtrl.GetItemText(IndexInFieldList2,4);		   //CString Index;
//MessageBox(Index,TEXT("OnShowMessage ()Index"),MB_OK);
	content= m_ListCtrl.GetItemText(IndexInFieldList2, 5);//在MSGDLG.H中定义int IndexInFieldList2
	content_phone=m_ListCtrl.GetItemText(IndexInFieldList2, 0);
	content_date =m_ListCtrl.GetItemText(IndexInFieldList2, 2);
	content_time =m_ListCtrl.GetItemText(IndexInFieldList2, 3);
//MessageBox(content,TEXT("content"),MB_OK);
	CString display;
	
	display=content;
CString ss=openfile();
// MessageBox(ss,TEXT("OnShowMessage() ss"),MB_OK);//这个显示也正确

	//2006/3/30暂时屏蔽
	CPLAY *dlg=new CPLAY;
	CMsgDlg *dlgg=this;
	dlg->dlggg=dlgg;
	dlg->m_Msgcontent=content;
	dlg->m_Msgcontent_phone=content_phone;
	dlg->m_Msgcontent_date=content_date;
	dlg->m_Msgcontent_time=content_time;
	dlg->m_MsgIndex=Index;//将第几条的条数传给PLAY类
	dlg->m_Msgcontent_index=Index;
	dlg->playposfin=posfinish;
	dlg->m_wholefile=ss;
	dlg->Create(IDD_DIALOG3);
	dlg->ShowWindow(SW_SHOW);
	


	m_ListCtrl.SetItemText(IndexInFieldList2,1,TEXT("已读"));
	chasta(Index);//函数chasta实现修改文件状态属性
}

void CMsgDlg::chasta(CString chaindex)
{
//MessageBox(chaindex,TEXT("chaindex"),MB_OK);	//点击第四条短信,显示04
												//点击第二条短信,显示02
	//AfxMessageBox(TEXT("进入 DelFileLine"),MB_OK);
	CString s,y;
	DWORD FileLen,FileLen1;
	TCHAR data[4096];
	int leN=0;
	TCHAR BUF;
	HANDLE file;
	file=CreateFile (TEXT("\\Storage Card\\SaveMsg.txt"), GENERIC_READ, FILE_SHARE_WRITE , NULL, OPEN_EXISTING, 0, NULL);
	BY_HANDLE_FILE_INFORMATION bhfi;//bhfi是结构体BY_HANDLE_FILE_INFORMATION的变量
	GetFileInformationByHandle(file,&bhfi);
	FileLen=bhfi.nFileSizeLow;
	for(DWORD len=FileLen;len>0;len-=2)
	{
		ReadFile(file,&BUF,2,&FileLen1,NULL);//file指向上面创建的文件
		data[leN] = BUF;//上面定义TCHAR BUF
		data[leN+1] = '\0';
		leN++;
	}
//MessageBox(data,TEXT("data"),MB_OK);//点击第四条短信,显示所有的短信
									//点击第二条短信,显示所有的短信
	TCHAR *abc=data;
	s=abc;
//MessageBox(s,TEXT("s"),MB_OK);	    //点击第四条短信,显示所有的短信			
	int total=s.GetLength();
	CString newStr;
	CString string1;
	newStr=TEXT(" ")+chaindex+TEXT(" ");//
//MessageBox(newStr,TEXT("newStr"),MB_OK);//点击第四条短信,显								
	int length1=s.Find(newStr);

	int length2=length1-43;//////////////////////////////////////////////////////////////////////////////////////////
CString yyy;
yyy.Format(TEXT("%s%d"),yyy,length2);
//MessageBox(yyy,TEXT("length2"),MB_OK);//length2是这条短信前面的所有短信的长度,点击第四条短信,显示164
	string1=s.Left(length2);
//
	int length3=s.Find(TEXT("\r\n"),length1)+2;//length
CString yyyy;					   //lengt	
yyyy.Format(TEXT("%s%d"),yyyy,length3);
//MessageBox(yyyy,TEXT("length3"),MB_OK);	  //点击第四条短信,显示259	
	CString change=s.Mid(length2,(length3-length2));
//MessageBox(change,TEXT("change 前"),MB_OK);
	change.Replace(_T("未读"),_T("已读"));
//MessageBox(change,TEXT("change 后"),MB_OK);
	string1+=change;
//MessageBox(string1,TEXT("change 后string1"),MB_OK);								
	int length4=total-length3;
CString yyyyy;
yyyyy.Format(TEXT("%s%d"),yyyyy,length4);
//MessageBox(yyyy,TEXT("length4"),MB_OK);   //点击第四条短信,显示259
										  //点击第三条短信,显示168
										  //点击第二条短信,显示112
	string1+=s.Right(length4);
//MessageBox(string1,TEXT("string1"),MB_OK);//点击第四条短信,
										  //点击第三
										  //点击第二	
//	m_display=string1;
	UpdateData(0);
	CloseHandle(file);
	CFile::Remove(TEXT("\\Storage Card\\SaveMsg.txt"));
	int m_num2=2*string1.GetLength();
CString yyyyyy;
yyyyyy.Format(TEXT("%s%d"),yyyyyy,m_num2);
//MessageBox(yyyyy,TEXT("m_num2"),MB_OK);//点击第二条短信,显示58
	CFile file1;
	file1.Open(TEXT("\\Storage Card\\SaveMsg.txt"),CFile::modeCreate|CFile::modeWrite);
	file1.Write(string1,m_num2);
	file1.Close();
	
}

void CMsgDlg::OnQuit() //回八大模块
{
	// TODO: Add your control notification handler code here
	//CFile
	//OnOK();//2006/4/13
CloseHandle(hPort);
	ExitProcess(NULL);
}
void CMsgDlg::DelFileLine(CString newindex)//对应"返回"按键,newindex即为Index
{

//MessageBox(newindex,TEXT("DelFileLine-newindex"),MB_OK);	//点击第四条短信,显示04
															//点击第二条短信,显示02
	//AfxMessageBox(TEXT("进入 DelFileLine"),MB_OK);
	CString s,y;
	DWORD FileLen,FileLen1;
	TCHAR data[4096];
	int leN=0;
	TCHAR BUF;
	HANDLE file;
	file=CreateFile (TEXT("\\Storage Card\\SaveMsg.txt"), GENERIC_READ, FILE_SHARE_WRITE , NULL, OPEN_EXISTING, 0, NULL);
	BY_HANDLE_FILE_INFORMATION bhfi;//bhfi是结构体BY_HANDLE_FILE_INFORMATION的变量
	GetFileInformationByHandle(file,&bhfi);
	FileLen=bhfi.nFileSizeLow;
//MessageBox((CString)FileLen,TEXT("FileLen"),MB_OK);//点击第四条短信,显示方框
	for(DWORD len=FileLen;len>0;len-=2)
	{
		ReadFile(file,&BUF,2,&FileLen1,NULL);//file指向上面创建的文件
		data[leN] = BUF;//上面定义TCHAR BUF
	//MessageBox(data,TEXT("循环内的data"),MB_OK);
		data[leN+1] = '\0';
		leN++;
	}
//MessageBox(data,TEXT("data"),MB_OK);	//信
										//点击短信
	TCHAR *abc=data;
	s=abc;
//MessageBox(s,TEXT("s"),MB_OK);	    //点击第所有的短信
										//点击第的短信
	int total=s.GetLength();
CString Y;
Y.Format(TEXT("%s%d"),Y,total);
//MessageBox(Y,TEXT("total"),MB_OK);//点击第四条短信,显示259
								  //点击第二条短信,显示170	
	CString newStr;
	CString string1;
	newStr=TEXT(" ")+newindex+TEXT(" ");//ne所选择的哪条短信
//MessageBox(newStr,TEXT("newStr"),MB_OK);//点击第四条短信,显示04
										//点击第二条短信,显示02
	int length1=s.Find(newStr);
CString yy;
yy.Format(TEXT("%s%d"),yy,length1);
//MessageBox(yy,TEXT("length1"),MB_OK);//点击第四条短信,显示211
									   //点击第二条短信,显示98

	int length2=length1-43;//47->43////////////////////////////////////////////////////////////////////////////
CString yyy;
yyy.Format(TEXT("%s%d"),yyy,length2);
//MessageBox(yyy,TEXT("length2"),MB_OK);	  //length2是这条短信前面的所有短信的长度,点击第四条短信,显示164
												//点击第二条短信,显示51
	string1=s.Left(length2);
//MessageBox(string1,TEXT("string1"),MB_OK);//点击第四条短信,
										    //点击第三条短信息
										    //点击第信息
	//string1+="\r\n";
int poss=string1.Find(TEXT("\r\n"));
CString ggg;
ggg.Format(_T("%s%d"),ggg,poss);
//MessageBox(ggg,TEXT("删除后显示第一条的\r\n位置"),MB_OK);
	int length3=s.Find(TEXT("\r\n"),length1)+2;//lengt信的第几条所在的位置
												//lengt短信总的长度	
	int length4=total-length3;
	CString left1=s.Right(length4);//left1是被删除短信后面所有的短信
//MessageBox(left1,TEXT("left1"),MB_OK);
	
	while(2*left1.GetLength() > 40)
	{
		int newpos=left1.Find(TEXT("\r\n"));
		CString left2=left1.Left(newpos+2);//lef的第一条短信
	//MessageBox(left2,TEXT("left2"),MB_OK);//显示面的第一条短信
		CString shiyan=left2.Mid(44,2);
	//MessageBox(shiyan,TEXT("shiyan"),MB_OK);

		CString poiu1=left2.Left(44);//这是字符
		CString poiu2=left2.Mid(44,2);//索位
		CString poiu3=left2.Mid(46,118);//这是所有的字符
		left2=poiu1+newindex+poiu3;


		//left2.Replace(shiyan,newindex);
	//MessageBox(left2,TEXT("修改后left2"),MB_OK);
		newindex=shiyan;
		length4-=(newpos+2);
		left1=s.Right(length4);
	//MessageBox(left1,TEXT("循环里面的left1"),MB_OK);
		string1+=left2;
	//MessageBox(string1,TEXT("string1"),MB_OK);//点击第完整信息
										  //点击第三完整信息
										  //点击第条短信的完整信息
	}
//	m_display=string1;



	UpdateData(0);
	CloseHandle(file);
	CFile::Remove(TEXT("\\Storage Card\\SaveMsg.txt"));
	int m_num2=2*string1.GetLength();
CString yyyyyy;
yyyyyy.Format(TEXT("%s%d"),yyyyyy,m_num2);
//MessageBox(yyyyy,TEXT("m_num2"),MB_OK);//点击第二条短信,显示58
	CFile file1;
	file1.Open(TEXT("\\Storage Card\\SaveMsg.txt"),CFile::modeCreate|CFile::modeWrite);
	file1.Write(string1,m_num2);
	file1.Close();

	CString ss=openfile();

	BOOL a=m_ListCtrl.DeleteAllItems();
	UpdateData(FALSE);
	signjjj=0;
	pagesign=0;
	DisplayListItems();
	//DisplayListItems();
}

void CMsgDlg::OnButton3() //返回
{
	// TODO: Add your control notification handler code here
	CDialog::OnOK();
	//DelFileLine(TEXT("03"));
}

void CMsgDlg::OnButton9() 
{
	// TODO: Add your control notification handler code here
//	m_displaynew.Empty();
	UpdateData(0);
}


void CMsgDlg::DisplayEveryList(CString StrList)//"向后"按键调用此函数
{
	//AfxMessageBox(TEXT("进入 DisplayEveryList"),MB_OK);
	    j=0; //0->1    2006/3/23
		int pos;
		TCHAR *buffer;//指向UNICODE码的指针
		SPS *buf;
		TCHAR sbuffer[100];
		int iPos;
		CString y;
//CString shiyan=StrList.Right (119);//119
//MessageBox(StrList,TEXT("DisplayEveryList->StrList"),MB_OK);//显示所有短信
		while(2*StrList.GetLength() > 40)
		{	
			pos=StrList.Find(TEXT("\r\n"));
CString ggg;
ggg.Format(_T("%s%d"),ggg,pos);
//MessageBox(ggg,TEXT("pos"),MB_OK);//pos 是59
			y=StrList.Left(pos+2);

			StrList=StrList.Right(StrList.GetLength()-pos-2);//第一次执行,StrList指向从第二条短信开始后面的短信


			buffer=y.GetBuffer(2*y.GetLength());

			buf=(SPS*)buffer;

			memcpy(sbuffer,(*buf).Sender,26);
			
//MessageBox(sbuffer,TEXT("sbuffer前"),MB_OK);//8613652336842 小方框
CString k=(*buf).Sender;

		//MyTrim(sbuffer,30);
		MyTrim(sbuffer,26);
	
		iPos=m_ListCtrl.InsertItem(j,sbuffer);


		memcpy(sbuffer,(*buf).Status,6);

		MyTrim(sbuffer,6);
		m_ListCtrl.SetItemText(iPos,1,sbuffer);

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -