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

📄 plmaindlg.cpp

📁 代码使用eVC4.0调试通过
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// 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 + -