SMachineDlg.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. // 添加要在此处预编译的标头
  3. #include "CcosThread.h"
  4. using SMDlgCallback = std::function<void(string, string)>;
  5. struct stuWindowElement
  6. {
  7. stuWindowElement() {};
  8. stuWindowElement(string type, string name, DWORD style, int posX, int posY, int sizeX, int sizeY, int show) :
  9. m_strClassName(type), m_strWindowName(name), m_nStyle(style), m_nPosX(posX), m_nPosY(posY), m_nXsize(sizeX), m_nYsize(sizeY), m_nShow(show) {};
  10. HWND m_hHandle{ nullptr }; //元素句柄
  11. string m_strClassName; //类型名称
  12. string m_strWindowName; //元素名称
  13. DWORD m_nStyle{ WS_CHILD | WS_VISIBLE }; //样式
  14. int m_nPosX{ 0 }; //x轴位置
  15. int m_nPosY{ 0 }; //y轴位置
  16. int m_nXsize{ 0 }; //x宽度
  17. int m_nYsize{ 0 }; //y宽度
  18. int m_nShow{ SW_SHOW }; //是否显示
  19. };
  20. class SMachineDlg : public Work_Thread
  21. {
  22. typedef map<HWND, SMachineDlg*> CallMap;
  23. public:
  24. SMachineDlg(string title,string windowClass, SMDlgCallback object);
  25. ~SMachineDlg();
  26. HWND GetWindowHandle(); //获取句柄
  27. static LRESULT CALLBACK WndTotalProc(HWND, UINT, WPARAM, LPARAM); //窗口函数
  28. void SetJumpMode(int mode); //0:auto, 2;manual
  29. void SetWaitEventList(string& text); //打印等待事件列表
  30. void SetRunHistory(string& text); //打印运行历史
  31. protected:
  32. ATOM RegisterWindowClass(HINSTANCE hInstance = NULL); //注册窗口类
  33. HWND OpenWindow(int nCmdShow); //创建窗口
  34. void CreateUIElement(HWND& hMainWnd); //创建按钮、对话框
  35. bool CloseWindow(); //销毁窗口
  36. bool Exec() override;
  37. bool OnStartThread() override;
  38. bool OnEndThread() override;
  39. private:
  40. SMDlgCallback m_DlgCallback{ nullptr }; //调用主体回调
  41. HANDLE m_ExitFlag{ nullptr }; //轮询线程退出句柄
  42. HWND m_hWnd{ nullptr }; //窗口句柄
  43. string m_strTitle; //标题栏文本
  44. string m_strWindowClass; //主窗口类名
  45. static CallMap g_HandleDlgMap; //消息处理窗口句柄集
  46. //元素句柄
  47. map<int, stuWindowElement> m_ElementMap; //元素列表
  48. };