www.pudn.com > HanMsg.rar > MsgDlg.cpp


// MsgDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Msg.h" 
#include "MsgDlg.h" 
#include "Func.h" 
#include "MsgDialog.h" 
#include "InitDialog.h" 
#include "DelogDialog.h" 
#include "PLAY.h" 
//#include "afx.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
DWORD WINAPI ReadThread(CMsgDlg *dlg); 
DWORD WINAPI InitThread(CMsgDlg *Initdlg); 
int iStatee; 
///////////////////////////////////////////////////////////////////////////// 
// CMsgDlg dialog 
 
CMsgDlg::CMsgDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CMsgDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CMsgDlg) 
	Len=0; 
	//}}AFX_DATA_INIT 
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
	btn2.LoadBitmaps(_T("btn2"), _T("btn2")); 
	del.LoadBitmaps(_T("del"), _T("del")); 
	btn3.LoadBitmaps(_T("btn3"), _T("btn3")); 
	btn4.LoadBitmaps(_T("btn4"), _T("btn4")); 
	btn5.LoadBitmaps(_T("btn5"), _T("btn5")); 
	btn6.LoadBitmaps(_T("btn6"), _T("btn6")); 
	btn7.LoadBitmaps(_T("btn7"), _T("btn7")); 
	btn8.LoadBitmaps(_T("btn8"), _T("btn8")); 
} 
 
void CMsgDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CMsgDlg) 
	DDX_Control(pDX, IDC_LIST1, m_ListCtrl); 
	//DDX_Text(pDX,IDC_LIST1,SBUFFER); 
	//DDX_Control(pDX,IDC_LIST1,SBUFFERCON); 
 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CMsgDlg, CDialog) 
	//{{AFX_MSG_MAP(CMsgDlg) 
	ON_WM_TIMER() 
	ON_MESSAGE(WM_MYMESSAGE,OnComm) 
	ON_BN_CLICKED(IDC_BUTTON1, OnDelete) 
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) 
	ON_BN_CLICKED(IDC_BUTTON2, OnShowMessage) 
	ON_BN_CLICKED(IDC_BUTTON4, OnQuit) 
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3) 
	ON_BN_CLICKED(IDC_BUTTON9, OnButton9) 
	ON_BN_CLICKED(IDC_BUTTON7, OnNext) 
	ON_BN_CLICKED(IDC_BUTTON8, OnLast) 
	ON_BN_CLICKED(IDC_BUTTON5, OnFirst) 
	ON_BN_CLICKED(IDC_BUTTON6, OnPrevious) 
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1) 
	ON_BN_CLICKED(IDC_HOW, OnHow) 
	ON_BN_CLICKED(IDC_RESET, OnReset) 
	ON_BN_CLICKED(IDC_SHIYAN, OnShiyan) 
	ON_BN_CLICKED(IDC_BUTTON10, OnButton10) 
	ON_BN_CLICKED(IDC_SEND, OnSend) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CMsgDlg message handlers 
 
