?? 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);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -