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

📄 msgdlg.cpp

📁 基于WINCE
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// 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);

⌨️ 快捷键说明

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