📄 plmaindlg.cpp
字号:
// PlMainDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PlMain.h"
#include "PlMainDlg.h"
#include "GHeader.h"
#include <time.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CPlMainApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CPlMainDlg dialog
CPlMainDlg::CPlMainDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPlMainDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPlMainDlg)
m_scrinfo = _T("");
m_scrspot = _T("");
m_scrtime = _T("");
m_scrgps = _T("");
m_scrgsm = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
#ifndef WINCE
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
#endif
}
void CPlMainDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPlMainDlg)
DDX_Control(pDX, IDC_SCRTIME, m_Notify);
DDX_Control(pDX, IDC_LST, m_lst);
DDX_Control(pDX, IDC_HELPQRY, m_help);
DDX_Control(pDX, IDC_SPOT, m_spot);
DDX_Control(pDX, IDC_SETUP, m_setup);
DDX_Control(pDX, IDC_INFO, m_info);
DDX_Control(pDX, IDC_ALARM, m_alarm);
DDX_Text(pDX, IDC_SCRINFO, m_scrinfo);
DDX_Text(pDX, IDC_SCRSPOT, m_scrspot);
DDX_Text(pDX, IDC_SCRTIME, m_scrtime);
DDX_Text(pDX, IDC_SCRGPS, m_scrgps);
DDX_Text(pDX, IDC_SCRGSM, m_scrgsm);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPlMainDlg, CDialog)
//{{AFX_MSG_MAP(CPlMainDlg)
ON_WM_TIMER()
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_SPOT, OnSpot)
ON_BN_CLICKED(IDC_HELPQRY, OnHelpqry)
ON_BN_CLICKED(IDC_ALARM, OnAlarm)
ON_BN_CLICKED(IDC_INFO, OnInfo)
ON_BN_CLICKED(IDC_SETUP, OnSetup)
ON_NOTIFY(NM_CLICK, IDC_LST, OnClickLst)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPlMainDlg message handlers
BOOL CPlMainDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_Local=-1;//选定需要执行的调度位置
// 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
m_alarm.SetWindowText(_T("报警"));
m_help.SetWindowText (_T("求助"));
m_info.SetWindowText (_T("通知"));
m_setup.SetWindowText (_T("设置"));
m_spot.SetWindowText (_T("调度"));
//汇总列表项
//设置列表头和显示属性:行选定,热键跟随,具有网格
m_lst.SetExtendedStyle (m_lst.GetExtendedStyle () | LVS_EX_FULLROWSELECT | LVS_EX_TRACKSELECT );//| LVS_EX_GRIDLINES );
m_lst.ShowWindow (SW_HIDE);
m_lst.SetBkColor (RGB(192,192,192));
m_lst.SetTextColor(RGB(0,0,0));
m_lst.SetTextBkColor(RGB(192,192,192));
//时间
m_Today=new tm;
memset(m_Today,0,sizeof(tm));
m_Today->tm_year = 105;
m_Today->tm_mon = 9 ;
m_Today->tm_mday = 1;
m_Today->tm_hour = 0;
m_Today->tm_min = 0;
m_Today->tm_sec = 0;
m_scrtime.Format(_T("%d年%d月%d日 %d时%d分%d秒"),m_Today->tm_yday + 1900,m_Today->tm_mon,
m_Today->tm_mday,m_Today->tm_hour,m_Today->tm_min,m_Today->tm_sec);
//设置
m_scrspot = "查勘:N(00)P(00)F(00)";
m_scrinfo = "通知:00";
m_scrgps = "GPS:没定位";
m_scrgsm = "GPRS:无";
UpdateData(FALSE);
m_horologe = SetTimer(TMR_HOROLOGE,1000,NULL);
return TRUE; // return TRUE unless you set the focus to a control
}
BOOL CPlMainDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(WM_KEYDOWN == pMsg->message)
{
switch((int) pMsg->wParam)
{
case VK_LEFT://左箭键
case VK_RIGHT://右箭键
case VK_F6://功能键,相当于PC键盘的F6
pMsg->wParam = VK_TAB;
break;
case VK_DOWN://向下箭键
if (!m_lst.IsWindowVisible ())
{
m_lst.ShowWindow (SW_SHOWNORMAL);
pMsg->wParam = VK_RETURN;
}
break;
case VK_F12://查询键,相当于PC键盘的F12
if (!m_lst.IsWindowVisible ())
{
return TRUE;
}
else
{
LstReadDataHandle();
}
break;
case VK_F11://设定键,相当于PC键盘的F11
if (m_lst.IsWindowVisible ())
{
//没有记录
if (m_lst.GetItemCount() < 1 )
{
m_lst.ShowWindow (SW_HIDE);
return TRUE;
}
//查询设定条目
POSITION pos = m_lst.GetFirstSelectedItemPosition();
if (pos == NULL)
return TRUE;
int nItem = m_lst.GetNextSelectedItem(pos);
wchar_t h2Bit[8] = _T(""),e2Bit[8] = _T(""),strData[256] = _T("");
wcscpy(strData,m_lst.GetItemText (nItem,0));
wcsncpy(h2Bit,strData,2);
h2Bit[2] = 0;
wcsncpy(e2Bit,strData + 2,2);
e2Bit[2] = 0;
wchar_t tip[256] = _T("");
wcscpy(strData,m_lst.GetItemText (nItem,2));
switch(_wtoi(h2Bit))
{
case 20://求助
wcscpy(tip,_T("您因为 "));
wcscat(tip,strData);
wcscat(tip,_T(" 向中心发送的求助成功"));
break;
case 30://报警
wcscpy(tip,strData);
wcscat(tip,_T(" 向中心发送成功"));
break;
default:
return TRUE;
}
USES_CONVERSION;
pe.EncodeSMSBody(W2A(tip),"13671168764",2);
MessageBox (tip,_T("\"神州通\"E@syGPS车辆监控管理系统"),MB_OK);
}
return TRUE;
case VK_ESCAPE://退出,相当于PC键盘的ESC
m_Local=-1;//取消位置
if (m_Notify.IsWindowVisible ())
{
m_Notify.ShowWindow (SW_HIDE);
return TRUE;
}
if (m_lst.IsWindowVisible ())
{
if (m_lst.GetItemCount() < 1 )
{
m_lst.ShowWindow (SW_HIDE);
return TRUE;
}
wchar_t h2Bit[8] = _T(""),e2Bit[8] = _T(""),strData[256] = _T("");
wcscpy(strData,m_lst.GetItemText (0,0));
wcsncpy(h2Bit,strData,2);
h2Bit[2] = 0;
wcsncpy(e2Bit,strData + 2,2);
e2Bit[2] = 0;
switch(_wtoi(h2Bit))
{
case 11://新调度
case 12://过程调度
case 13://完成调度
if (_wtoi(e2Bit) == 0)
m_lst.ShowWindow (SW_HIDE);
else
OnSpot();//调度汇总
break;
case 81://新调度详细列表
FillNewSpot();//新调度汇总
break;
case 82://过程调度
FillProcSpot ();
break;
case 83://完成调度
FillFinishSpot();
break;
default://通知
m_lst.ShowWindow (SW_HIDE);
break;
}
}
return TRUE;
case 0x31://按下1,表示出发去现场
case 0x32://按下2,表示到达现场
case 0x33://按下3,表示查勘完毕
case 0x34://按下4,表示太忙,不去
case 0x35://按下5,表示太远,不去
case 0x36://按下6,表示超权限,不去
case 0x37://按下7,表示车辆故障,不去
case 0x38://按下8,表示拒绝执行
if (m_lst.IsWindowVisible ())
{
if (ExcuteSpot((int) pMsg->wParam))
{
//过程调度
FillProcSpot ();
}
return TRUE;
}
break;
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CPlMainDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
int hi,vi;
CEdit* pBoxOne;
CRect rect;
switch(nIDEvent)
{
case TMR_HOROLOGE:
//取GPS时间
//更新
m_scrtime.Format(_T("%d年%02d月%02d日 %02d时%02d分%02d秒"),m_Today->tm_year + 1900,m_Today->tm_mon ,
m_Today->tm_mday,m_Today->tm_hour,m_Today->tm_min,m_Today->tm_sec);
m_Today->tm_sec += 1;
m_Today->tm_min += 1;
m_Today->tm_hour += 1;
UpdateData(FALSE);
//更新位置
if ( m_Today->tm_sec % 3 == 0 )
{
srand((unsigned) m_Today->tm_hour*3600 + m_Today->tm_min*60 + m_Today->tm_sec);
hi=rand()/200;
vi=rand()/180;
pBoxOne = (CEdit*) GetDlgItem (IDC_SCRTIME);
//可见时,更新位置
if (pBoxOne->IsWindowVisible ())
{
pBoxOne->GetRect (&rect);
pBoxOne->MoveWindow (hi,vi,190,30 );
this->RedrawWindow();
}
//OnHelpqry();
}
break;
default://非本地定时器
break;
}
CDialog::OnTimer(nIDEvent);
}
HBRUSH CPlMainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_STATIC )
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(0,0,0));
return b;
}
else if(nCtlColor == 4 )//CTLCOLOR_DLG
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(0,0,255));
HBRUSH b=CreateSolidBrush(RGB(0,0,255));
return b;
}
else if( nCtlColor == CTLCOLOR_EDIT)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,128));
pDC->SetBkColor(RGB(64,128,128));
HBRUSH b=CreateSolidBrush(RGB(64,128,128));
return b;
}
return hbr;
}
void CPlMainDlg::OnSpot()
{
//时间
CEdit* pBoxOne;
pBoxOne = (CEdit*) GetDlgItem (IDC_SCRTIME);
pBoxOne->ShowWindow (SW_HIDE);
KillTimer(TMR_HOROLOGE);
//更改列表头
m_lst.DeleteColumn (2);
m_lst.DeleteColumn (1);
m_lst.DeleteColumn (0);
m_lst.InsertColumn (0,_T(""),LVCFMT_LEFT,0);
m_lst.InsertColumn (1,_T("类别"),LVCFMT_LEFT,80);
m_lst.InsertColumn (2,_T("数量"),LVCFMT_CENTER,51);
m_lst.MoveWindow (1 ,22 ,131,195);
//删除列表内容
m_lst.DeleteAllItems();
//添加新调度
wchar_t tmp[16]=_T("");
CDiskDataHandle spot;
wcscpy(tmp,_T("1100"));
int i=m_lst.InsertItem (10,tmp);
m_lst.SetItemText(i,1,_T("新调度"));//类别
wsprintf(tmp,_T("%d"),spot.GetNewSpot());
m_lst.SetItemText(i,2,tmp);//数量
//添加执行调度
wcscpy(tmp,_T("1200"));
i=m_lst.InsertItem (11,tmp);
m_lst.SetItemText(i,1,_T("执行调度"));//动作
wsprintf(tmp,_T("%d"),spot.GetProcSpot ());
m_lst.SetItemText(i,2,tmp);//动作
//添加完成调度
wcscpy(tmp,_T("1300"));
i=m_lst.InsertItem (12,tmp);
m_lst.SetItemText(i,1,_T("完成调度"));
wsprintf(tmp,_T("%d"),spot.GetFinishSpot ());
m_lst.SetItemText(i,2,tmp);//动作
//显示
m_lst.ShowWindow (SW_SHOWNORMAL);
m_lst.SetFocus ();
}
void CPlMainDlg::OnHelpqry()
{
//时间
CEdit* pBoxOne;
pBoxOne = (CEdit*) GetDlgItem (IDC_SCRTIME);
pBoxOne->ShowWindow (SW_HIDE);
KillTimer (TMR_HOROLOGE);
//调整显示
m_lst.DeleteColumn (2);
m_lst.DeleteColumn (1);
m_lst.DeleteColumn (0);
m_lst.InsertColumn (0,_T(""),LVCFMT_LEFT,0);
m_lst.InsertColumn (1,_T("序号"),LVCFMT_CENTER,70);
m_lst.InsertColumn (2,_T("内容"),LVCFMT_CENTER,280);
m_lst.MoveWindow (1 ,22 ,368,195);
//显示内容
m_lst.DeleteAllItems ();
int index;
wchar_t strTmp[1024]=TEXT("\0");
//获取
CDiskDataHandle help;
int Max=0,I=0;
Max=help.GetHelp();
if(0 != Max)
{
for (I=0;I<Max;I++)
{
wsprintf(strTmp,_T("20%02d"),I+1);
index=m_lst.InsertItem (I+1,strTmp);
wsprintf(strTmp,_T("%d"),I+1);
m_lst.SetItemText(index,1,strTmp);//序号
m_lst.SetItemText(index,2,theApp.strText[I]);//求助内容
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -