CMainWnd.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. #pragma once
  2. #include "../pch/pch.h"
  3. #include "../control/CWaimaiOrderItemUI.h"
  4. #include "../zhipuzi/CWaimaiOrder.h"
  5. #include "../page/CBasePageUI.h"
  6. #include "../ui/TouchWindowBase.h"
  7. class CMessagePush;
  8. class CMainWnd : public TouchWindowBase, public INotifyUI, public IMessageFilterUI
  9. {
  10. public:
  11. enum MainPageName
  12. {
  13. NOPAGE, //默认空页面
  14. DIANDAN, //点单
  15. DINGDAN,
  16. HUIYUAN,
  17. BAOBIAO,
  18. JIAOBAN,
  19. SETTING,
  20. GENGDUO,
  21. WAIMAIINFO, //外卖订单详情
  22. DIANNEIDINGDAN, //店内订单列表
  23. DIANNEIINFO, //店内订单详情
  24. SHANGPIN, //商品管理
  25. SHANGPIN_CREATE, //新建商品
  26. SHANGPIN_UPDATE, //修改商品
  27. ZHENGCAN, //正餐收银
  28. SAOMASHOUYIN, //扫码收银
  29. CAIGOU, //采购
  30. KUCUN, //库存
  31. ZHENGCANDIANDAN, //正餐点单
  32. ZHENGCANDINGDAN, //正餐订单列表
  33. ZHENGCANINFO, //正餐订单详情
  34. SHOUKUAN, //快速收银页面
  35. SHOUKUANDINGDAN, //收款订单列表
  36. SHOUKUANINFO, //收款订单详情
  37. AIXUEXI, //AI学习
  38. };
  39. LPCTSTR GetWindowClassName() const
  40. {
  41. return _T("UIMainFrame");
  42. };
  43. UINT GetClassStyle() const
  44. {
  45. return CS_DBLCLKS;
  46. };
  47. void OnFinalMessage(HWND /*hWnd*/);
  48. //刚刚登录成功展现窗口的时候调用,做一些初始化
  49. void Init();
  50. //退出登陆,或者直接关闭程序,窗口销毁的时候使用
  51. void End();
  52. void SwitchPage(MainPageName name, bool is_init_show = true);
  53. void Notify(TNotifyUI& msg);
  54. void HandleClickMsg(TNotifyUI& msg);
  55. void HandleSelectChangeMsg(TNotifyUI& msg);
  56. void HandleItemSelectMsg(TNotifyUI& msg);
  57. void HandleTextChangedMsg(TNotifyUI& msg);
  58. LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  59. LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  60. LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  61. LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  62. LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  63. LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  64. LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  65. LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  66. LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  67. LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  68. //捕获键盘输入的消息
  69. LRESULT OnInput(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  70. //键盘消息
  71. LRESULT OnKeydown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  72. //处理热键
  73. LRESULT OnHotKey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  74. LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
  75. //这个是用来处理一些自定义的消息
  76. bool HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
  77. LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);
  78. //添加托盘图标(初始化)
  79. void AddTrayIcon();
  80. //处理托盘图标上的事件
  81. LRESULT OnTrayIcon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  82. //退出登陆
  83. void LoginOut(int mode);
  84. //展示toast
  85. void ShowToast(std::wstring toast_value);
  86. void ShowVK(bool is_show);
  87. //根据更多里面的设置,刷新左边的功能导航
  88. void UpdateGongnengDaohang();
  89. //通过页面名字,切换页面,可以给更多页面调用
  90. void SwitchPageByName(std::wstring name);
  91. CBasePageUI* GetPage(int pageName)
  92. {
  93. if (m_pages.find(pageName) == m_pages.end())
  94. {
  95. return NULL;
  96. }
  97. return m_pages[pageName];
  98. }
  99. MainPageName GetCurPageName()
  100. {
  101. return m_curPageName;
  102. }
  103. bool GetIsKuaijiejianSetting()
  104. {
  105. return m_IsKuaijiejian;
  106. }
  107. void SetIsKuaijiejianSetting(bool value)
  108. {
  109. m_IsKuaijiejian = value;
  110. }
  111. //注册热键
  112. void UpdateRegisterHotKey();
  113. private:
  114. void UpdateFoodImage();
  115. //开启键盘输入监听
  116. void RegKeyboardRawInput();
  117. //创建所有将会用到的Page
  118. void CreatePages();
  119. void DestoryPages();
  120. //退出应用时调用
  121. void QuitApp();
  122. //弹框展示客服二维码
  123. void ShowKefu();
  124. //弹框展示下载二维码
  125. void ShowAppDownload();
  126. //展示进入智铺子商城的小程序
  127. void ShowShangcheng();
  128. //通过餐饮版、零售版差异,对导航的常用和更多字符串进行处理
  129. void UpdateGongnengString();
  130. public:
  131. CPaintManagerUI m_pm;
  132. private:
  133. CButtonUI* m_pCloseBtn;
  134. CButtonUI* m_pMaxBtn;
  135. CButtonUI* m_pRestoreBtn;
  136. CButtonUI* m_pMinBtn;
  137. //定义托盘图标对象
  138. NOTIFYICONDATA m_trayIcon;
  139. //当前页面类型
  140. MainPageName m_curPageName = NOPAGE;
  141. //当前页面指针
  142. CBasePageUI* m_curPageUI = NULL;
  143. //处理左侧tab高亮相关的
  144. std::wstring m_curOptionName;
  145. COptionUI* m_curOption;
  146. //抓取键盘输入相关的
  147. bool m_is_start_catch = false;
  148. clock_t m_last_catch_clock;
  149. std::string m_catch_string;
  150. //表示下一个抓取字符是否大写字母
  151. bool m_is_next_daxie;
  152. //当前所有提前创建的page
  153. std::map<int, CBasePageUI*> m_pages;
  154. //是否正在设置快捷键
  155. bool m_IsKuaijiejian;
  156. };