📄 gsmsmsdlg.cpp
字号:
TimeOut.ReadTotalTimeoutMultiplier=0;
TimeOut.WriteTotalTimeoutMultiplier=0;
TimeOut.WriteTotalTimeoutConstant=(1/CommDCB.BaudRate)*256;
if(CommDCB.BaudRate == 300)
TimeOut.ReadTotalTimeoutConstant=2500;
else
TimeOut.ReadTotalTimeoutConstant=2000;
SetCommTimeouts(hCom, &TimeOut);
//刷新串口
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
return TRUE;
}
void CGsmSmsDlg::GetFjPath()
{
char SysPath[128];
int i;
SysPath[0]=0;
GetPrivateProfileString("SysPath","SysPath",SysPath,SysPath,sizeof(SysPath),"c:\\FJ95NT.ini");
if (SysPath[0]==0) {
::GetModuleFileName(AfxGetInstanceHandle(),SysPath,sizeof(SysPath));
i=lstrlen(SysPath);
while(TRUE) { if (SysPath[i]==92 || i==0 ) break; i--; }
if (i) i--;
while(TRUE) { if (SysPath[i]==92 || i==0 ) break; i--; }
SysPath[i]=0;
}
FjSysPath=SysPath;
CString s;
s=FjSysPath+"\\init\\FJ95NT.ini";
BaseNum=GetPrivateProfileInt("BaseSet","BaseNum",0,s);
InitFile = FjSysPath+"\\init\\GsmSms.ini";
}
BOOL CGsmSmsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 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
m_list_sms.SetExtendedStyle (LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
InitList();
TimeID_1 = SetTimer(1,500,NULL);
m_work.LoadBitmap(IDB_BITMAP_WORK);
m_idle.LoadBitmap(IDB_BITMAP_IDLE);
BITMAP bb;
m_work.GetObject(sizeof(bb),&bb);
WorkW=bb.bmWidth;
WorkH=bb.bmHeight;
m_idle.GetObject(sizeof(bb),&bb);
IdleW=bb.bmWidth;
IdleH=bb.bmHeight;
return TRUE; // return TRUE unless you set the focus to a control
}
void CGsmSmsDlg::OnTimer(UINT nIDEvent)
{
/* CClientDC cdc(this);
CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
RECT rect;
GetClientRect(&rect);
*/
if (nIDEvent==TimeID_1)
{
if(Repaint)
{
if(RepaintList())
{
/* MemDC.SelectObject(&m_work);
cdc.StretchBlt(rect.right-10-WorkW,rect.bottom-10-WorkH,
WorkW,WorkH,&MemDC,0,0,WorkW,WorkH,SRCCOPY);
*/ }
Repaint = FALSE;
}
else
{
/* MemDC.SelectObject(&m_idle);
cdc.StretchBlt(rect.right-10-IdleW,rect.bottom-10-IdleH,
IdleW,IdleH,&MemDC,0,0,IdleW,IdleH,SRCCOPY);
*/ }
}
CDialog::OnTimer(nIDEvent);
}
void CGsmSmsDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CGsmSmsDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
/* BITMAP bb;
m_idle.GetObject(sizeof(bb),&bb);
int ButtonW=bb.bmWidth;
int ButtonH=bb.bmHeight;
CClientDC cdc(this);
CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(&m_idle);
RECT rect;
GetClientRect(&rect);
cdc.StretchBlt(rect.right-10-ButtonW,rect.bottom-10-ButtonH,
ButtonW,ButtonH,&MemDC,0,0,ButtonW,ButtonH,SRCCOPY);
*/
CDialog::OnPaint();
}
}
void CGsmSmsDlg::ClrList()
{
for (int i=0;i<FJD_MSG_BUF_MAX;i++)
{
m_display_list[i].m_person.name.Empty();
m_display_list[i].m_person.number.Empty();
m_display_list[i].m_date.Empty();
m_display_list[i].m_time.Empty();
m_display_list[i].SendedString.Empty();
}
}
BOOL CGsmSmsDlg::RepaintList()
{
m_list_sms.DeleteAllItems();
CString s;
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT;
for(int i=0;i<FJD_MSG_BUF_MAX-GetListPtr;i++)//+1
{
lvItem.iItem = i;
lvItem.iSubItem = 0;
s.Format("%d",i);
lvItem.pszText = s.LockBuffer();
lvItem.cchTextMax = s.GetLength();
m_list_sms.InsertItem(&lvItem);
s.UnlockBuffer();
}
for(i=0;i<FJD_MSG_BUF_MAX-GetListPtr;i++)//+1
{
lvItem.iItem = i;
lvItem.iSubItem = 1;
s = m_display_list[GetListPtr+i].m_person.name;
lvItem.pszText = s.LockBuffer();
lvItem.cchTextMax = s.GetLength();
m_list_sms.SetItem(&lvItem);
s.UnlockBuffer();
lvItem.iSubItem = 2;
s = m_display_list[GetListPtr+i].m_person.number;
lvItem.pszText = s.LockBuffer();
lvItem.cchTextMax = s.GetLength();
m_list_sms.SetItem(&lvItem);
s.UnlockBuffer();
lvItem.iSubItem = 3;
s = m_display_list[GetListPtr+i].m_date;
lvItem.pszText = s.LockBuffer();
lvItem.cchTextMax = s.GetLength();
m_list_sms.SetItem(&lvItem);
s.UnlockBuffer();
lvItem.iSubItem = 4;
s = m_display_list[GetListPtr+i].m_time;
lvItem.pszText = s.LockBuffer();
lvItem.cchTextMax = s.GetLength();
m_list_sms.SetItem(&lvItem);
s.UnlockBuffer();
lvItem.iSubItem = 5;
s = m_display_list[GetListPtr+i].SendedString;
lvItem.pszText = s.LockBuffer();
lvItem.cchTextMax = s.GetLength();
m_list_sms.SetItem(&lvItem);
s.UnlockBuffer();
// Invalidate(TRUE);
}
return TRUE;
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CGsmSmsDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CGsmSmsDlg::OnSetCom()
{
int Port;
int Bate;
char asc[64];
CDlgsetcom m_dlgsetcom;
Port = GetPrivateProfileInt("INIT","port",2,InitFile);
if(!Port) Port = 2;
Bate = GetPrivateProfileInt("INIT","bate",9600,InitFile);
GetPrivateProfileString("INIT","callcenter","",asc,sizeof(asc),InitFile);
int i=0;
for(i=0;i<7;i++){
if(Bate== Port_Bate[i])
break;
}
m_dlgsetcom.m_InitPort = Port-1;
m_dlgsetcom.m_InitBate = i;
m_dlgsetcom.m_center_number = asc;
if(m_dlgsetcom.DoModal()==IDOK){
sprintf(asc,"%d",m_dlgsetcom.m_InitPort+1);
WritePrivateProfileString("INIT","port",asc,InitFile);
sprintf(asc,"%d",Port_Bate[m_dlgsetcom.m_InitBate]);
WritePrivateProfileString("INIT","bate",asc,InitFile);
WritePrivateProfileString("INIT","callcenter",m_dlgsetcom.m_center_number,InitFile);
InitPort(m_dlgsetcom.m_InitPort,Port_Bate[m_dlgsetcom.m_InitBate]);
}
}
void CGsmSmsDlg::OnTelNum()
{
CDlgTel m_DlgTel;
m_DlgTel.DoModal();
}
void CGsmSmsDlg::OnCancel()
{
CDialog::OnCancel();
}
void CGsmSmsDlg::OnBTest()
{
CString code;
CString name;
int count = 0;
CString sendstring=_T("你好!");
if(hCom != INVALID_HANDLE_VALUE){
for(int count = 0;count<m_person_max;count++)
{
code = m_person_info[count].number;
name = m_person_info[count].name;
WriteOut(name,code,sendstring);
}
}
else{
AfxMessageBox("串行口初始化失败!");
}
}
void CGsmSmsDlg::OnBHis()
{
/*CString Filename;
CString tempstring;
Filename = FjSysPath;
Filename +="\\bin\\Smshis.txt";
HINSTANCE temp = ShellExecute(NULL,NULL,LPCTSTR(Filename),NULL,NULL,SW_SHOW);
*/
CDlghis m_his;
m_his.DoModal();
}
void CGsmSmsDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
}
int CGsmSmsDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
if ( ! m_classTrayNotifyIcon . Create ( this, IDR_POPUP,
"FJNT - GSM短信服务", AfxGetApp () -> LoadIcon ( IDR_MAINFRAME ), WM_TRAYNOTIFY ) )
{
AfxMessageBox ( "Failure Creating Tray Icon", MB_ICONSTOP );
return -1;
}
return 0;
}
void CGsmSmsDlg::OnShowmain()
{
ShowWindow ( SW_SHOW );
}
LRESULT CGsmSmsDlg::OnTrayNotify ( WPARAM wParam, LPARAM lParam )
{
return m_classTrayNotifyIcon . OnTrayNotification ( wParam, lParam );
}
/*
void CGsmSmsDlg::OnHide()
{
// TODO: Add your control notification handler code here
ShowWindow ( SW_HIDE );
}
*/
void CGsmSmsDlg::OnExit()
{
// TODO: Add your command handler code here
ShowWindow ( SW_HIDE );
}
BOOL CGsmSmsDlg::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::PreCreateWindow(cs);
}
void CGsmSmsDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
bShow = FALSE;
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
}
BOOL CGsmSmsDlg::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::Create(IDD, pParentWnd);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -