Dlg_Moniter.cpp 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216
  1. // Dlg_Moniter.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_Door.h"
  5. #include "Dlg_Frame.h"
  6. #include "Dlg_Moniter.h"
  7. #include ".\dlg_moniter.h"
  8. #include "Global.h"
  9. #include "mdlProject.h"
  10. #include "Dlg_SetDoor.h"
  11. #include "DBConnection.h"
  12. #include "Dlg_CardProPerty.h"
  13. // CDlg_Moniter 对话框
  14. #define DOOR_W 40
  15. #define DOOR_H 60
  16. extern bool g_bIsWebCall;
  17. IMPLEMENT_DYNAMIC(CDlg_Moniter, CDialog)
  18. CDlg_Moniter::CDlg_Moniter(CWnd* pParent /*=NULL*/)
  19. : CDialog(CDlg_Moniter::IDD, pParent)
  20. {
  21. m_nNowIndex = 0;
  22. InitializeCriticalSection(&m_InSertRecordList);
  23. InitializeCriticalSection(&m_InSertDoorList);
  24. }
  25. CDlg_Moniter::~CDlg_Moniter()
  26. {
  27. DeleteCriticalSection( &m_InSertRecordList );
  28. DeleteCriticalSection( &m_InSertDoorList );
  29. }
  30. void CDlg_Moniter::DoDataExchange(CDataExchange* pDX)
  31. {
  32. CDialog::DoDataExchange(pDX);
  33. DDX_Control(pDX, IDC_LIST_INFO, m_List_Info);
  34. DDX_Control(pDX, IDC_LIST_DOOR, m_List_Door);
  35. }
  36. BEGIN_MESSAGE_MAP(CDlg_Moniter, CDialog)
  37. ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
  38. ON_WM_CTLCOLOR()
  39. ON_WM_ERASEBKGND()
  40. ON_COMMAND(ID_DOOR_OPENDOOR, OnDoorOpendoor)
  41. ON_COMMAND(ID_DOOR_JUSTTIME, OnDoorJusttime)
  42. ON_COMMAND(ID_DOOR_DOOROPENDELAYTIME, OnDoorDooropendelaytime)
  43. ON_NOTIFY(NM_RCLICK, IDC_LIST_DOOR, OnNMRclickListDoor)
  44. ON_COMMAND(ID_RECONNECT, OnReconnect)
  45. ON_COMMAND(ID_DOOR_CLOSEDOOR, OnDoorClosedoor)
  46. ON_COMMAND(ID_DOOR_RECONNECT, OnDoorReconnect)
  47. ON_COMMAND(ID_DOOR_SORT, OnDoorSort)
  48. ON_COMMAND(ID_DOOR_SORT2, OnDoorSort2)
  49. ON_COMMAND(ID_DOOR_SORT1, OnDoorSort1)
  50. ON_NOTIFY(NM_DBLCLK, IDC_LIST_INFO, OnNMDblclkListInfo)
  51. ON_COMMAND(ID_MENU_CLEARLIST, OnMenuClearlist)
  52. ON_NOTIFY(NM_RCLICK, IDC_LIST_INFO, OnNMRclickListInfo)
  53. END_MESSAGE_MAP()
  54. // CDlg_Moniter 消息处理程序
  55. BOOL CDlg_Moniter::OnInitDialog()
  56. {
  57. CDialog::OnInitDialog();
  58. // TODO: 在此添加额外的初始化
  59. InitList();
  60. m_imageList.Create(32,32,ILC_COLOR24,1,1);
  61. CBitmap Bitmap[6];
  62. Bitmap[0].LoadBitmap(IDB_DOOR_CLOSE);
  63. m_imageList.Add(&Bitmap[0],RGB(0,0,0));
  64. Bitmap[1].LoadBitmap(IDB_DOOR_OPEN);
  65. m_imageList.Add(&Bitmap[1],RGB(0,0,0));
  66. Bitmap[2].LoadBitmap(IDB_DOOR_DISCONNECT);
  67. m_imageList.Add(&Bitmap[2],RGB(0,0,0));
  68. Bitmap[3].LoadBitmap(IDB_DOOR_NOMONITER);
  69. m_imageList.Add(&Bitmap[3],RGB(0,0,0));
  70. m_List_Door.SetImageList(&m_imageList,LVSIL_NORMAL );
  71. return TRUE; // return TRUE unless you set the focus to a control
  72. // 异常: OCX 属性页应返回 FALSE
  73. }
  74. void CDlg_Moniter::SetPos( CRect rect )
  75. {
  76. CRect rc1;
  77. rc1.left = 0;
  78. rc1.right = rc1.left+rect.Width();
  79. rc1.top = 0;
  80. rc1.bottom = rc1.top+rect.Height()-4;
  81. this->MoveWindow( rc1 );
  82. CRect rc2;
  83. rc2.left = rc1.left + 10;
  84. rc2.right = rc1.right - 10;
  85. rc2.top = 10;
  86. rc2.bottom = rc1.top + 130;
  87. m_List_Door.MoveWindow( rc2 );
  88. CRect rc3;
  89. rc3.left = rc1.left + 10;
  90. rc3.right = rc1.right - 10;
  91. rc3.top = rc2.bottom+10;;
  92. rc3.bottom = rc1.bottom-0;
  93. m_List_Info.MoveWindow( rc3 );
  94. }
  95. int CDlg_Moniter::InitList(void)
  96. {
  97. //m_List_Info.InsertColumn( 0, "执行时刻" );
  98. //m_List_Info.InsertColumn( 1, "人员信息" );
  99. //m_List_Info.InsertColumn( 2, "描述" );
  100. //m_List_Info.InsertColumn( 3, "信息" );
  101. //m_List_Info.SetColumnWidth( 0, 120 );
  102. //m_List_Info.SetColumnWidth( 1, 200);
  103. //m_List_Info.SetColumnWidth( 2, 200);
  104. //m_List_Info.SetColumnWidth( 3, 650);
  105. //m_List_Info.SetExtendedStyle(m_List_Info.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
  106. //m_List_Rule.SetColColor(0,RGB(10,150,20)); //设置列背景色
  107. //m_List_Rule.SetColColor(2,RGB(30,100,90)); //设置列背景色
  108. //m_List_Rule.SetBkColor(RGB(50,10,10)); //设置背景色
  109. //m_List_Rule.SetItemColor(1,1,RGB(100,100,10)); //设置指定单元背景色
  110. //m_List_Rule.SetRowHeigt(25); //设置行高度
  111. //m_List_Rule.SetHeaderHeight(1.5); //设置头部高度
  112. //m_List_Rule.SetHeaderFontHW(16,0); //设置头部字体高度,和宽度,0表示缺省,自适应
  113. //m_List_Record.SetHeaderTextColor(RGB(0,0,0)); //设置头部字体颜色
  114. //m_List_Rule.SetTextColor(RGB(0,255,255)); //设置文本颜色
  115. m_List_Info.SetHeaderBKColor(213,222,242,8); //设置头部背景色
  116. ////m_List_Rule.SetFontHW(15,0); //设置字体高度,和宽度,0表示缺省宽度
  117. //m_List_Rule.SetColTextColor(2,RGB(255,255,100)); //设置列文本颜色
  118. //m_List_Rule.SetItemTextColor(3,1,RGB(255,0,0)); //设置单元格字体颜色
  119. m_List_Info.InsertColumn(0,g_strIndex,LVCFMT_LEFT,40);
  120. m_List_Info.InsertColumn(1,g_strHappenTime,LVCFMT_LEFT,130);
  121. m_List_Info.InsertColumn(2,g_strCardNumber,LVCFMT_LEFT,80);
  122. m_List_Info.InsertColumn(3,g_strUserInfo,LVCFMT_LEFT,200);
  123. m_List_Info.InsertColumn(4,g_strDescribe,LVCFMT_LEFT,150);
  124. m_List_Info.InsertColumn(5,g_strInfomation,LVCFMT_LEFT,478);
  125. SetWindowLong(m_List_Info.m_hWnd ,GWL_EXSTYLE,WS_EX_CLIENTEDGE);
  126. m_List_Info.SetExtendedStyle(LVS_EX_GRIDLINES); //设置扩展风格为网格
  127. ::SendMessage(m_List_Info.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
  128. m_List_Info.SetRowHeigt( 20 );
  129. //m_List_Info.SetFontHW( 13,8 );
  130. return 0;
  131. }
  132. void CDlg_Moniter::OnBnClickedButton1()
  133. {
  134. //for( int nControllerIndex=0;nControllerIndex<CONCTROLLER_NUM_MAX;nControllerIndex++ )
  135. //{
  136. // if( g_pDlgMain->m_pThread_Controller[nControllerIndex] )
  137. // {
  138. // g_pDlgMain->m_pThread_Controller[nControllerIndex]->m_Controller.nOperterType = OPERATE_DoorOpen;
  139. // }
  140. //}
  141. }
  142. HBRUSH CDlg_Moniter::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  143. {
  144. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  145. // TODO: 在此更改 DC 的任何属性
  146. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  147. return hbr;
  148. }
  149. BOOL CDlg_Moniter::OnEraseBkgnd(CDC* pDC)
  150. {
  151. CBrush br1;
  152. CRect rect;
  153. GetWindowRect(&rect);
  154. ScreenToClient(&rect);
  155. br1.CreateSolidBrush(g_Color3);
  156. pDC->FillRect(rect,&br1);
  157. DeleteObject( br1 );
  158. return TRUE;
  159. //return CDialog::OnEraseBkgnd(pDC);
  160. }
  161. bool CDlg_Moniter::IsExist( CString sTime,CString sCardID )
  162. {
  163. bool bRet=false;
  164. for( int i=0;i<100;i++ )
  165. {
  166. if( m_sTime[i]=="" )
  167. {
  168. break;
  169. }
  170. else
  171. {
  172. if( sTime==m_sTime[i] && sCardID==m_sCard[i] )
  173. {
  174. bRet = true;
  175. break;
  176. }
  177. }
  178. }
  179. if( !bRet )
  180. {
  181. m_sTime[m_nNowIndex] = sTime;
  182. m_sCard[m_nNowIndex] = sCardID;
  183. m_nNowIndex++;
  184. if( m_nNowIndex==100 )
  185. m_nNowIndex=0;
  186. }
  187. return bRet;
  188. }
  189. void CDlg_Moniter::InsertItemToList( CString sTime,CString sCardID,CString sUserInfo,CString sDoorName,CString sInfo )
  190. {
  191. EnterCriticalSection( &m_InSertRecordList );
  192. if( IsExist( sTime,sCardID ) )
  193. {
  194. LeaveCriticalSection( &m_InSertRecordList );
  195. return;
  196. }
  197. if( m_List_Info.GetItemCount()>=2000 )
  198. {
  199. m_List_Info.DeleteAllItems();
  200. }
  201. CRect rc;
  202. m_List_Info.GetWindowRect( rc );
  203. int H = rc.Height();
  204. CString sIndex;
  205. int nInsertIndex = m_List_Info.GetItemCount();
  206. sIndex.Format( "%d",nInsertIndex+1 );
  207. m_List_Info.InsertItem( nInsertIndex,sIndex );
  208. m_List_Info.SetItemText( nInsertIndex,1,sTime );
  209. m_List_Info.SetItemText( nInsertIndex,2,sCardID );
  210. m_List_Info.SetItemText( nInsertIndex,3,sUserInfo );
  211. m_List_Info.SetItemText( nInsertIndex,4,sDoorName );
  212. m_List_Info.SetItemText( nInsertIndex,5,sInfo );
  213. if( g_bPassOK(sInfo) )
  214. {
  215. m_List_Info.SetItemColor( 0,nInsertIndex,RGB( 80,128,30 ) );
  216. m_List_Info.SetItemColor( 1,nInsertIndex,RGB( 80,128,30 ) );
  217. m_List_Info.SetItemColor( 2,nInsertIndex,RGB( 80,128,30 ) );
  218. m_List_Info.SetItemColor( 3,nInsertIndex,RGB( 80,128,30 ) );
  219. m_List_Info.SetItemColor( 4,nInsertIndex,RGB( 80,128,30 ) );
  220. m_List_Info.SetItemColor( 5,nInsertIndex,RGB( 80,128,30 ) );
  221. m_List_Info.SetItemTextColor( 0,nInsertIndex,RGB( 200,200,255 ) );
  222. m_List_Info.SetItemTextColor( 1,nInsertIndex,RGB( 200,200,255 ) );
  223. m_List_Info.SetItemTextColor( 2,nInsertIndex,RGB( 200,200,255 ) );
  224. m_List_Info.SetItemTextColor( 3,nInsertIndex,RGB( 200,200,255 ) );
  225. m_List_Info.SetItemTextColor( 4,nInsertIndex,RGB( 200,200,255 ) );
  226. m_List_Info.SetItemTextColor( 5,nInsertIndex,RGB( 200,200,255 ) );
  227. }
  228. else
  229. {
  230. m_List_Info.SetItemColor( 0,nInsertIndex,RGB( 211,63,45 ) );
  231. m_List_Info.SetItemColor( 1,nInsertIndex,RGB( 211,63,45 ) );
  232. m_List_Info.SetItemColor( 2,nInsertIndex,RGB( 211,63,45 ) );
  233. m_List_Info.SetItemColor( 3,nInsertIndex,RGB( 211,63,45 ) );
  234. m_List_Info.SetItemColor( 4,nInsertIndex,RGB( 211,63,45 ) );
  235. m_List_Info.SetItemColor( 5,nInsertIndex,RGB( 211,63,45 ) );
  236. //m_List_Info.SetItemTextColor( 0,nInsertIndex,RGB( 255,255,255 ) );
  237. //m_List_Info.SetItemTextColor( 1,nInsertIndex,RGB( 255,255,255 ) );
  238. //m_List_Info.SetItemTextColor( 2,nInsertIndex,RGB( 255,255,255 ) );
  239. //m_List_Info.SetItemTextColor( 3,nInsertIndex,RGB( 255,255,255 ) );
  240. //m_List_Info.SetItemTextColor( 4,nInsertIndex,RGB( 255,255,255 ) );
  241. }
  242. int H2=20;
  243. if( (nInsertIndex+1)*H2<H )
  244. {
  245. CRect rect( 0,(nInsertIndex+0)*H2,2000,(nInsertIndex+2)*H2 );
  246. m_List_Info.InvalidateRect(rect);
  247. }
  248. else
  249. {
  250. CRect rect( 0,H-2*H2,2000,H+H2 );
  251. m_List_Info.InvalidateRect(rect);
  252. }
  253. m_List_Info.EnsureVisible(nInsertIndex, FALSE);
  254. if( !g_bIsWebCall )//是IDE调用才插入进出记录
  255. InsertRecordInfo( (char *)(LPCTSTR)sCardID,(char *)(LPCTSTR)sUserInfo,(char *)(LPCTSTR)sDoorName,(char *)(LPCTSTR)sInfo,(char *)(LPCTSTR)sTime );
  256. LeaveCriticalSection( &m_InSertRecordList );
  257. }
  258. void CDlg_Moniter::InsertItemToList( int iType,bool bResult,CString sControlName )
  259. {
  260. if( !g_bIsInsertReconnectInfo && iType==OPERATE_ReConnect )
  261. return ;
  262. EnterCriticalSection( &m_InSertRecordList );
  263. CString sName;
  264. //if( m_sCurrentDoorName=="" )
  265. sName = sControlName;
  266. //else
  267. // sName = m_sCurrentDoorName;
  268. if( sName=="" )
  269. sName = m_sCurrentDoorName;
  270. CRect rc;
  271. m_List_Info.GetWindowRect( rc );
  272. int H = rc.Height();
  273. CString sIndex;
  274. int nInsertIndex = m_List_Info.GetItemCount();
  275. sIndex.Format( "%d",nInsertIndex+1 );
  276. CString sTime;
  277. CString sInfo;
  278. SYSTEMTIME st;
  279. ::GetLocalTime( &st );
  280. sTime.Format(" %d-%02d-%02d %02d:%02d:%02d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond );
  281. switch( iType )
  282. {
  283. case OPERATE_JustTime:
  284. {
  285. if( bResult )
  286. sInfo.Format(" %s--%s%s",sName,g_strAdjustTime,g_strSuccess );
  287. else
  288. sInfo.Format(" %s--%s%s",sName,g_strAdjustTime,g_strFail );
  289. }
  290. break;
  291. case OPERATE_DoorOpen:
  292. {
  293. if( bResult )
  294. sInfo.Format(" %s--%s%s",sName,g_strOpenDoor,g_strSuccess );
  295. else
  296. sInfo.Format(" %s--%s%s",sName,g_strOpenDoor,g_strFail );
  297. }
  298. break;
  299. case OPERATE_ControlAndDelayTime:
  300. {
  301. if( bResult )
  302. sInfo.Format(" %s--%s%s",sName,g_strSetDelayTime,g_strSuccess );
  303. else
  304. sInfo.Format(" %s--%s%s",sName,g_strSetDelayTime,g_strFail );
  305. }
  306. break;
  307. case OPERATE_ReConnect:
  308. {
  309. if( bResult )
  310. sInfo.Format(" %s--%s%s",sName,g_strConnect,g_strSuccess );
  311. else
  312. sInfo.Format(" %s--%s%s",sName,g_strConnect,g_strFail );
  313. }
  314. break;
  315. }
  316. m_List_Info.InsertItem( nInsertIndex,sIndex );
  317. m_List_Info.SetItemText( nInsertIndex,1,sTime );
  318. m_List_Info.SetItemText( nInsertIndex,2,"" );
  319. m_List_Info.SetItemText( nInsertIndex,3,"" );
  320. m_List_Info.SetItemText( nInsertIndex,4,"" );
  321. m_List_Info.SetItemText( nInsertIndex,5,sInfo );
  322. m_List_Info.SetItemColor( 0,nInsertIndex,RGB( 126,207,247) );
  323. m_List_Info.SetItemColor( 1,nInsertIndex,RGB( 126,207,247) );
  324. m_List_Info.SetItemColor( 2,nInsertIndex,RGB( 126,207,247) );
  325. m_List_Info.SetItemColor( 3,nInsertIndex,RGB( 126,207,247) );
  326. m_List_Info.SetItemColor( 4,nInsertIndex,RGB( 126,207,247) );
  327. m_List_Info.SetItemColor( 5,nInsertIndex,RGB( 126,207,247) );
  328. if( !bResult )
  329. {
  330. m_List_Info.SetItemTextColor( 0,nInsertIndex,RGB( 200,0,0 ) );
  331. m_List_Info.SetItemTextColor( 1,nInsertIndex,RGB( 200,0,0 ) );
  332. m_List_Info.SetItemTextColor( 2,nInsertIndex,RGB( 200,0,0 ) );
  333. m_List_Info.SetItemTextColor( 3,nInsertIndex,RGB( 200,0,0 ) );
  334. m_List_Info.SetItemTextColor( 4,nInsertIndex,RGB( 200,0,0 ) );
  335. m_List_Info.SetItemTextColor( 5,nInsertIndex,RGB( 200,0,0 ) );
  336. //m_List_Info.SetItemTextColor( 0,nInsertIndex,RGB( 153,51,51 ) );
  337. //m_List_Info.SetItemTextColor( 1,nInsertIndex,RGB( 153,51,51 ) );
  338. //m_List_Info.SetItemTextColor( 2,nInsertIndex,RGB( 153,51,51 ) );
  339. //m_List_Info.SetItemTextColor( 3,nInsertIndex,RGB( 153,51,51 ) );
  340. //m_List_Info.SetItemTextColor( 4,nInsertIndex,RGB( 153,51,51 ) );
  341. }
  342. else
  343. {
  344. //m_List_Info.SetItemTextColor( 0,nInsertIndex,RGB( 255,255,255 ) );
  345. //m_List_Info.SetItemTextColor( 1,nInsertIndex,RGB( 255,255,255 ) );
  346. //m_List_Info.SetItemTextColor( 2,nInsertIndex,RGB( 255,255,255 ) );
  347. //m_List_Info.SetItemTextColor( 3,nInsertIndex,RGB( 255,255,255 ) );
  348. //m_List_Info.SetItemTextColor( 4,nInsertIndex,RGB( 255,255,255 ) );
  349. //m_List_Info.SetItemTextColor( 0,nInsertIndex,RGB( 200,200,255 ) );
  350. //m_List_Info.SetItemTextColor( 1,nInsertIndex,RGB( 200,200,255 ) );
  351. //m_List_Info.SetItemTextColor( 2,nInsertIndex,RGB( 200,200,255 ) );
  352. //m_List_Info.SetItemTextColor( 3,nInsertIndex,RGB( 200,200,255 ) );
  353. //m_List_Info.SetItemTextColor( 4,nInsertIndex,RGB( 200,200,255 ) );
  354. }
  355. int H2=20;
  356. if( (nInsertIndex+1)*H2<H )
  357. {
  358. CRect rect( 0,(nInsertIndex+0)*H2,2000,(nInsertIndex+2)*H2 );
  359. m_List_Info.InvalidateRect(rect);
  360. }
  361. else
  362. {
  363. CRect rect( 0,H-2*H2,2000,H+H2 );
  364. m_List_Info.InvalidateRect(rect);
  365. }
  366. m_List_Info.EnsureVisible(nInsertIndex, FALSE);
  367. //ADOCtrl.InsertRecord( sTime,"","","",sInfo );
  368. LeaveCriticalSection( &m_InSertRecordList );
  369. }
  370. void CDlg_Moniter::AddDoorToList( CString sControlName,int nStatus )
  371. {
  372. if( sControlName=="" )
  373. return;
  374. EnterCriticalSection( &m_InSertDoorList );
  375. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  376. {
  377. if( g_Controller[i].nID>=0 && g_Controller[i].sName==sControlName )
  378. {
  379. CString sItemText;
  380. CString sInsertTemp;
  381. for( int nDoorIndex=1;nDoorIndex<9;nDoorIndex++ )
  382. {
  383. if( g_Controller[i].sDoorName[nDoorIndex]!="" )
  384. {
  385. int nItemSize = m_List_Door.GetItemCount();
  386. int nItemInsert=nItemSize;
  387. bool bExist=false;
  388. if( nItemSize>0 )
  389. {
  390. for( int iItemIndex=0;iItemIndex<nItemSize;iItemIndex++ )
  391. {
  392. sItemText = m_List_Door.GetItemText( iItemIndex,0 );
  393. sInsertTemp.Format("%d-%s",g_Controller[i].nID,g_Controller[i].sDoorName[nDoorIndex] );
  394. if( sItemText==sInsertTemp )
  395. {
  396. nItemInsert = iItemIndex;
  397. bExist = true;
  398. break;
  399. }
  400. }
  401. }
  402. else
  403. {
  404. sInsertTemp.Format("%d-%s",g_Controller[i].nID,g_Controller[i].sDoorName[nDoorIndex] );
  405. }
  406. if( !bExist )
  407. {
  408. nItemSize = m_List_Door.GetItemCount();
  409. m_List_Door.InsertItem(nItemInsert,sInsertTemp,nStatus);
  410. m_List_Door.SetIconSpacing(DOOR_W,DOOR_H);
  411. }
  412. else
  413. {
  414. //m_List_Door.DeleteItem( nItemInsert );
  415. //m_List_Door.InsertItem(nItemInsert,g_Controller[i].sDoorName[nDoorIndex],nStatus);
  416. //m_List_Door.SetIconSpacing(DOOR_W,DOOR_H);
  417. LVITEM Itemattr;
  418. Itemattr.iItem=nItemInsert; //指定哪一行
  419. Itemattr.mask = LVIF_IMAGE;
  420. Itemattr.iImage =nStatus; //要把当前图标改成m_Imagelist 中下标为 4 的图标。
  421. m_List_Door.SetItem (&Itemattr); //更改成功。
  422. }
  423. }
  424. else
  425. break;
  426. }
  427. break;
  428. }
  429. }
  430. LeaveCriticalSection( &m_InSertDoorList );
  431. }
  432. void CDlg_Moniter::AddDoorToList( CString sControlName,int iDoorIndex,int nStatus )
  433. {
  434. if( sControlName=="" )
  435. return;
  436. //CString sShow;
  437. //sShow.Format( "%s EnterCriticalSection",sControlName );
  438. //WriteLog( sShow );
  439. EnterCriticalSection( &m_InSertDoorList );
  440. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  441. {
  442. if( g_Controller[i].nID>=0 && g_Controller[i].sName==sControlName )
  443. {
  444. CString sItemText;
  445. CString sInsertTemp;
  446. int nItemSize = m_List_Door.GetItemCount();
  447. int nItemInsert=nItemSize;
  448. bool bExist=false;
  449. for( int iItemIndex=0;iItemIndex<nItemSize;iItemIndex++ )
  450. {
  451. sItemText = m_List_Door.GetItemText( iItemIndex,0 );
  452. sInsertTemp.Format("%d-%s",g_Controller[i].nID,g_Controller[i].sDoorName[iDoorIndex] );
  453. if( sItemText==sInsertTemp )
  454. {
  455. nItemInsert = iItemIndex;
  456. bExist = true;
  457. break;
  458. }
  459. }
  460. if( bExist && g_Controller[i].sDoorName[iDoorIndex]!="" )
  461. {
  462. //m_List_Door.DeleteItem( nItemInsert );
  463. //m_List_Door.InsertItem(nItemInsert,g_Controller[i].sDoorName[iDoorIndex],nStatus);
  464. //m_List_Door.SetIconSpacing(DOOR_W,DOOR_H);
  465. LVITEM Itemattr;
  466. Itemattr.iItem=nItemInsert; //指定哪一行
  467. Itemattr.mask = LVIF_IMAGE;
  468. Itemattr.iImage =nStatus; //要把当前图标改成m_Imagelist 中下标为 4 的图标。
  469. m_List_Door.SetItem (&Itemattr); //更改成功。
  470. }
  471. break;
  472. }
  473. }
  474. LeaveCriticalSection( &m_InSertDoorList );
  475. //sShow.Format( "%s LeaveCriticalSection",sControlName );
  476. //WriteLog( sShow );
  477. }
  478. void CDlg_Moniter::DelDoorFromList( CString sControlName )
  479. {
  480. if( sControlName=="" )
  481. return;
  482. EnterCriticalSection( &m_InSertDoorList );
  483. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  484. {
  485. if( g_Controller[i].nID>=0 && g_Controller[i].sName==sControlName )
  486. {
  487. CString sItemText;
  488. CString sInsertTemp;
  489. for( int nDoorIndex=1;nDoorIndex<9;nDoorIndex++ )
  490. {
  491. if( g_Controller[i].sDoorName[nDoorIndex]!="" )
  492. {
  493. int nItemSize = m_List_Door.GetItemCount();
  494. int nItemDel=0;
  495. bool bExist=false;
  496. for( int iItemIndex=0;iItemIndex<nItemSize;iItemIndex++ )
  497. {
  498. sItemText = m_List_Door.GetItemText( iItemIndex,0 );
  499. sInsertTemp.Format("%d-%s",g_Controller[i].nID,g_Controller[i].sDoorName[nDoorIndex] );
  500. if( sItemText==sInsertTemp )
  501. {
  502. nItemDel = iItemIndex;
  503. bExist = true;
  504. break;
  505. }
  506. }
  507. if( bExist )
  508. {
  509. m_List_Door.DeleteItem( nItemDel );
  510. }
  511. }
  512. else
  513. break;
  514. }
  515. break;
  516. }
  517. }
  518. LeaveCriticalSection( &m_InSertDoorList );
  519. }
  520. void CDlg_Moniter::OnDoorOpendoor()
  521. {
  522. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  523. {
  524. if( g_pDlgMain->m_pThread_Controller[i] )
  525. {
  526. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  527. {
  528. CString sTemp1,sTemp2,sTemp3,sTemp4,sTemp5,sTemp6,sTemp7,sTemp8;
  529. sTemp1.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[1] );
  530. sTemp2.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[2] );
  531. sTemp3.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[3] );
  532. sTemp4.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[4] );
  533. sTemp5.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[5] );
  534. sTemp6.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[6] );
  535. sTemp7.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[7] );
  536. sTemp8.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[8] );
  537. if( sTemp1==m_sCurrentDoorName )
  538. {
  539. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[1] = true;
  540. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  541. break;
  542. }
  543. else if( sTemp2==m_sCurrentDoorName )
  544. {
  545. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[2] = true;
  546. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  547. break;
  548. }
  549. else if( sTemp3==m_sCurrentDoorName )
  550. {
  551. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[3] = true;
  552. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  553. break;
  554. }
  555. else if( sTemp4==m_sCurrentDoorName )
  556. {
  557. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[4] = true;
  558. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  559. break;
  560. }
  561. else if( sTemp5==m_sCurrentDoorName )
  562. {
  563. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[5] = true;
  564. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  565. break;
  566. }
  567. else if( sTemp6==m_sCurrentDoorName )
  568. {
  569. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[6] = true;
  570. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  571. break;
  572. }
  573. else if( sTemp7==m_sCurrentDoorName )
  574. {
  575. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[7] = true;
  576. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  577. break;
  578. }
  579. else if( sTemp8==m_sCurrentDoorName )
  580. {
  581. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[8] = true;
  582. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_DoorOpen;
  583. break;
  584. }
  585. }
  586. }
  587. }
  588. }
  589. void CDlg_Moniter::OnDoorSort()
  590. {
  591. CStringArray sArrayOnLine,sArrayOffLine;
  592. CString sItemText;
  593. int nItemSize = m_List_Door.GetItemCount();
  594. if( nItemSize==0 )
  595. return;
  596. for( int iItemIndex=0;iItemIndex<nItemSize;iItemIndex++ )
  597. {
  598. sItemText = m_List_Door.GetItemText( iItemIndex,0 );
  599. if( g_FindDoorStatusByDoorName( sItemText ) )
  600. sArrayOnLine.Add( sItemText );
  601. else
  602. sArrayOffLine.Add( sItemText );
  603. }
  604. CString str;
  605. int nIndex=0;
  606. int nOnLineCount = sArrayOnLine.GetCount();
  607. int nOffLineCount = sArrayOffLine.GetCount();
  608. //if( nOnLineCount==0 || nOffLineCount==0 )
  609. // return;
  610. m_List_Door.DeleteAllItems();
  611. for( int i=0;i<nOnLineCount;i++ )
  612. {
  613. str = sArrayOnLine.GetAt( i );
  614. m_List_Door.InsertItem( nIndex,str,0 );
  615. m_List_Door.SetIconSpacing(DOOR_W,DOOR_H);
  616. nIndex++;
  617. }
  618. for( int i=0;i<nOffLineCount;i++ )
  619. {
  620. str = sArrayOffLine.GetAt( i );
  621. m_List_Door.InsertItem( nIndex,str,2 );
  622. m_List_Door.SetIconSpacing(DOOR_W,DOOR_H);
  623. nIndex++;
  624. }
  625. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  626. {
  627. if( g_pDlgMain->m_pThread_Controller[i] )
  628. {
  629. memset( g_pDlgMain->m_pThread_Controller[i]->m_nDoorStatus,-1,40 );
  630. }
  631. }
  632. }
  633. void CDlg_Moniter::OnDoorSort2()
  634. {
  635. OnDoorSort();
  636. }
  637. void CDlg_Moniter::OnDoorSort1()
  638. {
  639. OnDoorSort();
  640. }
  641. void CDlg_Moniter::OnDoorClosedoor()
  642. {
  643. }
  644. void CDlg_Moniter::OnDoorJusttime()
  645. {
  646. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  647. {
  648. if( g_pDlgMain->m_pThread_Controller[i] )
  649. {
  650. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  651. {
  652. CString sTemp1,sTemp2,sTemp3,sTemp4,sTemp5,sTemp6,sTemp7,sTemp8;
  653. sTemp1.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[1] );
  654. sTemp2.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[2] );
  655. sTemp3.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[3] );
  656. sTemp4.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[4] );
  657. sTemp5.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[5] );
  658. sTemp6.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[6] );
  659. sTemp7.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[7] );
  660. sTemp8.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[8] );
  661. if( sTemp1==m_sCurrentDoorName )
  662. {
  663. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[1] = true;
  664. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  665. break;
  666. }
  667. else if( sTemp2==m_sCurrentDoorName )
  668. {
  669. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[2] = true;
  670. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  671. break;
  672. }
  673. else if( sTemp3==m_sCurrentDoorName )
  674. {
  675. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[3] = true;
  676. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  677. break;
  678. }
  679. else if( sTemp4==m_sCurrentDoorName )
  680. {
  681. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[4] = true;
  682. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  683. break;
  684. }
  685. else if( sTemp5==m_sCurrentDoorName )
  686. {
  687. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[5] = true;
  688. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  689. break;
  690. }
  691. else if( sTemp6==m_sCurrentDoorName )
  692. {
  693. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[6] = true;
  694. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  695. break;
  696. }
  697. else if( sTemp7==m_sCurrentDoorName )
  698. {
  699. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[7] = true;
  700. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  701. break;
  702. }
  703. else if( sTemp8==m_sCurrentDoorName )
  704. {
  705. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[8] = true;
  706. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_JustTime;
  707. break;
  708. }
  709. }
  710. }
  711. }
  712. }
  713. void CDlg_Moniter::OnDoorDooropendelaytime()
  714. {
  715. int INDEX=0;
  716. CDlg_SetDoor Dlg_SetDoor;
  717. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  718. {
  719. if( g_pDlgMain->m_pThread_Controller[i] )
  720. {
  721. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  722. {
  723. CString sTemp1,sTemp2,sTemp3,sTemp4,sTemp5,sTemp6,sTemp7,sTemp8;
  724. sTemp1.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[1] );
  725. sTemp2.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[2] );
  726. sTemp3.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[3] );
  727. sTemp4.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[4] );
  728. sTemp5.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[5] );
  729. sTemp6.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[6] );
  730. sTemp7.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[7] );
  731. sTemp8.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[8] );
  732. if( sTemp1==m_sCurrentDoorName )
  733. {
  734. INDEX = 1;
  735. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  736. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  737. if( Dlg_SetDoor.DoModal()==IDOK )
  738. {
  739. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  740. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  741. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  742. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  743. }
  744. break;
  745. }
  746. else if( sTemp2==m_sCurrentDoorName )
  747. {
  748. INDEX = 2;
  749. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  750. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  751. if( Dlg_SetDoor.DoModal()==IDOK )
  752. {
  753. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  754. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  755. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  756. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  757. }
  758. break;
  759. }
  760. else if( sTemp3==m_sCurrentDoorName )
  761. {
  762. INDEX = 3;
  763. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  764. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  765. if( Dlg_SetDoor.DoModal()==IDOK )
  766. {
  767. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  768. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  769. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  770. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  771. }
  772. break;
  773. }
  774. else if( sTemp4==m_sCurrentDoorName )
  775. {
  776. INDEX = 4;
  777. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  778. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  779. if( Dlg_SetDoor.DoModal()==IDOK )
  780. {
  781. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  782. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  783. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  784. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  785. }
  786. break;
  787. }
  788. else if( sTemp5==m_sCurrentDoorName )
  789. {
  790. INDEX = 5;
  791. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  792. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  793. if( Dlg_SetDoor.DoModal()==IDOK )
  794. {
  795. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  796. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  797. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  798. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  799. }
  800. break;
  801. }
  802. else if( sTemp6==m_sCurrentDoorName )
  803. {
  804. INDEX = 6;
  805. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  806. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  807. if( Dlg_SetDoor.DoModal()==IDOK )
  808. {
  809. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  810. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  811. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  812. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  813. }
  814. break;
  815. }
  816. else if( sTemp7==m_sCurrentDoorName )
  817. {
  818. INDEX = 7;
  819. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  820. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  821. if( Dlg_SetDoor.DoModal()==IDOK )
  822. {
  823. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  824. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  825. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  826. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  827. }
  828. break;
  829. }
  830. else if( sTemp8==m_sCurrentDoorName )
  831. {
  832. INDEX = 8;
  833. Dlg_SetDoor.m_nComb_ControlType = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX]-1;
  834. Dlg_SetDoor.m_nComb_OpenDelayTime = g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX];
  835. if( Dlg_SetDoor.DoModal()==IDOK )
  836. {
  837. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorDelayTime[INDEX] = Dlg_SetDoor.m_nComb_OpenDelayTime;
  838. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nDoorControlType[INDEX] = Dlg_SetDoor.m_nComb_ControlType+1;
  839. g_pDlgMain->m_pThread_Controller[i]->m_Controller.bDoorIsSet[INDEX] = true;
  840. g_pDlgMain->m_pThread_Controller[i]->m_Controller.nOperterType=OPERATE_ControlAndDelayTime;
  841. }
  842. break;
  843. }
  844. }
  845. }
  846. }
  847. }
  848. void CDlg_Moniter::OnDoorReconnect()
  849. {
  850. OnReconnect();
  851. }
  852. void CDlg_Moniter::OnReconnect()
  853. {
  854. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  855. {
  856. if( g_pDlgMain->m_pThread_Controller[i] )
  857. {
  858. CString sTemp1,sTemp2,sTemp3,sTemp4,sTemp5,sTemp6,sTemp7,sTemp8;
  859. sTemp1.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[1] );
  860. sTemp2.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[2] );
  861. sTemp3.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[3] );
  862. sTemp4.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[4] );
  863. sTemp5.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[5] );
  864. sTemp6.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[6] );
  865. sTemp7.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[7] );
  866. sTemp8.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[8] );
  867. if( sTemp1==m_sCurrentDoorName )
  868. {
  869. if( g_pDlgMain->m_pThread_Controller[i] )
  870. {
  871. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  872. delete g_pDlgMain->m_pThread_Controller[i];
  873. g_pDlgMain->m_pThread_Controller[i] = NULL;
  874. }
  875. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  876. {
  877. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  878. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  879. }
  880. break;
  881. }
  882. else if( sTemp2==m_sCurrentDoorName )
  883. {
  884. if( g_pDlgMain->m_pThread_Controller[i] )
  885. {
  886. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  887. delete g_pDlgMain->m_pThread_Controller[i];
  888. g_pDlgMain->m_pThread_Controller[i] = NULL;
  889. }
  890. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  891. {
  892. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  893. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  894. }
  895. break;
  896. }
  897. else if( sTemp3==m_sCurrentDoorName )
  898. {
  899. if( g_pDlgMain->m_pThread_Controller[i] )
  900. {
  901. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  902. delete g_pDlgMain->m_pThread_Controller[i];
  903. g_pDlgMain->m_pThread_Controller[i] = NULL;
  904. }
  905. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  906. {
  907. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  908. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  909. }
  910. break;
  911. }
  912. else if( sTemp4==m_sCurrentDoorName )
  913. {
  914. if( g_pDlgMain->m_pThread_Controller[i] )
  915. {
  916. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  917. delete g_pDlgMain->m_pThread_Controller[i];
  918. g_pDlgMain->m_pThread_Controller[i] = NULL;
  919. }
  920. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  921. {
  922. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  923. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  924. }
  925. break;
  926. }
  927. else if( sTemp5==m_sCurrentDoorName )
  928. {
  929. if( g_pDlgMain->m_pThread_Controller[i] )
  930. {
  931. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  932. delete g_pDlgMain->m_pThread_Controller[i];
  933. g_pDlgMain->m_pThread_Controller[i] = NULL;
  934. }
  935. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  936. {
  937. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  938. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  939. }
  940. break;
  941. }
  942. else if( sTemp6==m_sCurrentDoorName )
  943. {
  944. if( g_pDlgMain->m_pThread_Controller[i] )
  945. {
  946. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  947. delete g_pDlgMain->m_pThread_Controller[i];
  948. g_pDlgMain->m_pThread_Controller[i] = NULL;
  949. }
  950. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  951. {
  952. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  953. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  954. }
  955. break;
  956. }
  957. else if( sTemp7==m_sCurrentDoorName )
  958. {
  959. if( g_pDlgMain->m_pThread_Controller[i] )
  960. {
  961. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  962. delete g_pDlgMain->m_pThread_Controller[i];
  963. g_pDlgMain->m_pThread_Controller[i] = NULL;
  964. }
  965. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  966. {
  967. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  968. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  969. }
  970. break;
  971. }
  972. else if( sTemp8==m_sCurrentDoorName )
  973. {
  974. if( g_pDlgMain->m_pThread_Controller[i] )
  975. {
  976. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  977. delete g_pDlgMain->m_pThread_Controller[i];
  978. g_pDlgMain->m_pThread_Controller[i] = NULL;
  979. }
  980. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  981. {
  982. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  983. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  984. }
  985. break;
  986. }
  987. }
  988. }
  989. }
  990. void CDlg_Moniter::OnNMRclickListDoor(NMHDR *pNMHDR, LRESULT *pResult)
  991. {
  992. // TODO: 在此添加控件通知处理程序代码
  993. NMITEMACTIVATE * nmia = (NMITEMACTIVATE *) pNMHDR;
  994. POSITION pos = m_List_Door.GetFirstSelectedItemPosition();
  995. if ( pos==NULL )
  996. {
  997. CPoint pt;
  998. GetCursorPos( &pt );
  999. CMenu menu;
  1000. menu.LoadMenu(IDR_MENU_DOOR);
  1001. menu.GetSubMenu(2)->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this);
  1002. return;
  1003. }
  1004. while (pos)
  1005. {
  1006. int nItem = m_List_Door.GetNextSelectedItem(pos);
  1007. m_sCurrentDoorName = m_List_Door.GetItemText( nItem,0 );
  1008. CPoint pt;
  1009. GetCursorPos( &pt );
  1010. if( g_FindDoorStatusByDoorName( m_sCurrentDoorName ) )
  1011. {
  1012. CMenu menu;
  1013. menu.LoadMenu(IDR_MENU_DOOR);
  1014. menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this);
  1015. }
  1016. else
  1017. {
  1018. CMenu menu;
  1019. menu.LoadMenu(IDR_MENU_DOOR);
  1020. menu.GetSubMenu(1)->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this);
  1021. }
  1022. }
  1023. *pResult = 0;
  1024. }
  1025. void CDlg_Moniter::OnNMDblclkListInfo(NMHDR *pNMHDR, LRESULT *pResult)
  1026. {
  1027. // TODO: 在此添加控件通知处理程序代码
  1028. int iListCount = m_List_Info.GetItemCount();
  1029. POSITION pos = m_List_Info.GetFirstSelectedItemPosition();
  1030. int nListSel = m_List_Info.GetNextSelectedItem(pos);
  1031. if(nListSel>=iListCount || nListSel==-1)
  1032. {
  1033. return;
  1034. }
  1035. CString sCardNumber,sUserName;
  1036. sCardNumber = m_List_Info.GetItemText( nListSel,2 );
  1037. sUserName = m_List_Info.GetItemText( nListSel,3 );
  1038. if( sCardNumber.GetLength()>0 && sUserName.GetLength()<2 )
  1039. {
  1040. CDlg_CardProPerty dlg;
  1041. dlg.m_nOperate = ADD;
  1042. dlg.m_sEdit_CardNumber = sCardNumber.TrimLeft();
  1043. if( dlg.DoModal()==IDOK )
  1044. {
  1045. CString sIndex;
  1046. sIndex.Format("%d",dlg.m_nID );
  1047. g_pDlgMain->m_pDlg_Card->m_List_Card.InsertItem( 0,sIndex );
  1048. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,1," "+dlg.m_sEdit_Name );
  1049. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,2," "+dlg.m_sEdit_CardNumber );
  1050. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,3," "+dlg.m_sEdit_Class );
  1051. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,4," "+dlg.m_sEdit_JobNumber );
  1052. g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( 0,5," "+dlg.m_sEdit_Remarks );
  1053. for( int i=0;i<CARD_NUM_MAX;i++ )
  1054. {
  1055. if( g_Card[i].nID<0 )
  1056. {
  1057. g_Card[i].nID = dlg.m_nID;
  1058. g_Card[i].sName = dlg.m_sEdit_Name;
  1059. g_Card[i].nNumber = atoi( dlg.m_sEdit_CardNumber );
  1060. g_Card[i].sClass = dlg.m_sEdit_Class;
  1061. g_Card[i].sJobNumber = dlg.m_sEdit_JobNumber;
  1062. g_Card[i].sRemarks = dlg.m_sEdit_Remarks;
  1063. break;
  1064. }
  1065. }
  1066. }
  1067. }
  1068. else
  1069. {
  1070. //CDlg_CardProPerty dlg;
  1071. //dlg.m_nOperate = EDIT;
  1072. //dlg.m_nID = atoi( str );
  1073. //if( dlg.DoModal()==IDOK )
  1074. //{
  1075. // g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( nListSel,1," "+dlg.m_sEdit_Name );
  1076. // g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( nListSel,2," "+dlg.m_sEdit_CardNumber );
  1077. // g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( nListSel,3," "+dlg.m_sEdit_Class );
  1078. // g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( nListSel,4," "+dlg.m_sEdit_JobNumber );
  1079. // g_pDlgMain->m_pDlg_Card->m_List_Card.SetItemText( nListSel,5," "+dlg.m_sEdit_Remarks );
  1080. //}
  1081. }
  1082. *pResult = 0;
  1083. }
  1084. void CDlg_Moniter::OnMenuClearlist()
  1085. {
  1086. m_List_Info.DeleteAllItems();
  1087. }
  1088. void CDlg_Moniter::OnNMRclickListInfo(NMHDR *pNMHDR, LRESULT *pResult)
  1089. {
  1090. // TODO: 在此添加控件通知处理程序代码
  1091. if( m_List_Info.GetItemCount()==0 )
  1092. return;
  1093. CPoint pt;
  1094. GetCursorPos( &pt );
  1095. CMenu menu;
  1096. menu.LoadMenu(IDR_MENU_DOOR);
  1097. menu.GetSubMenu(3)->TrackPopupMenu(TPM_LEFTALIGN,pt.x-40,pt.y-10,this);
  1098. *pResult = 0;
  1099. }