CSystemSettingWnd.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. #include "../pch/pch.h"
  2. #include "CSystemSettingWnd.h"
  3. #include "../control/ControlEx.h"
  4. #include "../tool/CComHelper.h"
  5. #include "CValueWnd.h"
  6. void CSystemSettingWnd::Init()
  7. {
  8. ::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
  9. m_nType = atoi(CSetting::GetParam("system_setting_jinezhuaqu_setting_type").c_str());
  10. CHorizontalLayoutUI* com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuankou_num_layout")));
  11. CHorizontalLayoutUI* xuni_com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_layout")));
  12. CHorizontalLayoutUI* chuangkou_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_layout")));
  13. if (m_nType == 1)
  14. {
  15. //选中串口抓取
  16. CCheckBoxUI* zhuaquTypeOption = static_cast<CCheckBoxUI*>(m_pm.FindControl(L"jinezhuaqu_setting_chuankou"));
  17. zhuaquTypeOption->Selected(true, false);
  18. //显示串口设置
  19. com_layout->SetVisible(true);
  20. xuni_com_layout->SetVisible(false);
  21. chuangkou_layout->SetVisible(false);
  22. }
  23. else if (m_nType == 2)
  24. {
  25. //选中虚拟串口抓取
  26. CCheckBoxUI* zhuaquTypeOption = static_cast<CCheckBoxUI*>(m_pm.FindControl(L"jinezhuaqu_setting_xunichuankou"));
  27. zhuaquTypeOption->Selected(true, false);
  28. //显示虚拟串口设置
  29. com_layout->SetVisible(false);
  30. xuni_com_layout->SetVisible(true);
  31. chuangkou_layout->SetVisible(false);
  32. }
  33. else if (m_nType == 3)
  34. {
  35. CCheckBoxUI* zhuaquTypeOption = static_cast<CCheckBoxUI*>(m_pm.FindControl(L"jinezhuaqu_setting_chuangkou"));
  36. zhuaquTypeOption->Selected(true, false);
  37. //显示窗口截取的设置
  38. com_layout->SetVisible(false);
  39. xuni_com_layout->SetVisible(false);
  40. chuangkou_layout->SetVisible(true);
  41. }
  42. else if (m_nType == 4)
  43. {
  44. CCheckBoxUI* zhuaquTypeOption = static_cast<CCheckBoxUI*>(m_pm.FindControl(L"jinezhuaqu_setting_ocr"));
  45. zhuaquTypeOption->Selected(true, false);
  46. }
  47. //串口模式设置的初始化
  48. CComboUI* com_com = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuankou_num")));
  49. com_com->RemoveAll();
  50. //数据库中保存的之前的设置
  51. std::string s_jinezhuaqu_setting_chuankou_num = CSetting::GetParam("system_setting_jinezhuaqu_setting_chuankou_num");
  52. std::wstring ws_jinezhuaqu_setting_chuankou_num = CLewaimaiString::UTF8ToUnicode(s_jinezhuaqu_setting_chuankou_num);
  53. CComHelper helper;
  54. std::vector<std::wstring> comVector = helper.getComPort();
  55. int i = 0;
  56. int nSelect = -1;
  57. for (std::vector<std::wstring>::iterator it = comVector.begin(); it != comVector.end(); it++)
  58. {
  59. CListLabelElementUI* elem = new CListLabelElementUI();
  60. elem->SetText((*it).c_str());
  61. com_com->Add(elem);
  62. if (*it == ws_jinezhuaqu_setting_chuankou_num)
  63. {
  64. nSelect = i;
  65. }
  66. i++;
  67. }
  68. com_com->SetInternVisible(true);
  69. com_com->SelectItem(nSelect, false, false);
  70. com_com->SetText(CLewaimaiString::UTF8ToUnicode(s_jinezhuaqu_setting_chuankou_num).c_str());
  71. //虚拟串口模式设置的初始化
  72. CComboUI* xuni_com_1 = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_1")));
  73. xuni_com_1->RemoveAll();
  74. CComboUI* xuni_com_2 = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_2")));
  75. xuni_com_2->RemoveAll();
  76. CComboUI* xuni_com_botelv = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_botelv")));
  77. //数据库中保存的之前的设置
  78. std::string s_system_setting_jinezhuaqu_setting_xunichuankou_num_1 = CSetting::GetParam("system_setting_jinezhuaqu_setting_xunichuankou_num_1");
  79. std::wstring ws_system_setting_jinezhuaqu_setting_xunichuankou_num_1 = CLewaimaiString::UTF8ToUnicode(s_system_setting_jinezhuaqu_setting_xunichuankou_num_1);
  80. std::string s_system_setting_jinezhuaqu_setting_xunichuankou_num_2 = CSetting::GetParam("system_setting_jinezhuaqu_setting_xunichuankou_num_2");
  81. std::wstring ws_system_setting_jinezhuaqu_setting_xunichuankou_num_2 = CLewaimaiString::UTF8ToUnicode(s_system_setting_jinezhuaqu_setting_xunichuankou_num_2);
  82. std::string s_system_setting_jinezhuaqu_setting_xunichuankou_botelv = CSetting::GetParam("system_setting_jinezhuaqu_setting_xunichuankou_botelv");
  83. std::wstring ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv = CLewaimaiString::UTF8ToUnicode(s_system_setting_jinezhuaqu_setting_xunichuankou_botelv);
  84. i = 0;
  85. nSelect = -1;
  86. for (std::vector<std::wstring>::iterator it = comVector.begin(); it != comVector.end(); it++)
  87. {
  88. CListLabelElementUI* elem = new CListLabelElementUI();
  89. elem->SetText((*it).c_str());
  90. xuni_com_1->Add(elem);
  91. if (*it == ws_system_setting_jinezhuaqu_setting_xunichuankou_num_1)
  92. {
  93. nSelect = i;
  94. }
  95. i++;
  96. }
  97. xuni_com_1->SetInternVisible(true);
  98. xuni_com_1->SelectItem(nSelect, false, false);
  99. xuni_com_1->SetText(CLewaimaiString::UTF8ToUnicode(s_system_setting_jinezhuaqu_setting_xunichuankou_num_1).c_str());
  100. i = 0;
  101. nSelect = -1;
  102. for (std::vector<std::wstring>::iterator it = comVector.begin(); it != comVector.end(); it++)
  103. {
  104. CListLabelElementUI* elem = new CListLabelElementUI();
  105. elem->SetText((*it).c_str());
  106. xuni_com_2->Add(elem);
  107. if (*it == ws_system_setting_jinezhuaqu_setting_xunichuankou_num_2)
  108. {
  109. nSelect = i;
  110. }
  111. i++;
  112. }
  113. xuni_com_2->SetInternVisible(true);
  114. xuni_com_2->SelectItem(nSelect, false, false);
  115. xuni_com_2->SetText(CLewaimaiString::UTF8ToUnicode(s_system_setting_jinezhuaqu_setting_xunichuankou_num_2).c_str());
  116. xuni_com_botelv->SetInternVisible(true);
  117. if (ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv == L"2400")
  118. {
  119. xuni_com_botelv->SelectItem(0, false, false);
  120. }
  121. else if (ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv == L"4800")
  122. {
  123. xuni_com_botelv->SelectItem(1, false, false);
  124. }
  125. else if (ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv == L"9600")
  126. {
  127. xuni_com_botelv->SelectItem(2, false, false);
  128. }
  129. else if (ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv == L"19200")
  130. {
  131. xuni_com_botelv->SelectItem(3, false, false);
  132. }
  133. else if (ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv == L"38400")
  134. {
  135. xuni_com_botelv->SelectItem(4, false, false);
  136. }
  137. else if (ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv == L"57600")
  138. {
  139. xuni_com_botelv->SelectItem(5, false, false);
  140. }
  141. else if (ws_system_setting_jinezhuaqu_setting_xunichuankou_botelv == L"115200")
  142. {
  143. xuni_com_botelv->SelectItem(6, false, false);
  144. }
  145. xuni_com_botelv->SetText(CLewaimaiString::UTF8ToUnicode(s_system_setting_jinezhuaqu_setting_xunichuankou_botelv).c_str());
  146. //窗口模式设置的初始化
  147. CComboUI* find_wnd_type = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_model")));
  148. CHorizontalLayoutUI* chazhao_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_select_value_layout")));
  149. CHorizontalLayoutUI* dingwei_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_dingwei_value_layout")));
  150. std::string system_setting_jinezhuaqu_setting_chuangkou_model = CSetting::GetParam("system_setting_jinezhuaqu_setting_chuangkou_model");
  151. if (system_setting_jinezhuaqu_setting_chuangkou_model == "1")
  152. {
  153. //查找金额模式
  154. chazhao_layout->SetVisible(true);
  155. dingwei_layout->SetVisible(false);
  156. find_wnd_type->SelectItem(0, false, false);
  157. }
  158. else
  159. {
  160. chazhao_layout->SetVisible(false);
  161. dingwei_layout->SetVisible(true);
  162. find_wnd_type->SelectItem(1, false, false);
  163. }
  164. }
  165. LRESULT CSystemSettingWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  166. {
  167. LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
  168. styleValue &= ~WS_CAPTION;
  169. ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  170. // 把自己的窗口句柄与窗口绘制管理器挂接在一起
  171. m_pm.Init(m_hWnd);
  172. //页面内有自定义控件的,必须要加这2个
  173. CDialogBuilder builder;
  174. CDialogBuilderCallbackEx cb;
  175. //m_pm.AddPreMessageFilter(this);
  176. CControlUI* pRoot = builder.Create(_T("system_setting.xml"), (UINT)0, &cb, &m_pm);
  177. ASSERT(pRoot && "Failed to parse XML");
  178. // 把这些控件绘制到本窗口上
  179. m_pm.AttachDialog(pRoot);
  180. // 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
  181. m_pm.AddNotifier(this);
  182. Init();
  183. return 0;
  184. }
  185. LRESULT CSystemSettingWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  186. {
  187. POINT pt;
  188. pt.x = GET_X_LPARAM(lParam);
  189. pt.y = GET_Y_LPARAM(lParam);
  190. ::ScreenToClient(*this, &pt);
  191. RECT rcClient;
  192. ::GetClientRect(*this, &rcClient);
  193. RECT rcCaption = m_pm.GetCaptionRect();
  194. if (pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
  195. && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
  196. {
  197. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
  198. if (pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0)
  199. {
  200. return HTCAPTION;
  201. }
  202. }
  203. return HTCLIENT;
  204. }
  205. LRESULT CSystemSettingWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  206. {
  207. SIZE szRoundCorner = m_pm.GetRoundCorner();
  208. if (!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
  209. {
  210. CDuiRect rcWnd;
  211. ::GetWindowRect(*this, &rcWnd);
  212. rcWnd.Offset(-rcWnd.left, -rcWnd.top);
  213. rcWnd.right++;
  214. rcWnd.bottom++;
  215. HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
  216. ::SetWindowRgn(*this, hRgn, TRUE);
  217. ::DeleteObject(hRgn);
  218. }
  219. bHandled = FALSE;
  220. return 0;
  221. }
  222. LRESULT CSystemSettingWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  223. {
  224. LRESULT lRes = 0;
  225. BOOL bHandled = TRUE;
  226. switch (uMsg)
  227. {
  228. case WM_CREATE:
  229. lRes = OnCreate(uMsg, wParam, lParam, bHandled);
  230. break;
  231. case WM_NCACTIVATE:
  232. lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
  233. break;
  234. case WM_NCCALCSIZE:
  235. lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
  236. break;
  237. case WM_NCPAINT:
  238. lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
  239. break;
  240. case WM_NCHITTEST:
  241. lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
  242. break;
  243. case WM_SIZE:
  244. lRes = OnSize(uMsg, wParam, lParam, bHandled);
  245. break;
  246. default:
  247. bHandled = FALSE;
  248. }
  249. if (bHandled)
  250. {
  251. return lRes;
  252. }
  253. if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
  254. {
  255. return lRes;
  256. }
  257. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  258. }
  259. LRESULT CSystemSettingWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled)
  260. {
  261. if (uMsg == WM_KEYDOWN)
  262. {
  263. if (wParam == VK_RETURN)
  264. {
  265. return true;
  266. }
  267. else if (wParam == VK_ESCAPE)
  268. {
  269. return true;
  270. }
  271. }
  272. return false;
  273. }
  274. void CSystemSettingWnd::Notify(TNotifyUI& msg)
  275. {
  276. if (msg.sType == _T("windowinit"))
  277. {
  278. OnPrepare();
  279. }
  280. else if (msg.sType == _T("click"))
  281. {
  282. HandleClickMsg(msg);
  283. }
  284. else if (msg.sType == _T("selectchanged"))
  285. {
  286. HandleSelectChangeMsg(msg);
  287. }
  288. else if (msg.sType == _T("itemclick"))
  289. {
  290. }
  291. else if (msg.sType == _T("itemactivate"))
  292. {
  293. }
  294. else if (msg.sType == _T("itemselect"))
  295. {
  296. HandleItemSelectMsg(msg);
  297. }
  298. }
  299. void CSystemSettingWnd::HandleClickMsg(TNotifyUI& msg)
  300. {
  301. DuiLib::CDuiString senderName = msg.pSender->GetName();
  302. if (senderName == _T("system_setting_closebtn"))
  303. {
  304. Close(IDCANCEL);
  305. return;
  306. }
  307. else if (senderName == _T("jinezhuaqu_setting_chuangkou_select_value_search"))
  308. {
  309. CEditUI* value = static_cast<CEditUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_select_value")));
  310. std::wstring search_value = value->GetText();
  311. FindValueWnd(search_value);
  312. }
  313. else if (senderName == _T("jinezhuaqu_setting_chuangkou_dingwei_value_btn"))
  314. {
  315. //点这个按钮之后,开始搜索窗口
  316. m_valueWnd->StartDingweiWnd();
  317. }
  318. else if (senderName == _T("jinezhuaqu_setting_save"))
  319. {
  320. //首先保存截取模式
  321. CSetting::SetParam("system_setting_jinezhuaqu_setting_type", to_string(m_nType).c_str(), false);
  322. if (m_nType == 1)
  323. {
  324. //保存串口参数
  325. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuankou_num")));
  326. wstring com_name = com->GetText();
  327. CSetting::SetParam("system_setting_jinezhuaqu_setting_chuankou_num", CLewaimaiString::UnicodeToUTF8(com_name));
  328. }
  329. else if (m_nType == 2)
  330. {
  331. //保存虚拟串口参数
  332. CComboUI* com_1 = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_1")));
  333. wstring com_name_1 = com_1->GetText();
  334. CSetting::SetParam("system_setting_jinezhuaqu_setting_xunichuankou_num_1", CLewaimaiString::UnicodeToUTF8(com_name_1));
  335. CComboUI* com_2 = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_2")));
  336. wstring com_name_2 = com_2->GetText();
  337. CSetting::SetParam("system_setting_jinezhuaqu_setting_xunichuankou_num_2", CLewaimaiString::UnicodeToUTF8(com_name_2));
  338. CComboUI* com_botelv = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_botelv")));
  339. wstring com_name_botelv = com_botelv->GetText();
  340. CSetting::SetParam("system_setting_jinezhuaqu_setting_xunichuankou_botelv", CLewaimaiString::UnicodeToUTF8(com_name_botelv));
  341. }
  342. else if (m_nType == 3)
  343. {
  344. //保存窗口监听的参数
  345. if (g_valuewnd_vector.size() == 0)
  346. {
  347. //没有合适的窗口
  348. MessageBox(m_hWnd, _T("没有找到合适的窗口,无法保存"), _T("提示"), MB_OK);
  349. return;
  350. }
  351. else
  352. {
  353. //找到合适的窗口了
  354. ValueWnd newWnd = g_valuewnd_vector[0];
  355. CSetting::SetParam("system_setting_jinezhuaqu_setting_chuangkou_process_name", CLewaimaiString::UnicodeToUTF8(newWnd.processName));
  356. CSetting::SetParam("system_setting_jinezhuaqu_setting_chuangkou_title", newWnd.wndTitle);
  357. CSetting::SetParam("system_setting_jinezhuaqu_setting_chuangkou_zorder", to_string(newWnd.z_order));
  358. CComboUI* find_wnd_type = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_model")));
  359. if (find_wnd_type->GetCurSel() == 0)
  360. {
  361. CSetting::SetParam("system_setting_jinezhuaqu_setting_chuangkou_model", "1");
  362. }
  363. else
  364. {
  365. CSetting::SetParam("system_setting_jinezhuaqu_setting_chuangkou_model", "2");
  366. }
  367. }
  368. }
  369. //给监视窗口发个消息
  370. m_valueWnd->RestartWatch();
  371. }
  372. }
  373. void CSystemSettingWnd::HandleSelectChangeMsg(TNotifyUI& msg)
  374. {
  375. CDuiString name = msg.pSender->GetName();
  376. //先判断主页面的tab
  377. if (name == _T("system_setting_option_zhuaqu"))
  378. {
  379. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  380. if (pControl && pControl->GetCurSel() != 0)
  381. {
  382. pControl->SelectItem(0);
  383. }
  384. }
  385. else if (name == _T("system_setting_option_about"))
  386. {
  387. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  388. if (pControl && pControl->GetCurSel() != 1)
  389. {
  390. pControl->SelectItem(1);
  391. }
  392. }
  393. else if (name == _T("jinezhuaqu_setting_chuankou"))
  394. {
  395. CHorizontalLayoutUI* com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuankou_num_layout")));
  396. CHorizontalLayoutUI* xuni_com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_layout")));
  397. CHorizontalLayoutUI* chuangkou_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_layout")));
  398. com_layout->SetVisible(true);
  399. xuni_com_layout->SetVisible(false);
  400. chuangkou_layout->SetVisible(false);
  401. m_nType = 1;
  402. }
  403. else if (name == _T("jinezhuaqu_setting_xunichuankou"))
  404. {
  405. CHorizontalLayoutUI* com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuankou_num_layout")));
  406. CHorizontalLayoutUI* xuni_com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_layout")));
  407. CHorizontalLayoutUI* chuangkou_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_layout")));
  408. com_layout->SetVisible(false);
  409. xuni_com_layout->SetVisible(true);
  410. chuangkou_layout->SetVisible(false);
  411. m_nType = 2;
  412. }
  413. else if (name == _T("jinezhuaqu_setting_chuangkou"))
  414. {
  415. CHorizontalLayoutUI* com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuankou_num_layout")));
  416. CHorizontalLayoutUI* xuni_com_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_xunichuankou_num_layout")));
  417. CHorizontalLayoutUI* chuangkou_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_layout")));
  418. com_layout->SetVisible(false);
  419. xuni_com_layout->SetVisible(false);
  420. chuangkou_layout->SetVisible(true);
  421. m_nType = 3;
  422. }
  423. }
  424. void CSystemSettingWnd::HandleItemSelectMsg(TNotifyUI& msg)
  425. {
  426. CDuiString name = msg.pSender->GetName();
  427. if (name == _T("jinezhuaqu_setting_chuangkou_model"))
  428. {
  429. CHorizontalLayoutUI* chazhao_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_select_value_layout")));
  430. CHorizontalLayoutUI* dingwei_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_dingwei_value_layout")));
  431. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_model")));
  432. if (com->GetCurSel() == 0)
  433. {
  434. //查找金额模式
  435. chazhao_layout->SetVisible(true);
  436. dingwei_layout->SetVisible(false);
  437. CSetting::SetParam("setting_printer_guige", "1");
  438. }
  439. else
  440. {
  441. chazhao_layout->SetVisible(false);
  442. dingwei_layout->SetVisible(true);
  443. CSetting::SetParam("setting_printer_guige", "2");
  444. }
  445. }
  446. }
  447. void CSystemSettingWnd::FindValueWnd(std::wstring value)
  448. {
  449. g_valuewnd_vector.clear();
  450. //先查找子窗口
  451. EnumWindows(EnumWindowsProc, (LPARAM)(&value));
  452. //展示查找结果
  453. int nCount = (int)g_valuewnd_vector.size();
  454. CHorizontalLayoutUI* result_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_select_value_search_result_layout")));
  455. result_layout->SetVisible(true);
  456. CLabelUI* result_label = static_cast<CLabelUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_select_value_search_result")));
  457. std::wstring result = L"共找到 " + to_wstring(nCount) + L" 个窗口";
  458. result_label->SetText(result.c_str());
  459. }
  460. void CSystemSettingWnd::FindDingweiWnd(HWND hWnd)
  461. {
  462. g_valuewnd_vector.clear();
  463. //先查找子窗口
  464. EnumWindows(EnumWindowsDingweiProc, (LPARAM)(hWnd));
  465. }
  466. void CSystemSettingWnd::SetDingweiWnd(std::wstring value, HWND hWnd)
  467. {
  468. std::string s_value = CLewaimaiString::UnicodeToUTF8(value);
  469. if (s_value == "" || !atof(s_value.c_str()))
  470. {
  471. CEditUI* dingwei_value_edit = static_cast<CEditUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_dingwei_value")));
  472. dingwei_value_edit->SetText(L"无有效金额");
  473. hWnd = NULL;
  474. }
  475. else
  476. {
  477. CEditUI* dingwei_value_edit = static_cast<CEditUI*>(m_pm.FindControl(_T("jinezhuaqu_setting_chuangkou_dingwei_value")));
  478. std::wstring info = L"有效金额:" + value + L" 元";
  479. dingwei_value_edit->SetText(info.c_str());
  480. }
  481. m_DingweiWnd = hWnd;
  482. if (m_DingweiWnd == NULL)
  483. {
  484. return;
  485. }
  486. //找到定位的窗口的位置信息
  487. FindDingweiWnd(m_DingweiWnd);
  488. }