BOOL CMsgDlg::OnInitDialog() 
{ 
	CDialog::OnInitDialog(); 
 
	// Set the icon for this dialog.  The framework does this automatically 
	//  when the application's main window is not a dialog 
	SetIcon(m_hIcon, TRUE);			// Set big icon 
	SetIcon(m_hIcon, FALSE);		// Set small icon 
	 
	CenterWindow(GetDesktopWindow());	// center to the hpc screen 
 
	// TODO: Add extra initialization here 
	VERIFY(btn2.SubclassDlgItem(IDC_BUTTON2,this)); 
	btn2.SizeToContent(); 
	VERIFY(del.SubclassDlgItem(IDC_BUTTON1,this)); 
	del.SizeToContent(); 
	VERIFY(btn3.SubclassDlgItem(IDC_BUTTON3,this)); 
	btn3.SizeToContent(); 
	VERIFY(btn4.SubclassDlgItem(IDC_BUTTON4,this)); 
	btn4.SizeToContent(); 
	VERIFY(btn5.SubclassDlgItem(IDC_BUTTON5,this)); 
	btn5.SizeToContent();						     
	VERIFY(btn6.SubclassDlgItem(IDC_BUTTON6,this)); 
	btn6.SizeToContent(); 
	VERIFY(btn7.SubclassDlgItem(IDC_BUTTON7,this)); 
	btn7.SizeToContent(); 
	VERIFY(btn8.SubclassDlgItem(IDC_BUTTON8,this)); 
	btn8.SizeToContent(); 
 
	///////////////////////////////////////////初始化参数 
	pagesign=0; 
	signjjj=0; 
	nextpasi=0; 
 
	time=new CFont; 
	time->CreateFont(24,0,0,0,600,FALSE,FALSE,0, 
					ANSI_CHARSET,OUT_DEFAULT_PRECIS, 
					CLIP_DEFAULT_PRECIS, 
					DEFAULT_QUALITY, 
					DEFAULT_PITCH|FF_SWISS, 
					_T("宋体")); 
	m_ListCtrl.SetFont(time,TRUE); 
	m_ListCtrl.SetTextColor(RGB(0,0,255)); 
 
	 
	CFileException ex; 
	if(!file.Open(TEXT("\\Storage Card\\SaveMsg.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite, &ex)) 
	{ 
		unsigned char tmp; 
		tmp = ex.m_cause; 
		tmp += 0x30; 
		MessageBox((CString)tmp, MB_OK); 
	} 
	file.Close(); 
	 
	DWORD dwThreadID; 
	HANDLE m_pCommThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)InitThread,this,0,&dwThreadID); 
	if (m_pCommThread) 
	{ 
 
	} 
	else 
	{			 
		CloseHandle(m_pCommThread); 
	} 
	 
 
	InitDialog dlg; 
	BOOL bResult=dlg.DoModal(); 
 
 
	//2006/4/1 
	DisplayListColumn(); 
	DisplayListItems(); 
 
	 
	return TRUE;  // return TRUE  unless you set the focus to a control 
	//MessageBox(TEXT("return TRUE; 之后"),MB_OK); 
} 
void CMsgDlg::OnComm() 
{ 
	ReadDataCycle(); 
} 
void CMsgDlg::ReadData()  
{ 
	// TODO: Add your control notification handler code here 
	//typedef struct _COMSTAT 
	COMSTAT ComStat; 
	char buf; 
	char data1[4096]; 
	int len = 0; 
	DWORD dwBytesRead, dwErrorFlags; 
 
	ClearCommError(hPort,&dwErrorFlags,&ComStat); 
	m_strRXData.Empty(); 
 
	if(ComStat.cbInQue!=0) 
	{ 
		//AfxMessageBox(L"进入ComStat.cbInQue!"); 
		CString aa; 
		aa.Format (_T("%s%d"),aa,ComStat.cbInQue); 
	 
		for(DWORD i=ComStat.cbInQue;i>0;i--) 
		{ 
			ReadFile(hPort,&buf,1,&dwBytesRead,NULL); 
			data1[len] = buf; 
			data1[len+1] = 0; 
			len++; 
		}  
	} 
	else 
	{ 
		//AfxMessageBox(L"No More Data For Read!"); 
	} 
	m_strRXData=data1; 
} 
 
//接收串口数据线程接收串口数据线程接收串口数据线程接收串口数据线程接收串口数据线程接收串口数据线程接收串口数据线程接收串口数据线程 
DWORD WINAPI ReadThread(CMsgDlg *dlg)  
{     
   	Sleep(2500); 
	COMSTAT ComStat; 
	DWORD dwErrorFlags; 
	ClearCommError(dlg->hPort,&dwErrorFlags,&ComStat); 
 
	if(ComStat.cbInQue!=0) 
	{ 
	 AfxMessageBox(TEXT("cbInque!=0串口接受区有信息")); 
 
		dlg->PostMessage(WM_MYMESSAGE,0,0);  
		 
	} 
	return TRUE; 
} 
 
 
DWORD WINAPI InitThread(CMsgDlg *Initdlg) 
{ 
	Initdlg->CommInit(); 
	Initdlg->ModuleInit(); 
	return TRUE; 
} 
void CMsgDlg::ReadDataCycle() 
{ 
	// TODO: Add your control notification handler code here 
	COMSTAT ComStat; 
	char buf; 
	char data1[1024]; 
	int len = 0; 
	DWORD dwBytesRead, dwErrorFlags; 
	ClearCommError(hPort,&dwErrorFlags,&ComStat); 
 
	if(ComStat.cbInQue!=0) 
	{ 
		for(DWORD i=ComStat.cbInQue;i>0;i--) 
		{ 
			ReadFile(hPort,&buf,1,&dwBytesRead,NULL);//会不会影响串口寿命? 
			data1[len] = buf; 
			data1[len+1] = 0; 
			len++;	 
		}  
	} 
	else 
	{ 
		AfxMessageBox(L"No More Data For Read!"); 
	} 
	CString Data; 
	Data=data1; 
//	m_displaynew+=Data; 
	UpdateData(0); 
//	Sleep(500); 
//	PurgeComm(hPort,PURGE_TXCLEAR|PURGE_RXCLEAR); 
	if(Data.GetLength() > 40) 
	{ 
		KillTimer(1); 
		m_strRXData.Empty(); 
		m_read.Empty(); 
	 
		m_strRXData=Data; 
		MsgCutProcess("at+cmgl=0","未读"); 
		 
	 
		WriteFilecmgl0(); 
//		Sleep(1500); 
		m_strRXData.Empty(); 
		m_read.Empty(); 
		AfxMessageBox(TEXT("有新的短信息!"),MB_OK); 
		m_ListCtrl.DeleteAllItems(); 
		DisplayListItems(); 
 
	} 
	Data.Empty(); 
} 
void CMsgDlg::DisplayListColumn() //2006/1/5屏蔽掉,修改项目 
{ 
	 
	//AfxMessageBox(TEXT("enter displaylistcolumn"),MB_OK); 
	LV_COLUMN lvcol;  
    int i=0; 
 
	lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;  
 
	lvcol.fmt=LVCFMT_CENTER;//居中  
 
 
	lvcol.pszText=TEXT("手机号码");  
	lvcol.iSubItem=i;  
	lvcol.cx=150;  
	//lvcol.cx=100;  
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	lvcol.pszText=TEXT("已读/未读");  
	lvcol.iSubItem=i;  
	lvcol.cx=70;  
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
 
	lvcol.pszText=TEXT("时间");  
	lvcol.iSubItem=i;  
	lvcol.cx=120;  
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	lvcol.pszText=TEXT("am/pm");  
	lvcol.iSubItem=i;  
	lvcol.cx=70;  
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	lvcol.pszText=TEXT("索引项");  
	lvcol.iSubItem=i;  
	lvcol.cx=50;  
	m_ListCtrl.InsertColumn(i++,&lvcol); 
 
 
	lvcol.pszText=TEXT("信息内容");  
	lvcol.iSubItem=i;  
	lvcol.cx=100;  
	m_ListCtrl.InsertColumn(i++,&lvcol); 
 
 
} 
 
/*void CMsgDlg::DisplayListColumn() 
{ 
	 
	//AfxMessageBox(TEXT("enter displaylistcolumn"),MB_OK); 
	LV_COLUMN lvcol;  
    int i=0; 
 
	lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;  
 
	lvcol.fmt=LVCFMT_CENTER;//居中  
 
 
	lvcol.pszText=TEXT("手机号码");  
	lvcol.iSubItem=i;  
	//lvcol.cx=150;  
	lvcol.cx=120;  
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	lvcol.pszText=TEXT("已读/未读");  
	lvcol.iSubItem=i;  
	//lvcol.cx=70;  
	lvcol.cx=120;  
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	//lvcol.pszText=TEXT("信息中心号码");  
	//lvcol.iSubItem=i;  
	//lvcol.cx=150;  
	//m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	lvcol.pszText=TEXT("时间");  
	lvcol.iSubItem=i;  
	//lvcol.cx=50;  
	lvcol.cx=120; 
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	lvcol.pszText=TEXT("am/pm");  
	lvcol.iSubItem=i;  
	//lvcol.cx=50;  
	lvcol.cx=120; 
	m_ListCtrl.InsertColumn(i++,&lvcol);  
 
	//lvcol.pszText=TEXT("索引项");  
	//lvcol.iSubItem=i;  
	//lvcol.cx=70;  
	//m_ListCtrl.InsertColumn(i++,&lvcol); 
 
 
	//lvcol.pszText=TEXT("信息内容");  
	//lvcol.iSubItem=i;  
	//lvcol.cx=70;  
	//m_ListCtrl.InsertColumn(i++,&lvcol); 
 
	//AfxMessageBox(TEXT("DisplayListColumn 完了"),MB_OK); 
}*/ 
 
void CMsgDlg::DisplayListItems() 
{ 
 
	CString ss=openfile(); 
 
	DisplayEveryList(ss);// 
 
	UpdateData(0); 
	//AfxMessageBox(TEXT("DisplayListItems 完了"),MB_OK); 
} 
 
 
void CMsgDlg::OnTimer(UINT nIDEvent) //OnTimerOnTimerOnTimerOnTimerOnTimerOnTimerOnTimerOnTimerOnTimerOnTimerOnTimer 
{ 
 
//MessageBox(TEXT("OnTimer()开始发送at+cmgl=0"),TEXT("content"),MB_OK); 
	//m_strRXData.Empty(); 
	TCHAR Atcmgl0[12]=TEXT("at+cmgl=0\r\n");//at+cmgl=0表示收到的未读短信  
	SendAtCommand(Atcmgl0,12); 
	Sleep(1000);//6000->1000 
	ReadData(); 
//MessageBox(m_strRXData,TEXT("OnTimer 发送at+cmgl=0后读到的"),MB_OK); 
 
	 
	 
	iGet_Cmgl0_Position=m_strRXData.Find(_T("at+cmgl=0")); 
	CString CC; 
	CC=m_strRXData.Mid(iGet_Cmgl0_Position+12,5); 
	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); 
 
	 
		memcpy(sbuffer,(*buf).Date,18); 
		MyTrim(sbuffer,18); 
		m_ListCtrl.SetItemText(iPos,2,sbuffer); 
 
		memcpy(sbuffer,(*buf).Datee,12); 
		MyTrim(sbuffer,12); 
		m_ListCtrl.SetItemText(iPos,3,sbuffer); 
 
		memcpy(sbuffer,(*buf).IndexForDelNew,6); 
	    MyTrim(sbuffer,6); 
		m_ListCtrl.SetItemText(iPos,4,sbuffer); 
 
		memcpy(sbuffer,(*buf).MsgContent,144); 
		MyTrim(sbuffer,144); 
		m_ListCtrl.SetItemText(iPos,5,sbuffer); 
		 
		nextpstr=StrList;//nextpstr是显示完毕一页后剩下的短信 
 
		j++; 
		if(j==9)//首页显示9条短信 
			break; 
	} 
	if(pagesign==0) 
	{ 
		signjjj++; 
	} 
	else if(pagesign==1) 
	{ 
		signjjj--; 
	CString k; 
	k.Format(TEXT("%s%d"),k,signjjj); 
	//MessageBox(k,TEXT("else if(pagesign==1)结束时signjjj"),MB_OK); 
	} 
	else if(pagesign==2) 
	{ 
		signjjj=OnLastpage; 
	 
	} 
	else if(pagesign==3) 
	{ 
		signjjj=1; 
	 
	} 
