TreeCtrlEx.cpp
上传用户:yffx2008
上传日期:2014-10-12
资源大小:12414k
文件大小:10k
源码类别:

交通/航空行业

开发平台:

Visual C++

  1. // TreeCtrlEx.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "GpsSC.h"
  5. #include "TreeCtrlEx.h"
  6. #include "MonitorDlg.h"
  7. #include "ClientinfoSet.h"
  8. #include "MainFrm.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CTreeCtrlEx
  16. CTreeCtrlEx::CTreeCtrlEx()
  17. {
  18. m_PopMenu.LoadMenu(IDR_POP_MENU);
  19. m_strCarPhone.Empty(); //车载电话
  20. m_strPassWord.Empty();
  21. m_hTreeItem = NULL;
  22. }
  23. CTreeCtrlEx::~CTreeCtrlEx()
  24. {
  25. m_hTreeItem = NULL;
  26. }
  27. BEGIN_MESSAGE_MAP(CTreeCtrlEx, CTreeCtrl)
  28. //{{AFX_MSG_MAP(CTreeCtrlEx)
  29. ON_WM_RBUTTONDOWN()
  30. ON_COMMAND(ID_POP_AUTOMONITOR, OnPopAutomonitor)
  31. ON_COMMAND(ID_POP_GETHELP, OnPopGethelp)
  32. ON_COMMAND(ID_POP_GETVEHICLEPOSITION, OnPopGetvehicleposition)
  33. ON_COMMAND(ID_POP_OPENLOCK, OnPopOpenlock)
  34. ON_COMMAND(ID_POP_SENDINFOTOGROUP, OnPopSendinfotogroup)
  35. ON_COMMAND(ID_POP_SENDNORMALSM, OnPopSendnormalsm)
  36. ON_COMMAND(ID_POP_SETLOCK, OnPopSetlock)
  37. ON_COMMAND(ID_POP_SHUTOIL, OnPopShutoil)
  38. ON_UPDATE_COMMAND_UI(ID_POP_SHUTOIL, OnUpdatePopShutoil)
  39. ON_UPDATE_COMMAND_UI(ID_POP_SETLOCK, OnUpdatePopSetlock)
  40. ON_UPDATE_COMMAND_UI(ID_POP_SENDNORMALSM, OnUpdatePopSendnormalsm)
  41. ON_UPDATE_COMMAND_UI(ID_POP_SENDINFOTOGROUP, OnUpdatePopSendinfotogroup)
  42. ON_UPDATE_COMMAND_UI(ID_POP_OPENLOCK, OnUpdatePopOpenlock)
  43. ON_UPDATE_COMMAND_UI(ID_POP_GETVEHICLEPOSITION, OnUpdatePopGetvehicleposition)
  44. ON_UPDATE_COMMAND_UI(ID_POP_GETHELP, OnUpdatePopGethelp)
  45. ON_UPDATE_COMMAND_UI(ID_POP_AUTOMONITOR, OnUpdatePopAutomonitor)
  46. ON_WM_LBUTTONDOWN()
  47. ON_COMMAND(ID_POP_CANCELAUTOMONITOR, OnPopCancelautomonitor)
  48. ON_UPDATE_COMMAND_UI(ID_POP_CANCELAUTOMONITOR, OnUpdatePopCancelautomonitor)
  49. ON_COMMAND(ID_POP_SET_CURR_MONITOR_CAR, OnPopSetCurrMonitorCar)
  50. ON_UPDATE_COMMAND_UI(ID_POP_SET_CURR_MONITOR_CAR, OnUpdatePopSetCurrMonitorCar)
  51. ON_COMMAND(ID_POP_CANCEL_CURR_MONITOR_CAR, OnPopCancelCurrMonitorCar)
  52. ON_UPDATE_COMMAND_UI(ID_POP_CANCEL_CURR_MONITOR_CAR, OnUpdatePopCancelCurrMonitorCar)
  53. ON_WM_INITMENUPOPUP()
  54. //}}AFX_MSG_MAP
  55. END_MESSAGE_MAP()
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CTreeCtrlEx message handlers
  58. void CTreeCtrlEx::OnRButtonDown(UINT nFlags, CPoint point) 
  59. {
  60. // TODO: Add your message handler code here and/or call default
  61. CTreeCtrl::OnRButtonDown(nFlags, point);
  62. CRect lpRect;
  63. HTREEITEM m_hCurrTree;
  64. m_hCurrTree = HitTest(point);
  65. if(m_hCurrTree == NULL) {
  66. return;
  67. }
  68. m_hTreeItem = m_hCurrTree;
  69. m_strGetItemText=GetItemText(m_hCurrTree);
  70. m_hCurrTree=NULL;
  71. if(m_strGetItemText.Find("监控")!=-1)
  72. m_strGetItemText=m_strGetItemText.Left(m_strGetItemText.GetLength()-10);
  73. GetWindowRect(&lpRect);
  74. m_pMenu = m_PopMenu.GetSubMenu(0);
  75. m_pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
  76. point.x + lpRect.left,
  77. point.y + lpRect.top, this,NULL);
  78. }
  79. bool CTreeCtrlEx::Init(CProcSM *pProcSM)
  80. {
  81. if(pProcSM == NULL) return false;
  82. m_pProcSM = pProcSM;
  83. return true;
  84. }
  85. void CTreeCtrlEx::OnPopAutomonitor() 
  86. {
  87. // TODO: Add your command handler code here
  88. m_pProcSM->AutoMonitor(m_strGetItemText);
  89. }
  90. void CTreeCtrlEx::OnUpdatePopAutomonitor(CCmdUI* pCmdUI) 
  91. {
  92. // TODO: Add your command update UI handler code here
  93. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  94. }
  95. void CTreeCtrlEx::OnPopGethelp() 
  96. {
  97. // TODO: Add your command handler code here
  98. m_pProcSM->GetHelp();
  99. }
  100. void CTreeCtrlEx::OnUpdatePopGethelp(CCmdUI* pCmdUI) 
  101. {
  102. // TODO: Add your command update UI handler code here
  103. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  104. }
  105. void CTreeCtrlEx::OnPopGetvehicleposition() 
  106. {
  107. // TODO: Add your command handler code here
  108. m_pProcSM->OnGetvehicleposition(m_strGetItemText);
  109. }
  110. void CTreeCtrlEx::OnUpdatePopGetvehicleposition(CCmdUI* pCmdUI) 
  111. {
  112. // TODO: Add your command update UI handler code here
  113. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  114. }
  115. void CTreeCtrlEx::OnPopOpenlock() 
  116. {
  117. // TODO: Add your command handler code here
  118. m_pProcSM->OnOpenlock(m_strGetItemText);
  119. }
  120. void CTreeCtrlEx::OnUpdatePopOpenlock(CCmdUI* pCmdUI) 
  121. {
  122. // TODO: Add your command update UI handler code here
  123. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  124. }
  125. void CTreeCtrlEx::OnPopSendinfotogroup() 
  126. {
  127. // TODO: Add your command handler code here
  128. AfxMessageBox("对不起! 此功能只提供给正式用户!");
  129. }
  130. void CTreeCtrlEx::OnUpdatePopSendinfotogroup(CCmdUI* pCmdUI) 
  131. {
  132. // TODO: Add your command update UI handler code here
  133. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  134. }
  135. void CTreeCtrlEx::OnPopSendnormalsm() 
  136. {
  137. // TODO: Add your command handler code here
  138. AfxMessageBox("对不起! 此功能只提供给正式版用户!");
  139. }
  140. void CTreeCtrlEx::OnUpdatePopSendnormalsm(CCmdUI* pCmdUI) 
  141. {
  142. // TODO: Add your command update UI handler code here
  143. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  144. }
  145. void CTreeCtrlEx::OnPopSetlock() 
  146. {
  147. // TODO: Add your command handler code here
  148. m_pProcSM->OnSetlock(m_strGetItemText);
  149. }
  150. void CTreeCtrlEx::OnUpdatePopSetlock(CCmdUI* pCmdUI) 
  151. {
  152. // TODO: Add your command update UI handler code here
  153. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  154. }
  155. void CTreeCtrlEx::OnPopShutoil() 
  156. {
  157. // TODO: Add your command handler code here
  158. m_pProcSM->OnShutoil(m_strGetItemText);
  159. }
  160. void CTreeCtrlEx::OnUpdatePopShutoil(CCmdUI* pCmdUI) 
  161. {
  162. // TODO: Add your command update UI handler code here
  163. pCmdUI->Enable(m_pProcSM->m_bSysTemInit);
  164. }
  165. void CTreeCtrlEx::OnLButtonDown(UINT nFlags, CPoint point) 
  166. {
  167. // TODO: Add your message handler code here and/or call default
  168. CTreeCtrl::OnLButtonDown(nFlags, point);
  169. HTREEITEM m_hCurrTree;
  170. m_hCurrTree = HitTest(point);
  171. if(m_hCurrTree == NULL) {
  172. return;
  173. }
  174. str_GetTreeItemText = GetItemText(m_hCurrTree);
  175. m_hCurrTree = NULL;
  176. }
  177. bool CTreeCtrlEx::GetCarPhoneAndPassword()
  178. {
  179. CClientinfoSet cSet;
  180. if(!str_GetTreeItemText.IsEmpty()) {
  181. cSet.FindCarPswAndNO(str_GetTreeItemText,m_strCarPhone,m_strPassWord);
  182. return true;
  183. }
  184. return false;
  185. }
  186. void CTreeCtrlEx::OnPopCancelautomonitor() 
  187. {
  188. // TODO: Add your command handler code here
  189. m_pProcSM->CanceLautoMonitor(m_strGetItemText);
  190. if(m_pProcSM->CheckMonitorCar())
  191. {
  192. CMainFrame*  mainfrm=(CMainFrame*)AfxGetApp()->m_pMainWnd;
  193. bool bControl = false;
  194. mainfrm->EditTreeItem(m_hTreeItem,bControl);
  195. }
  196. }
  197. void CTreeCtrlEx::OnUpdatePopCancelautomonitor(CCmdUI* pCmdUI) 
  198. {
  199. // TODO: Add your command update UI handler code here
  200. BOOL MenuEnable = m_pProcSM->m_bSysTemInit;
  201. pCmdUI->Enable(MenuEnable);
  202. }
  203. void CTreeCtrlEx::OnPopSetCurrMonitorCar()
  204. {
  205. // TODO: Add your command handler code here
  206. CClientinfoSet cSet;
  207. CString VehicleID,VehicleTel;
  208. CMainFrame*  mainfrm=(CMainFrame*)AfxGetApp()->m_pMainWnd;
  209. cSet.FindCarNumberAndPhone(m_strGetItemText,VehicleID,VehicleTel);
  210. m_pProcSM->SetMonitorCar(VehicleID);
  211. if(!m_pProcSM->CheckMonitorCar())
  212. {
  213. mainfrm->EditTreeItem(m_hTreeItem);
  214. }
  215. }
  216. void CTreeCtrlEx::OnUpdatePopSetCurrMonitorCar(CCmdUI* pCmdUI)
  217. {
  218. // TODO: Add your command update UI handler code here
  219. BOOL MenuEnable = m_pProcSM->m_bSysTemInit;
  220. pCmdUI->Enable(MenuEnable);
  221. }
  222. void CTreeCtrlEx::OnPopCancelCurrMonitorCar() 
  223. {
  224. // TODO: Add your command handler code here
  225. if(m_pProcSM->CheckMonitorCar())
  226. {
  227. CMainFrame*  mainfrm=(CMainFrame*)AfxGetApp()->m_pMainWnd;
  228. bool bControl = false;
  229. mainfrm->EditTreeItem(m_hTreeItem,bControl);
  230. }
  231. }
  232. void CTreeCtrlEx::OnUpdatePopCancelCurrMonitorCar(CCmdUI* pCmdUI)
  233. {
  234. // TODO: Add your command update UI handler code here
  235. BOOL MenuEnable = m_pProcSM->m_bSysTemInit;
  236. pCmdUI->Enable(MenuEnable);
  237. }
  238. void CTreeCtrlEx::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu) 
  239. {
  240. CTreeCtrl::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
  241. // TODO: Add your message handler code here
  242. BOOL MenuEnable = m_pProcSM->m_bSysTemInit;
  243. CMainFrame *pFrame = (CMainFrame *)AfxGetApp()->m_pMainWnd;
  244. if(!bSysMenu)
  245. {
  246. if (MenuEnable)
  247. {
  248. pPopupMenu->EnableMenuItem(0, MF_BYPOSITION | MF_ENABLED);
  249. pPopupMenu->EnableMenuItem(1, MF_BYPOSITION | MF_ENABLED);
  250. pPopupMenu->EnableMenuItem(2, MF_BYPOSITION | MF_ENABLED);
  251. pPopupMenu->EnableMenuItem(3, MF_BYPOSITION | MF_ENABLED);
  252. pPopupMenu->EnableMenuItem(4, MF_BYPOSITION | MF_ENABLED);
  253. pPopupMenu->EnableMenuItem(5, MF_BYPOSITION | MF_ENABLED);
  254. pPopupMenu->EnableMenuItem(6, MF_BYPOSITION | MF_ENABLED);
  255. pPopupMenu->EnableMenuItem(7, MF_BYPOSITION | MF_ENABLED);
  256. pPopupMenu->EnableMenuItem(8, MF_BYPOSITION | MF_ENABLED);
  257. pPopupMenu->EnableMenuItem(6, MF_BYPOSITION | MF_ENABLED);
  258. pPopupMenu->EnableMenuItem(10, MF_BYPOSITION | MF_ENABLED);
  259. pPopupMenu->EnableMenuItem(11, MF_BYPOSITION | MF_ENABLED);
  260. pPopupMenu->EnableMenuItem(12, MF_BYPOSITION | MF_ENABLED);
  261. pPopupMenu->EnableMenuItem(13, MF_BYPOSITION | MF_ENABLED);
  262. pPopupMenu->EnableMenuItem(14, MF_BYPOSITION | MF_ENABLED);
  263. pPopupMenu->EnableMenuItem(15, MF_BYPOSITION | MF_ENABLED);
  264. pPopupMenu->EnableMenuItem(16, MF_BYPOSITION | MF_ENABLED);
  265. pPopupMenu->EnableMenuItem(17, MF_BYPOSITION | MF_ENABLED);
  266. }
  267. else
  268. {
  269. pPopupMenu->EnableMenuItem(0, MF_BYPOSITION | MF_GRAYED);
  270. pPopupMenu->EnableMenuItem(1, MF_BYPOSITION | MF_GRAYED);
  271. pPopupMenu->EnableMenuItem(2, MF_BYPOSITION | MF_GRAYED);
  272. pPopupMenu->EnableMenuItem(3, MF_BYPOSITION | MF_GRAYED);
  273. pPopupMenu->EnableMenuItem(4, MF_BYPOSITION | MF_GRAYED);
  274. pPopupMenu->EnableMenuItem(5, MF_BYPOSITION | MF_GRAYED);
  275. pPopupMenu->EnableMenuItem(6, MF_BYPOSITION | MF_GRAYED);
  276. pPopupMenu->EnableMenuItem(7, MF_BYPOSITION | MF_GRAYED);
  277. pPopupMenu->EnableMenuItem(8, MF_BYPOSITION | MF_GRAYED);
  278. pPopupMenu->EnableMenuItem(6, MF_BYPOSITION | MF_GRAYED);
  279. pPopupMenu->EnableMenuItem(10, MF_BYPOSITION | MF_GRAYED);
  280. pPopupMenu->EnableMenuItem(11, MF_BYPOSITION | MF_GRAYED);
  281. pPopupMenu->EnableMenuItem(12, MF_BYPOSITION | MF_GRAYED);
  282. pPopupMenu->EnableMenuItem(13, MF_BYPOSITION | MF_GRAYED);
  283. pPopupMenu->EnableMenuItem(14, MF_BYPOSITION | MF_GRAYED);
  284. pPopupMenu->EnableMenuItem(15, MF_BYPOSITION | MF_GRAYED);
  285. pPopupMenu->EnableMenuItem(16, MF_BYPOSITION | MF_GRAYED);
  286. pPopupMenu->EnableMenuItem(17, MF_BYPOSITION | MF_GRAYED);
  287. }
  288. }
  289. }