CValueWnd.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. #pragma once
  2. #include "../pch/pch.h"
  3. #include <zpzDll/zpzDll.h>
  4. #include "CMenuWnd.h"
  5. #include "CSystemSettingWnd.h"
  6. #include "CJiaoyijiluWnd.h"
  7. #include "CJiaoyihuizongWnd.h"
  8. #include "CJiaobanWnd.h"
  9. #include "CDingweiInfoWnd.h"
  10. #include "COcrWnd.h"
  11. #include "CShoukuanWnd.h"
  12. #include "CTuikuanWnd.h"
  13. #include "../tool/CJiaobanMessage.h"
  14. class CMessagePush;
  15. class CValueWnd : public CWindowWnd, public INotifyUI, public IMessageFilterUI
  16. {
  17. public:
  18. LPCTSTR GetWindowClassName() const
  19. {
  20. return _T("UIValueFrame");
  21. };
  22. UINT GetClassStyle() const
  23. {
  24. return UI_CLASSSTYLE_DIALOG;
  25. };
  26. void OnFinalMessage(HWND /*hWnd*/)
  27. {
  28. m_pm.RemovePreMessageFilter(this);
  29. delete this;
  30. };
  31. void Notify(TNotifyUI& msg);
  32. LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  33. LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  34. LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  35. LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  36. LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  37. LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  38. LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  39. LRESULT OnInput(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  40. LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  41. LRESULT OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  42. LRESULT OnKexianUpdate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  43. LRESULT OnWatchWndUpdate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  44. /*
  45. *这个是消息到达窗口过程之后的逻辑
  46. **/
  47. LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
  48. /*
  49. *这个是消息到达窗口过程之前的过滤
  50. */
  51. LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);
  52. //显示收款界面
  53. void ShowShoukuan();
  54. void CloseShoukuan();
  55. //显示退款界面
  56. void ShowTuikuan();
  57. void CloseTuikuan();
  58. //添加托盘图标(初始化)
  59. void AddTrayIcon();
  60. //处理托盘图标上的事件
  61. LRESULT OnTrayIcon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  62. //处理热键
  63. LRESULT OnHotKey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  64. //显示设置页面
  65. void ShowSystemSetting();
  66. //关闭设置页面
  67. void CloseSystemSetting();
  68. //显示交易记录页面
  69. void ShowJiaoyijilu();
  70. void CloseJiaoyijilu();
  71. //显示交易汇总页面
  72. void ShowJiaoyihuizong();
  73. void CloseJiaoyihuizong();
  74. //显示交班页面
  75. void ShowJiaoban();
  76. void CloseJiaoban();
  77. bool Clear();
  78. void Logout();
  79. void QuitApp();
  80. void Init();
  81. void TopMostWnd();
  82. void StopTopMostWnd();
  83. void RestartWatch();
  84. void StopWatch();
  85. void StartWatchWork();
  86. void ReadXunichuankouValue();
  87. void WatchWnd();
  88. void StartOcrWork();
  89. void StartDingweiWnd();
  90. void ConfirmDingweiWnd(std::wstring value, HWND hWnd);
  91. void CancalDingweiWnd();
  92. void StartDingweiWork();
  93. void StartOcrWnd();
  94. void ConfirmOcrWnd(RECT rect);
  95. void CancelOcr();
  96. tesseract::TessBaseAPI& GetTess();
  97. bool UpdateRegisterHotKey();
  98. void RegKeyboardRawInput();
  99. //打印测试小票
  100. void PrintTest();
  101. void PrintZhifu(std::string out_trade_no);
  102. void PrintTuikuan(std::string out_trade_no);
  103. void PrintJiaoban(CJiaobanMessage& message);
  104. private:
  105. void UpdateKexian(const char* data, int length);
  106. void InitWndPos();
  107. void ShowTrayMenu();
  108. public:
  109. CPaintManagerUI m_pm;
  110. private:
  111. //定义托盘图标对象
  112. NOTIFYICONDATA m_trayIcon;
  113. CMessagePush* m_push = NULL;
  114. //菜单窗口
  115. CMenuWnd* pMenu;
  116. //收款窗口的参数
  117. bool m_is_show_shoukuan = false;
  118. CShoukuanWnd* m_shoukuanWnd = NULL;
  119. //退款窗口的参数
  120. bool m_is_show_tuikuan = false;
  121. CTuikuanWnd* m_tuikuanWnd = NULL;
  122. //设置窗口是否已经展示
  123. bool m_is_show_setting = false;
  124. CSystemSettingWnd* m_settingWnd;
  125. //交易记录窗口是否已经显示
  126. bool m_is_show_jiaoyijilu = false;
  127. CJiaoyijiluWnd* m_jiaoyijiluWnd;
  128. //交易汇总窗口是否已经显示
  129. bool m_is_show_jiaoyihuizong = false;
  130. CJiaoyihuizongWnd* m_jiaoyihuizongWnd;
  131. //交班窗口是否已经显示
  132. bool m_is_show_jiaoban = false;
  133. CJiaobanWnd* m_jiaobanWnd;
  134. //默认监听的模式
  135. int m_nWatchType = -1;
  136. //监听是否进行
  137. bool m_isWatchWork = false;
  138. //窗口监听模式的参数
  139. HWND m_watchWnd = NULL;
  140. std::wstring m_watchValue = L"0.00";
  141. //窗口定位参数
  142. bool m_is_dingwei_wnd = false;
  143. CDingweiWnd* pDingweiWnd;
  144. CDingweiInfoWnd* pDingweiInfoWnd;
  145. //OCR模式的参数
  146. bool m_is_orc_wnd = false;
  147. COcrWnd* pOcrWnd;
  148. tesseract::TessBaseAPI m_tess;
  149. //抓取键盘输入相关的
  150. bool m_is_start_catch = false;
  151. clock_t m_last_catch_clock;
  152. std::string m_catch_string;
  153. //抢焦点的状态相关的
  154. bool m_is_topmost = true;
  155. //表示各个监控的状态
  156. bool m_is_xunichuangkou_working = false;
  157. bool m_is_chuangkou_working = false;
  158. bool m_is_orc_working = false;
  159. };