CMainWnd.h 4.3 KB

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