CString kk; 
kk.Format(TEXT("%s%d"),kk,signjjj); 
//MessageBox(kk,TEXT("signjjj"),MB_OK); 
} 
void CMsgDlg::OnNext() //向后 
{ 
CString gggg; 
gggg.Format(_T("%s%d"),gggg,signjjj); 
 
	pagesign=0;//标志:翻下一页 
	CString s2=openfile(); 
	int a=0; 
	int Msgnum=0; 
	int Len2=0; 
	while((a=s2.Find(TEXT("\r\n"),a)) != -1) 
	{	 
		Msgnum++;//得出短信的总数目 
		a+=2; 
	} 
CString kk; 
kk.Format(TEXT("%s%d"),kk,signjjj); 
//MessageBox(kk,TEXT("OnNext后来 signjjj"),MB_OK);//9 
	//i来的 
 
	int page=Msgnum/9;//页目 
	int pageodd=Msgnum%9;//来的 
	 
	if(page!=0&&pageodd!=0)//表不是整页 
	{ 
		MessageBox(TEXT("进入if(pageodd!=0)"),TEXT("content"),MB_OK); 
 
		if(signjjj<=page) 
		{ 
			int didaiij=signjjj*9; 
			for(int k=0;k0;len-=2) 
	{ 
 
		ReadFile(file,&BUF,2,&FileLen1,NULL); 
		data[leN] = BUF; 
		data[leN+1] = '\0'; 
		leN++; 
	} 
	TCHAR *abc=data; 
	s=abc; 
	CloseHandle(file); 
//s的内容00755500 15/12/30,10:21 01 中国aa11 
//MessageB),MB_OK); 
	return s; 
 
} 
 
void CMsgDlg::OnLast() //最后一页 
{ 
	// TODO: Add your control notification handler code here 
CString g; 
g.Format(_T("%s%d"),g,signjjj); 
//MessageBox(g,TEXT("OnLast()开始时的 signjjj"),MB_OK); 
	CString s1=openfile(); 
 
	int a=0; 
	int Msgnum=0; 
	int Len2=0; 
	while((a=s1.Find(TEXT("\r\n"),a)) != -1)//当有短信存在时每找到一次 \r\n Msgnum++ 
	{	 
		Msgnum++; 
		a+=2; 
	} 
 
 
//	m_int=Msgnum; 
	OnLastpage=Msgnum/9; 
	int result=Msgnum%9; 
	if(result!=0) 
	{ 
		OnLastpage+=1; 
	} 
	else if(result==0) 
	{ 
		OnLastpage=OnLastpage; 
	} 
 
//	m_new=result; 
 
	if(result!=0)//不是整页的情况 
	{ 
		for(int k=0;k<(Msgnum-result);k++)//11-2=9表示前面共有几条短信 
		{	 
			if(s1.Find(TEXT("\r\n"),Len2) != -1) 
			{ 
				Len2=s1.Find(TEXT("\r\n"),Len2); 
				Len2+=2; 
			} 
		} 
		int Len3=s1.GetLength()-Len2; 
		UpdateData(0); 
		m_ListCtrl.DeleteAllItems(); 
		//nextpasi=1; 
 
		pagesign=2; 
	CString ggg; 
	ggg.Format(_T("%s%d"),ggg,Msgnum); 
	//MessageBox(ggg,TEXT("Msgnum"),MB_OK); 
		Msgnumnext=Msgnum; 
		DisplayEveryList(s1.Right(Len3)); 
	} 
	else//最后一页是整页短信 
	{ 
		for(int k=0;k<(Msgnum-9);k++)//Msgnum是短信总数目,Msgnum-9表示前面所有的整页数 
		{	 
			if(s1.Find(TEXT("\r\n"),Len2) != -1) 
			{ 
				 Len2=s1.Find(TEXT("\r\n"),Len2); 
				 Len2+=2; 
			} 
		} 
		int Len3=s1.GetLength()-Len2; 
		UpdateData(0); 
		m_ListCtrl.DeleteAllItems(); 
		//nextpasi=1; 
		pagesign=2; 
		Msgnumnext=Msgnum; 
		DisplayEveryList(s1.Right(Len3)); 
	} 
CString gg; 
gg.Format(_T("%s%d"),gg,signjjj); 
//MessageBox(gg,TEXT("OnLast()结束时的 signjjj"),MB_OK); 
		 
} 
 
void CMsgDlg::OnFirst() //第一页 
{ 
	// TODO: Add your control notification handler code here 
	 
	m_ListCtrl.DeleteAllItems(); 
	//signjjj=0; 
	pagesign=3; 
	DisplayListItems(); 
	 
	//DisplayListItems(); 
} 
 
 
 
void CMsgDlg::OnPrevious() //向前 
{ 
CString ggg; 
ggg.Format(_T("%s%d"),ggg,signjjj); 
//MessageBox(ggg,TEXT("OnPrevious signjjj"),MB_OK);//如果在第三页显示2 
	 
	CString s2=openfile(); 
	int a=0; 
	int Msgnum=0; 
	int Len2=0; 
	while((a=s2.Find(TEXT("\r\n"),a)) != -1) 
	{	 
		Msgnum++;//得出短信的总数目 
		a+=2; 
	} 
 
	int page=Msgnum/9; 
	int pageodd=Msgnum%9; 
 
	if(page==0||Msgnum==9||pagesign==3)//只有也无动作 
	{ 
		pagesign=1; 
	} 
	else if(signjjj==1)//如果的付值 
	{ 
		pagesign=1; 
	} 
	else//不 
	{ 
		pagesign=1; 
		int didail=(signjjj-2)*9; 
		for(int k=0;k1000 
	ReadData(); 
	MessageBox(m_strRXData,TEXT("m_strRXData_FIRST"),MB_OK); 
 
} 
 
void CMsgDlg::OnReset()  
{ 
//MessageBox(TEXT("ENTER OnShiyan"),TEXT("content"),MB_OK); 
	TCHAR CPMSA[13]=TEXT("at+cpms=sm\r\n");//定义的是UNICODE(16 bit) 字符 
	SendAtCommand(CPMSA,13); 
	Sleep(500);//4000->200 
	TCHAR CMGDA[12]=TEXT("at+cmgd=1\r\n"); 
	SendAtCommand(CMGDA,12); 
	Sleep(500); 
 
	TCHAR CPMSB[13]=TEXT("at+cpms=sm\r\n");//定义符 
	SendAtCommand(CPMSB,13); 
	Sleep(500); 
	TCHAR CMGDB[12]=TEXT("at+cmgd=2\r\n");//200ms第二条没有删掉 
	SendAtCommand(CMGDB,12); 
	Sleep(500); 
 
	TCHAR CPMSC[13]=TEXT("at+cpms=sm\r\n");//定义的字符 
	SendAtCommand(CPMSC,13); 
	Sleep(500); 
	TCHAR CMGDC[12]=TEXT("at+cmgd=3\r\n");//200ms第二条没有删掉 
	SendAtCommand(CMGDC,12); 
	Sleep(500); 
 
	TCHAR CPMSD[13]=TEXT("at+cpms=sm\r\n");//定义的是UNICODE(16 bit) 字符 
	SendAtCommand(CPMSD,13); 
	Sleep(500); 
	TCHAR CMGDD[12]=TEXT("at+cmgd=4\r\n");//200ms第二条没有删掉 
	SendAtCommand(CMGDD,12); 
	Sleep(500); 
 
//MessageBox(TEXT("删除结束"),TEXT("content"),MB_OK); 
} 
 
 
 
void CMsgDlg::OnShiyan()  
{ 
	// TODO: Add your control notification handler code here 
	CString filetext=openfile(); 
MessageBox(filetext,TEXT("OnShiyan()  filetext"),MB_OK); 
	//long b=filetext.Find(TEXT("\r\n"),playposfin);//找到下一个结尾标志 
	CString nextfile=filetext.Mid(119,119); 
MessageBox(nextfile,TEXT("OnShiyan() nextfile"),MB_OK); 
} 
 
void CMsgDlg::OnButton10()  
{ 
	// TODO: Add your control notification handler code here 
		CString filetext=openfile(); 
MessageBox(filetext,TEXT("OnShiyan()  filetext"),MB_OK); 
	//long b=filetext.Find(TEXT("\r\n"),playposfin);//找到下一个结尾标志 
	CString first=filetext.Left(119); 
MessageBox(first,TEXT("OnShiyan() first"),MB_OK); 
	CString second=filetext.Mid(119,119); 
MessageBox(second,TEXT("OnShiyan() second"),MB_OK); 
	CString third=filetext.Mid(238,119); 
MessageBox(third,TEXT("OnShiyan() third"),MB_OK); 
	 
} 
 
 
 
void CMsgDlg::OnSend()  
{ 
	// TODO: Add your control notification handler code here 
 
 
}