CMainWnd.cpp 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099
  1. #include "../pch/pch.h"
  2. #include "CMainWnd.h"
  3. #include "../control/ControlEx.h"
  4. #include "../control/CWaimaiOrderInfoUI.h"
  5. #include "../tool/CSetting.h"
  6. void CMainWnd::Init()
  7. {
  8. m_pCloseBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("closebtn")));
  9. m_pMaxBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("maxbtn")));
  10. m_pRestoreBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("restorebtn")));
  11. m_pMinBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("minbtn")));
  12. }
  13. LRESULT CMainWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  14. {
  15. LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
  16. styleValue &= ~WS_CAPTION;
  17. ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  18. m_pm.Init(m_hWnd);
  19. CDialogBuilder builder;
  20. CDialogBuilderCallbackEx cb;
  21. CControlUI* pRoot = builder.Create(_T("main.xml"), (UINT)0, &cb, &m_pm);
  22. ASSERT(pRoot && "Failed to parse XML");
  23. m_pm.AttachDialog(pRoot);
  24. m_pm.AddNotifier(this);
  25. Init();
  26. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  27. orderlist->Refresh();
  28. //初始化设置中心的状态
  29. InitSettingStatus();
  30. return 0;
  31. }
  32. void CMainWnd::Notify(TNotifyUI& msg)
  33. {
  34. if(msg.sType == _T("windowinit"))
  35. {
  36. OnPrepare();
  37. }
  38. else if(msg.sType == _T("click"))
  39. {
  40. HandleClickMsg(msg);
  41. }
  42. else if(msg.sType == _T("selectchanged"))
  43. {
  44. HandleSelectChangeMsg(msg);
  45. }
  46. else if(msg.sType == _T("itemclick"))
  47. {
  48. }
  49. else if(msg.sType == _T("itemactivate"))
  50. {
  51. }
  52. else if(msg.sType == _T("itemselect"))
  53. {
  54. HandleItemSelectMsg(msg);
  55. }
  56. }
  57. void CMainWnd::HandleClickMsg(TNotifyUI& msg)
  58. {
  59. if(msg.pSender == m_pCloseBtn)
  60. {
  61. COptionUI* pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("hallswitch")));
  62. if(pControl && pControl->IsSelected() == false)
  63. {
  64. CControlUI* pFadeControl = m_pm.FindControl(_T("fadeEffect"));
  65. if(pFadeControl)
  66. {
  67. pFadeControl->SetVisible(true);
  68. }
  69. }
  70. else
  71. {
  72. /*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
  73. }
  74. return;
  75. }
  76. else if(msg.pSender == m_pMinBtn)
  77. {
  78. SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
  79. return;
  80. }
  81. else if(msg.pSender == m_pMaxBtn)
  82. {
  83. SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0);
  84. return;
  85. }
  86. else if(msg.pSender == m_pRestoreBtn)
  87. {
  88. SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0);
  89. return;
  90. }
  91. CDuiString name = msg.pSender->GetName();
  92. if(name == _T("quitbtn"))
  93. {
  94. /*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
  95. }
  96. else if(name == _T("waimai_order_list_print"))
  97. {
  98. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  99. std::string waimai_order_id = item->getOrderID();
  100. std::string waimai_order_no = item->getOrderNo();
  101. CWaimaiOrder order;
  102. order.InitData(waimai_order_id, waimai_order_no);
  103. CPosPrinter printer;
  104. printer.PrintWaimaiOrder(order);
  105. }
  106. else if(name == _T("waimai_order_list_confirme"))
  107. {
  108. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  109. std::string waimai_order_id = item->getOrderID();
  110. CWaimaiOrder order;
  111. bool ret = order.ConfirmeOrder(waimai_order_id);
  112. if(ret)
  113. {
  114. //如果确认成功,将被确认的订单删除掉
  115. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  116. int index = orderlist->GetItemIndex(item);
  117. orderlist->RemoveAt(index);
  118. }
  119. }
  120. else if(name == _T("waimai_order_list_success"))
  121. {
  122. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  123. std::string waimai_order_id = item->getOrderID();
  124. CWaimaiOrder order;
  125. bool ret = order.SuccessOrder(waimai_order_id);
  126. if(ret)
  127. {
  128. //如果确认成功,将被确认的订单删除掉
  129. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  130. int index = orderlist->GetItemIndex(item);
  131. orderlist->RemoveAt(index);
  132. }
  133. }
  134. else if(name == _T("waimai_order_list_fail"))
  135. {
  136. //外卖订单的打印
  137. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  138. std::string waimai_order_id = item->getOrderID();
  139. CWaimaiOrder order;
  140. bool ret = order.FailOrder(waimai_order_id, "windows收银机测试");
  141. if(ret)
  142. {
  143. //如果设为失败成功,将被设为失败的订单删除掉
  144. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  145. int index = orderlist->GetItemIndex(item);
  146. orderlist->RemoveAt(index);
  147. }
  148. }
  149. else if(name == _T("waimai_order_list_agree"))
  150. {
  151. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  152. std::string waimai_order_id = item->getOrderID();
  153. CWaimaiOrder order;
  154. bool ret = order.AgreeRefund(waimai_order_id);
  155. if(ret)
  156. {
  157. //同意退款之后,订单变为失败状态
  158. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  159. int index = orderlist->GetItemIndex(item);
  160. orderlist->RemoveAt(index);
  161. }
  162. }
  163. else if(name == _T("waimai_order_list_disagree"))
  164. {
  165. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  166. std::string waimai_order_id = item->getOrderID();
  167. CWaimaiOrder order;
  168. bool ret = order.DisagreeRefund(waimai_order_id);
  169. if(ret)
  170. {
  171. //不同意退款,订单还是退款中,等待第三方客服处理
  172. //OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  173. //int index = orderlist->GetItemIndex(item);
  174. //orderlist->RemoveAt(index);
  175. }
  176. }
  177. else if(name == _T("waimai_order_list_info"))
  178. {
  179. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  180. std::string waimai_order_id = item->getOrderID();
  181. std::string waimai_order_no = item->getOrderNo();
  182. //请求服务器,获取订单数据
  183. CWaimaiOrder order;
  184. order.InitData(waimai_order_id, waimai_order_no);
  185. //刷新订单详情页数据
  186. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  187. order_info_page->SetDate(order);
  188. order_info_page->Refresh(order);
  189. //显示订单详情页的内容
  190. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  191. if(pControl && pControl->GetCurSel() != 1)
  192. {
  193. pControl->SelectItem(1);
  194. }
  195. }
  196. else if(name == _T("waimai_order_list_last"))
  197. {
  198. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  199. orderlist->LastPage();
  200. }
  201. else if(name == _T("waimai_order_list_next"))
  202. {
  203. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  204. orderlist->NextPage();
  205. }
  206. else if(name == _T("waimai_order_list_refresh"))
  207. {
  208. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  209. orderlist->Refresh();
  210. }
  211. else if(name == _T("waimai_order_info_page_return"))
  212. {
  213. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  214. if(pControl && pControl->GetCurSel() != 0)
  215. {
  216. pControl->SelectItem(0);
  217. }
  218. //刷新当前列表
  219. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  220. orderlist->Refresh();
  221. }
  222. else if(name == _T("waimai_order_info_page_print"))
  223. {
  224. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  225. CPosPrinter printer;
  226. printer.PrintWaimaiOrder(order_info_page->m_order);
  227. }
  228. else if(name == _T("waimai_order_info_page_confirme"))
  229. {
  230. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  231. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  232. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  233. CWaimaiOrder order;
  234. bool ret = order.ConfirmeOrder(waimai_order_id);
  235. if(ret)
  236. {
  237. //确认成功,这里怎么处理
  238. //请求服务器,获取订单数据
  239. CWaimaiOrder new_order;
  240. new_order.InitData(waimai_order_id, waimai_order_no);
  241. //刷新订单详情页数据
  242. order_info_page->SetDate(new_order);
  243. order_info_page->Refresh(new_order);
  244. }
  245. }
  246. else if(name == _T("waimai_order_info_page_success"))
  247. {
  248. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  249. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  250. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  251. CWaimaiOrder order;
  252. bool ret = order.SuccessOrder(waimai_order_id);
  253. if(ret)
  254. {
  255. //订单设为成功,这里怎么处理
  256. //请求服务器,获取订单数据
  257. CWaimaiOrder new_order;
  258. new_order.InitData(waimai_order_id, waimai_order_no);
  259. //刷新订单详情页数据
  260. order_info_page->SetDate(new_order);
  261. order_info_page->Refresh(new_order);
  262. }
  263. }
  264. else if(name == _T("waimai_order_info_page_fail"))
  265. {
  266. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  267. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  268. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  269. CWaimaiOrder order;
  270. bool ret = order.FailOrder(waimai_order_id, "Windwos收银机测试");
  271. if(ret)
  272. {
  273. //订单设为失败,这里怎么处理
  274. //请求服务器,获取订单数据
  275. CWaimaiOrder new_order;
  276. new_order.InitData(waimai_order_id, waimai_order_no);
  277. //刷新订单详情页数据
  278. order_info_page->SetDate(new_order);
  279. order_info_page->Refresh(new_order);
  280. }
  281. }
  282. else if(name == _T("waimai_order_info_page_agree"))
  283. {
  284. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  285. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  286. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  287. CWaimaiOrder order;
  288. bool ret = order.AgreeRefund(waimai_order_id);
  289. if(ret)
  290. {
  291. //订单设为成功,这里怎么处理
  292. //请求服务器,获取订单数据
  293. CWaimaiOrder new_order;
  294. new_order.InitData(waimai_order_id, waimai_order_no);
  295. //刷新订单详情页数据
  296. order_info_page->SetDate(new_order);
  297. order_info_page->Refresh(new_order);
  298. }
  299. }
  300. else if(name == _T("waimai_order_info_page_disagree"))
  301. {
  302. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  303. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  304. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  305. CWaimaiOrder order;
  306. bool ret = order.DisagreeRefund(waimai_order_id);
  307. if(ret)
  308. {
  309. //订单设为成功,这里怎么处理
  310. //请求服务器,获取订单数据
  311. CWaimaiOrder new_order;
  312. new_order.InitData(waimai_order_id, waimai_order_no);
  313. //刷新订单详情页数据
  314. order_info_page->SetDate(new_order);
  315. order_info_page->Refresh(new_order);
  316. }
  317. }
  318. //开始处理设置页面的
  319. else if(name == _T("setting_is_new_waimai_voice"))
  320. {
  321. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_voice")));
  322. //注意这里的IsSelected如果为true,表示的是点击前为true,而不是点击后为true,所以这里设置状态要反过来
  323. if(box->IsSelected())
  324. {
  325. CSetting::SetParam("setting_is_new_waimai_voice", "0");
  326. }
  327. else
  328. {
  329. CSetting::SetParam("setting_is_new_waimai_voice", "1");
  330. }
  331. }
  332. else if(name == _T("setting_is_new_waimai_autoconfirm"))
  333. {
  334. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_autoconfirm")));
  335. if(box->IsSelected())
  336. {
  337. CSetting::SetParam("setting_is_new_waimai_autoconfirm", "0");
  338. }
  339. else
  340. {
  341. CSetting::SetParam("setting_is_new_waimai_autoconfirm", "1");
  342. }
  343. }
  344. else if(name == _T("setting_is_new_waimai_dialog"))
  345. {
  346. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_dialog")));
  347. if(box->IsSelected())
  348. {
  349. CSetting::SetParam("setting_is_new_waimai_dialog", "0");
  350. }
  351. else
  352. {
  353. CSetting::SetParam("setting_is_new_waimai_dialog", "1");
  354. }
  355. }
  356. else if(name == _T("setting_is_new_waimai_printer"))
  357. {
  358. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_printer")));
  359. if(box->IsSelected())
  360. {
  361. CSetting::SetParam("setting_is_new_waimai_printer", "0");
  362. }
  363. else
  364. {
  365. CSetting::SetParam("setting_is_new_waimai_printer", "1");
  366. }
  367. }
  368. else if(name == _T("setting_is_new_waimai_chufang_printer"))
  369. {
  370. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_chufang_printer")));
  371. if(box->IsSelected())
  372. {
  373. CSetting::SetParam("setting_is_new_waimai_chufang_printer", "0");
  374. }
  375. else
  376. {
  377. CSetting::SetParam("setting_is_new_waimai_chufang_printer", "1");
  378. }
  379. }
  380. else if(name == _T("setting_is_auto_start"))
  381. {
  382. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_start")));
  383. if(box->IsSelected())
  384. {
  385. CSetting::SetParam("setting_is_auto_start", "0");
  386. }
  387. else
  388. {
  389. CSetting::SetParam("setting_is_auto_start", "1");
  390. }
  391. }
  392. else if(name == _T("setting_is_auto_login"))
  393. {
  394. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_login")));
  395. if(box->IsSelected())
  396. {
  397. CSetting::SetParam("setting_is_auto_login", "0");
  398. }
  399. else
  400. {
  401. CSetting::SetParam("setting_is_auto_login", "1");
  402. }
  403. }
  404. else if(name == _T("setting_is_close_min"))
  405. {
  406. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_close_min")));
  407. if(box->IsSelected())
  408. {
  409. CSetting::SetParam("setting_is_close_min", "0");
  410. }
  411. else
  412. {
  413. CSetting::SetParam("setting_is_close_min", "1");
  414. }
  415. }
  416. }
  417. void CMainWnd::HandleSelectChangeMsg(TNotifyUI& msg)
  418. {
  419. CDuiString name = msg.pSender->GetName();
  420. //先判断主页面的tab
  421. if(name == _T("main_waimai"))
  422. {
  423. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  424. if(pControl && pControl->GetCurSel() != 0)
  425. {
  426. pControl->SelectItem(0);
  427. }
  428. }
  429. else if(name == _T("main_setting"))
  430. {
  431. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  432. if(pControl && pControl->GetCurSel() != 2)
  433. {
  434. pControl->SelectItem(2);
  435. }
  436. }
  437. else if(name == _T("main_contact"))
  438. {
  439. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  440. if(pControl && pControl->GetCurSel() != 3)
  441. {
  442. pControl->SelectItem(3);
  443. }
  444. }
  445. //判断外卖的tab
  446. else if(name == _T("waimai_open_switch") || name == _T("waimai_confirmed_switch") || name == _T("waimai_delivery_switch") || name == _T("waimai_success_switch") || name == _T("waimai_fail_switch") || name == _T("waimai_cancel_switch") || name == _T("waimai_refund_switch"))
  447. {
  448. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  449. //切换状态全部重新开始从第1页
  450. orderlist->SetPage(1);
  451. if(name == _T("waimai_open_switch"))
  452. {
  453. orderlist->SetStatus(1);
  454. }
  455. else if(name == _T("waimai_confirmed_switch"))
  456. {
  457. orderlist->SetStatus(2);
  458. }
  459. else if(name == _T("waimai_delivery_switch"))
  460. {
  461. orderlist->SetStatus(3);
  462. }
  463. else if(name == _T("waimai_success_switch"))
  464. {
  465. orderlist->SetStatus(4);
  466. }
  467. else if(name == _T("waimai_fail_switch"))
  468. {
  469. orderlist->SetStatus(5);
  470. }
  471. else if(name == _T("waimai_cancel_switch"))
  472. {
  473. orderlist->SetStatus(6);
  474. }
  475. else if(name == _T("waimai_refund_switch"))
  476. {
  477. orderlist->SetStatus(7);
  478. }
  479. orderlist->Refresh();
  480. }
  481. //判断设置中心的tab
  482. else if(name == _T("setting_waimai_order_switch"))
  483. {
  484. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  485. pControl->SelectItem(0);
  486. }
  487. else if(name == _T("setting_printer_switch"))
  488. {
  489. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  490. pControl->SelectItem(1);
  491. }
  492. else if(name == _T("setting_chufang_printer_switch"))
  493. {
  494. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  495. pControl->SelectItem(2);
  496. }
  497. else if(name == _T("setting_system_switch"))
  498. {
  499. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  500. pControl->SelectItem(3);
  501. }
  502. else if(name == _T("setting_system_update"))
  503. {
  504. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  505. pControl->SelectItem(4);
  506. }
  507. }
  508. void CMainWnd::HandleItemSelectMsg(TNotifyUI& msg)
  509. {
  510. CDuiString name = msg.pSender->GetName();
  511. if(name == _T("setting_printer_guige"))
  512. {
  513. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_guige")));
  514. if(com->GetCurSel() == 0)
  515. {
  516. CSetting::SetParam("setting_printer_guige", "58");
  517. }
  518. else
  519. {
  520. CSetting::SetParam("setting_printer_guige", "80");
  521. }
  522. }
  523. else if(name == _T("setting_printer_lianshu"))
  524. {
  525. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_lianshu")));
  526. if(com->GetCurSel() == 0)
  527. {
  528. CSetting::SetParam("setting_printer_lianshu", "1");
  529. }
  530. else if(com->GetCurSel() == 1)
  531. {
  532. CSetting::SetParam("setting_printer_lianshu", "2");
  533. }
  534. else if(com->GetCurSel() == 2)
  535. {
  536. CSetting::SetParam("setting_printer_lianshu", "3");
  537. }
  538. else if(com->GetCurSel() == 3)
  539. {
  540. CSetting::SetParam("setting_printer_lianshu", "4");
  541. }
  542. }
  543. else if(name == _T("setting_chufang_printer_guige"))
  544. {
  545. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_chufang_printer_guige")));
  546. if(com->GetCurSel() == 0)
  547. {
  548. CSetting::SetParam("setting_chufang_printer_guige", "58");
  549. }
  550. else
  551. {
  552. CSetting::SetParam("setting_chufang_printer_guige", "80");
  553. }
  554. }
  555. }
  556. LRESULT CMainWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  557. {
  558. LRESULT lRes = 0;
  559. BOOL bHandled = TRUE;
  560. switch(uMsg)
  561. {
  562. case WM_CREATE:
  563. lRes = OnCreate(uMsg, wParam, lParam, bHandled);
  564. break;
  565. case WM_CLOSE:
  566. lRes = OnClose(uMsg, wParam, lParam, bHandled);
  567. break;
  568. case WM_DESTROY:
  569. lRes = OnDestroy(uMsg, wParam, lParam, bHandled);
  570. break;
  571. case WM_NCACTIVATE:
  572. lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
  573. break;
  574. case WM_NCCALCSIZE:
  575. lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
  576. break;
  577. case WM_NCPAINT:
  578. lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
  579. break;
  580. case WM_NCHITTEST:
  581. lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
  582. break;
  583. case WM_SIZE:
  584. lRes = OnSize(uMsg, wParam, lParam, bHandled);
  585. break;
  586. case WM_GETMINMAXINFO:
  587. lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled);
  588. break;
  589. case WM_SYSCOMMAND:
  590. lRes = OnSysCommand(uMsg, wParam, lParam, bHandled);
  591. break;
  592. default:
  593. bHandled = FALSE;
  594. }
  595. if(bHandled)
  596. {
  597. return lRes;
  598. }
  599. if(m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
  600. {
  601. return lRes;
  602. }
  603. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  604. }
  605. LRESULT CMainWnd::OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  606. {
  607. // 有时会在收到WM_NCDESTROY后收到wParam为SC_CLOSE的WM_SYSCOMMAND
  608. if(wParam == SC_CLOSE)
  609. {
  610. ::PostQuitMessage(0L);
  611. bHandled = TRUE;
  612. return 0;
  613. }
  614. BOOL bZoomed = ::IsZoomed(*this);
  615. LRESULT lRes = CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  616. if(::IsZoomed(*this) != bZoomed)
  617. {
  618. if(!bZoomed)
  619. {
  620. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
  621. if(pControl)
  622. {
  623. pControl->SetVisible(false);
  624. }
  625. pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
  626. if(pControl)
  627. {
  628. pControl->SetVisible(true);
  629. }
  630. }
  631. else
  632. {
  633. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
  634. if(pControl)
  635. {
  636. pControl->SetVisible(true);
  637. }
  638. pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
  639. if(pControl)
  640. {
  641. pControl->SetVisible(false);
  642. }
  643. }
  644. }
  645. return lRes;
  646. }
  647. LRESULT CMainWnd::OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  648. {
  649. int primaryMonitorWidth = ::GetSystemMetrics(SM_CXSCREEN);
  650. int primaryMonitorHeight = ::GetSystemMetrics(SM_CYSCREEN);
  651. MONITORINFO oMonitor = {};
  652. oMonitor.cbSize = sizeof(oMonitor);
  653. ::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor);
  654. CDuiRect rcWork = oMonitor.rcWork;
  655. rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
  656. if(rcWork.right > primaryMonitorWidth)
  657. {
  658. rcWork.right = primaryMonitorWidth;
  659. }
  660. if(rcWork.bottom > primaryMonitorHeight)
  661. {
  662. rcWork.right = primaryMonitorHeight;
  663. }
  664. LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
  665. lpMMI->ptMaxPosition.x = rcWork.left;
  666. lpMMI->ptMaxPosition.y = rcWork.top;
  667. lpMMI->ptMaxSize.x = rcWork.right;
  668. lpMMI->ptMaxSize.y = rcWork.bottom;
  669. bHandled = FALSE;
  670. return 0;
  671. }
  672. LRESULT CMainWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  673. {
  674. SIZE szRoundCorner = m_pm.GetRoundCorner();
  675. if(!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
  676. {
  677. CDuiRect rcWnd;
  678. ::GetWindowRect(*this, &rcWnd);
  679. rcWnd.Offset(-rcWnd.left, -rcWnd.top);
  680. rcWnd.right++;
  681. rcWnd.bottom++;
  682. HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
  683. ::SetWindowRgn(*this, hRgn, TRUE);
  684. ::DeleteObject(hRgn);
  685. }
  686. bHandled = FALSE;
  687. return 0;
  688. }
  689. LRESULT CMainWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  690. {
  691. POINT pt;
  692. pt.x = GET_X_LPARAM(lParam);
  693. pt.y = GET_Y_LPARAM(lParam);
  694. ::ScreenToClient(*this, &pt);
  695. RECT rcClient;
  696. ::GetClientRect(*this, &rcClient);
  697. if(!::IsZoomed(*this))
  698. {
  699. RECT rcSizeBox = m_pm.GetSizeBox();
  700. if(pt.y < rcClient.top + rcSizeBox.top)
  701. {
  702. if(pt.x < rcClient.left + rcSizeBox.left)
  703. {
  704. return HTTOPLEFT;
  705. }
  706. if(pt.x > rcClient.right - rcSizeBox.right)
  707. {
  708. return HTTOPRIGHT;
  709. }
  710. return HTTOP;
  711. }
  712. else if(pt.y > rcClient.bottom - rcSizeBox.bottom)
  713. {
  714. if(pt.x < rcClient.left + rcSizeBox.left)
  715. {
  716. return HTBOTTOMLEFT;
  717. }
  718. if(pt.x > rcClient.right - rcSizeBox.right)
  719. {
  720. return HTBOTTOMRIGHT;
  721. }
  722. return HTBOTTOM;
  723. }
  724. if(pt.x < rcClient.left + rcSizeBox.left)
  725. {
  726. return HTLEFT;
  727. }
  728. if(pt.x > rcClient.right - rcSizeBox.right)
  729. {
  730. return HTRIGHT;
  731. }
  732. }
  733. RECT rcCaption = m_pm.GetCaptionRect();
  734. if(pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
  735. && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
  736. {
  737. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
  738. if(pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0 &&
  739. _tcscmp(pControl->GetClass(), DUI_CTR_OPTION) != 0 &&
  740. _tcscmp(pControl->GetClass(), DUI_CTR_TEXT) != 0)
  741. {
  742. return HTCAPTION;
  743. }
  744. }
  745. return HTCLIENT;
  746. }
  747. void CMainWnd::InitSettingStatus()
  748. {
  749. CCheckBoxUI* box = NULL;
  750. CComboUI* com = NULL;
  751. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_voice")));
  752. if(CSetting::GetParam("setting_is_new_waimai_voice") == "1")
  753. {
  754. box->Selected(true, false);
  755. }
  756. else
  757. {
  758. box->Selected(false, false);
  759. }
  760. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_autoconfirm")));
  761. if(CSetting::GetParam("setting_is_new_waimai_autoconfirm") == "1")
  762. {
  763. box->Selected(true, false);
  764. }
  765. else
  766. {
  767. box->Selected(false, false);
  768. }
  769. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_dialog")));
  770. if(CSetting::GetParam("setting_is_new_waimai_dialog") == "1")
  771. {
  772. box->Selected(true, false);
  773. }
  774. else
  775. {
  776. box->Selected(false, false);
  777. }
  778. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_printer")));
  779. if(CSetting::GetParam("setting_is_new_waimai_printer") == "1")
  780. {
  781. box->Selected(true, false);
  782. }
  783. else
  784. {
  785. box->Selected(false, false);
  786. }
  787. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_guige")));
  788. if(CSetting::GetParam("setting_printer_guige") == "58")
  789. {
  790. com->SetInternVisible(true);
  791. com->SelectItem(0, false, false);
  792. }
  793. else
  794. {
  795. com->SetInternVisible(true);
  796. com->SelectItem(1, false, false);
  797. }
  798. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_lianshu")));
  799. std::string setting_printer_lianshu = CSetting::GetParam("setting_printer_lianshu");
  800. if(setting_printer_lianshu == "1")
  801. {
  802. com->SetInternVisible(true);
  803. com->SelectItem(0, false, false);
  804. com->SetText(L"1联");
  805. }
  806. else if(setting_printer_lianshu == "2")
  807. {
  808. com->SetInternVisible(true);
  809. com->SelectItem(1, false, false);
  810. com->SetText(L"2联");
  811. }
  812. else if(setting_printer_lianshu == "3")
  813. {
  814. com->SetInternVisible(true);
  815. com->SelectItem(2, false, false);
  816. com->SetText(L"3联");
  817. }
  818. else if(setting_printer_lianshu == "4")
  819. {
  820. com->SetInternVisible(true);
  821. com->SelectItem(3, false, false);
  822. com->SetText(L"4联");
  823. }
  824. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_chufang_printer")));
  825. if(CSetting::GetParam("setting_is_new_waimai_chufang_printer") == "1")
  826. {
  827. box->Selected(true, false);
  828. }
  829. else
  830. {
  831. box->Selected(false, false);
  832. }
  833. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_chufang_printer_guige")));
  834. if(CSetting::GetParam("setting_chufang_printer_guige") == "58")
  835. {
  836. com->SetInternVisible(true);
  837. com->SelectItem(0, false, false);
  838. }
  839. else
  840. {
  841. com->SetInternVisible(true);
  842. com->SelectItem(1, false, false);
  843. }
  844. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_start")));
  845. if(CSetting::GetParam("setting_is_auto_start") == "1")
  846. {
  847. box->Selected(true, false);
  848. }
  849. else
  850. {
  851. box->Selected(false, false);
  852. }
  853. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_login")));
  854. if(CSetting::GetParam("setting_is_auto_login") == "1")
  855. {
  856. box->Selected(true, false);
  857. }
  858. else
  859. {
  860. box->Selected(false, false);
  861. }
  862. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_close_min")));
  863. if(CSetting::GetParam("setting_is_close_min") == "1")
  864. {
  865. box->Selected(true, false);
  866. }
  867. else
  868. {
  869. box->Selected(false, false);
  870. }
  871. }