DlgService.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. // DlgService.cpp: 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "SATHelper.h"
  5. #include "DlgService.h"
  6. #include "afxdialogex.h"
  7. #include "SATClient.h"
  8. // CDlgService 对话框
  9. IMPLEMENT_DYNAMIC(CDlgService, CDialogEx)
  10. CDlgService::CDlgService(CWnd* pParent /*=nullptr*/)
  11. : CDialogEx(IDD_DLG_SERVICE, pParent)
  12. {
  13. }
  14. CDlgService::~CDlgService()
  15. {
  16. }
  17. void CDlgService::DoDataExchange(CDataExchange* pDX)
  18. {
  19. CDialogEx::DoDataExchange(pDX);
  20. DDX_Control(pDX, IDC_LIST_DEVICES, m_listDevices);
  21. DDX_Control(pDX, IDC_LIST_TASK, m_listTask);
  22. DDX_Control(pDX, BTN_MODIFY_RUNNER_NAME, m_btnModify);
  23. DDX_Control(pDX, BTN_ADD_ANDROID, m_btnAddAndroid);
  24. }
  25. BEGIN_MESSAGE_MAP(CDlgService, CDialogEx)
  26. ON_WM_PAINT()
  27. ON_WM_CTLCOLOR()
  28. ON_BN_CLICKED(BTN_MODIFY_RUNNER_NAME, &CDlgService::OnBnClickedModifyRunnerName)
  29. ON_BN_CLICKED(BTN_ADD_ANDROID, &CDlgService::OnBnClickedAddAndroid)
  30. ON_WM_TIMER()
  31. END_MESSAGE_MAP()
  32. // CDlgService 消息处理程序
  33. BOOL CDlgService::OnInitDialog()
  34. {
  35. CDialogEx::OnInitDialog();
  36. // TODO: 在此添加额外的初始化
  37. // 做为子窗口,这里设置透明度没有任何效果;
  38. // SetLayeredWindowAttributes(RGB(1, 2, 3), 0, LWA_COLORKEY/*|LWA_ALPHA*/);
  39. InitCtrl();
  40. FillData2Ctrl();
  41. // 5秒刷新一次;
  42. SetTimer(0, 15000, NULL);
  43. return TRUE; // return TRUE unless you set the focus to a control
  44. // 异常: OCX 属性页应返回 FALSE
  45. }
  46. void CDlgService::OnPaint()
  47. {
  48. CPaintDC dc(this); // device context for painting
  49. // TODO: 在此处添加消息处理程序代码
  50. // 不为绘图消息调用 CDialogEx::OnPaint()
  51. CRect rc;
  52. GetClientRect(rc);
  53. CBrush brush;
  54. brush.CreateSolidBrush(0xFFEFD5);
  55. dc.FillRect(&rc, &brush);
  56. }
  57. HBRUSH CDlgService::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  58. {
  59. HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
  60. // TODO: 在此更改 DC 的任何特性
  61. if (nCtlColor == CTLCOLOR_STATIC)
  62. {
  63. pDC->SetBkMode(TRANSPARENT);//设置背景透明
  64. //pDC->SetTextColor(RGB(255, 255, 0));//设置字体为黄色
  65. return (HBRUSH)::GetStockObject(NULL_BRUSH);
  66. }
  67. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  68. return hbr;
  69. }
  70. void CDlgService::InitCtrl()
  71. {
  72. // 初始化设备列表;
  73. m_listDevices.InsertColumn(0, "No");
  74. m_listDevices.SetColumnWidth(0, 25);
  75. m_listDevices.InsertColumn(1, "类型");
  76. m_listDevices.SetColumnWidth(1, 45);
  77. m_listDevices.InsertColumn(2, "名称");
  78. m_listDevices.SetColumnWidth(2, 130);
  79. m_listDevices.InsertColumn(3, "状态");
  80. m_listDevices.SetColumnWidth(3, 55);
  81. m_listDevices.SetExtendedStyle(m_listDevices.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
  82. // 初始化任务列表;
  83. m_listTask.InsertColumn(0, "No");
  84. m_listTask.SetColumnWidth(0, 25);
  85. m_listTask.InsertColumn(1, "任务ID");
  86. m_listTask.SetColumnWidth(1, 130);
  87. m_listTask.InsertColumn(2, "状态");
  88. m_listTask.SetColumnWidth(2, 55);
  89. m_listTask.InsertColumn(3, "结果");
  90. m_listTask.SetColumnWidth(3, 55);
  91. m_listTask.SetExtendedStyle(m_listTask.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
  92. // 修改按钮默认样式;
  93. m_btnModify.m_bTransparent = FALSE;
  94. m_btnModify.m_bDontUseWinXPTheme = TRUE;
  95. // 设置背景色;
  96. m_btnModify.SetFaceColor(RGB(0x87,0xCE,0xFA), TRUE);
  97. // 消除单击时黑色内圈;
  98. m_btnModify.m_bDrawFocus = FALSE;
  99. // 设置按钮扁平样式;
  100. m_btnModify.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
  101. // 设置鼠标形状;
  102. m_btnModify.SetMouseCursorHand();
  103. m_btnAddAndroid.m_bTransparent = FALSE;
  104. m_btnAddAndroid.m_bDontUseWinXPTheme = TRUE;
  105. // 设置背景色;
  106. m_btnAddAndroid.SetFaceColor(RGB(0x87, 0xCE, 0xFA), TRUE);
  107. // 消除单击时黑色内圈;
  108. m_btnAddAndroid.m_bDrawFocus = FALSE;
  109. // 设置按钮扁平样式;
  110. m_btnAddAndroid.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
  111. // 设置鼠标形状;
  112. m_btnAddAndroid.SetMouseCursorHand();
  113. }
  114. void CDlgService::FillData2Ctrl()
  115. {
  116. SetDlgItemText(IDC_EDIT_RUNNER_NAME, Global::g_Config.strActuator.c_str());
  117. }
  118. void CDlgService::OnBnClickedModifyRunnerName()
  119. {
  120. // TODO: 在此添加控件通知处理程序代码
  121. CString strActuator;
  122. GetDlgItemText(IDC_EDIT_RUNNER_NAME, strActuator);
  123. Global::g_Config.strActuator = strActuator.GetString();
  124. WritePrivateProfileString(_T("SATService"), _T("Actuator"), strActuator, Global::g_szConfig);
  125. CSATClient::GetInstance()->TCPLogin(Global::g_Config.strSATUserName, Global::g_Config.strSATPassword, Global::g_Config.strActuator);
  126. }
  127. void CDlgService::OnBnClickedAddAndroid()
  128. {
  129. // TODO: 在此添加控件通知处理程序代码
  130. CIPAddressCtrl* pIP = (CIPAddressCtrl*)GetDlgItem(IDC_IP_ANDROID);
  131. // 获取IP地址;
  132. BYTE nf1, nf2, nf3, nf4;
  133. pIP->GetAddress(nf1, nf2, nf3, nf4);
  134. CString str;
  135. str.Format("%d.%d.%d.%d", nf1, nf2, nf3, nf4);//这里的nf得到的值是IP值了
  136. if (str.IsEmpty())
  137. return;
  138. CSATClient::GetInstance()->TCPAddDevice(str.GetString());
  139. }
  140. void CDlgService::OnTimer(UINT_PTR nIDEvent)
  141. {
  142. // TODO: 在此添加消息处理程序代码和/或调用默认值
  143. if (nIDEvent == 0)
  144. {
  145. CSATClient::GetInstance()->TCPQueryDevices(FALSE);
  146. Sleep(500);
  147. int nIndex = 0;
  148. m_listDevices.DeleteAllItems();
  149. for ( std::vector<SATPROTO::Device>::iterator it = SATData::devices.begin(); it != SATData::devices.end(); it++ )
  150. {
  151. m_listDevices.InsertItem(nIndex, "1");
  152. if ( it->nType == 0 )
  153. m_listDevices.SetItemText(nIndex, 1, "虚拟");
  154. else if ( it->nType == 1 )
  155. m_listDevices.SetItemText(nIndex, 1, "USB");
  156. else if ( it->nType == 2 )
  157. m_listDevices.SetItemText(nIndex, 1, "网络");
  158. m_listDevices.SetItemText(nIndex, 2, it->szName);
  159. if ( it->nStatus == 0 )
  160. m_listDevices.SetItemText(nIndex, 3, "空闲");
  161. else
  162. m_listDevices.SetItemText(nIndex, 3, "繁忙");
  163. }
  164. }
  165. CDialogEx::OnTimer(nIDEvent);
  166. }