mainfrm.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #ifndef __MAIN_FRAME_H
  2. #define __MAIN_FRAME_H
  3. #pragma once
  4. #include "resource.h"
  5. #include "ukeytask.h"
  6. class CMainFrame;
  7. //class CUkeyVerifyDlg : public ATL::CDialogImpl<CUkeyVerifyDlg>, ISysVarListener
  8. //{
  9. //public:
  10. // CUkeyVerifyDlg(UKEYTask *pTask): m_pUkeyTask(pTask){}
  11. // enum { IDD = IDD_VERIFYDLG};
  12. //
  13. // BEGIN_MSG_MAP_EX(CUkeyVerifyDlg)
  14. // MESSAGE_HANDLER_EX(WM_INITDIALOG, OnInitDialog)
  15. //
  16. // END_MSG_MAP()
  17. //private:
  18. // UKEYTask *m_pUkeyTask;
  19. //};
  20. class CCommandEdit : public ATL::CWindowImpl<CCommandEdit, WTL::CEdit>
  21. {
  22. public:
  23. enum { MAX_HISTORY = 50 };
  24. BEGIN_MSG_MAP_EX(CCommandEdit)
  25. MSG_WM_CHAR(OnChar)
  26. END_MSG_MAP()
  27. CCommandEdit() : m_nHistoryCursor(0), m_nHistorySize(0), m_nHistoryHead(0) {}
  28. void SetOwner(CMainFrame *frm) { m_frm = frm; }
  29. void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  30. private:
  31. int m_nHistoryCursor;
  32. int m_nHistorySize;
  33. int m_nHistoryHead;
  34. WTL::CString m_strHistoryList[MAX_HISTORY];
  35. CMainFrame *m_frm;
  36. };
  37. class CMainFrame : public WTL::CFrameWindowImpl<CMainFrame>,
  38. public WTL::CMessageFilter,
  39. public WTL::CIdleHandler,
  40. public WTL::CUpdateUI<CMainFrame>
  41. {
  42. public:
  43. DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
  44. CMainFrame(IConsole *pConsole) : m_pConsole(pConsole), m_bOperationPending(FALSE), m_iSelectIdx(-1), m_nLineCount(0) {}
  45. virtual ~CMainFrame() {}
  46. virtual BOOL PreTranslateMessage(MSG* pMsg);
  47. virtual BOOL OnIdle();
  48. BEGIN_MSG_MAP_EX(CMainFrame)
  49. MSG_WM_CREATE(OnCreate)
  50. MSG_WM_TIMER(OnTimer)
  51. MSG_WM_CTLCOLOREDIT(OnCtlColorEdit)
  52. MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic)
  53. COMMAND_RANGE_HANDLER_EX(ID_STARTMENU_BEGIN, ID_STARTMENU_END, OnStartMenuRange)
  54. COMMAND_CODE_HANDLER_EX(EN_CHANGE, OnOutputChanged)
  55. NOTIFY_HANDLER_EX(IDC_LIST1, LVN_ITEMCHANGED, OnListLeftItemchanged)
  56. NOTIFY_HANDLER_EX(IDC_LIST2, LVN_ITEMCHANGED, OnListRightItemchanged)
  57. NOTIFY_HANDLER_EX(IDC_LIST1, NM_CLICK, OnListLeftItemclicked)
  58. NOTIFY_HANDLER_EX(IDC_LIST2, NM_CLICK, OnListRightItemclicked)
  59. CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
  60. CHAIN_MSG_MAP(WTL::CFrameWindowImpl<CMainFrame>)
  61. END_MSG_MAP()
  62. BEGIN_UPDATE_UI_MAP(CMainFrame)
  63. UPDATE_ELEMENT(ID_START, UPDUI_TOOLBAR)
  64. UPDATE_ELEMENT(ID_STOP, UPDUI_TOOLBAR)
  65. UPDATE_ELEMENT(ID_PAUSE, UPDUI_TOOLBAR)
  66. UPDATE_ELEMENT(ID_CONTINUE, UPDUI_TOOLBAR)
  67. UPDATE_ELEMENT(ID_KILL, UPDUI_TOOLBAR)
  68. UPDATE_ELEMENT(ID_FILE_SUBSCRIBE, UPDUI_MENUPOPUP)
  69. UPDATE_ELEMENT(ID_FILE_UNSUBSCRIBE, UPDUI_MENUPOPUP)
  70. END_UPDATE_UI_MAP()
  71. int OnCreate(LPCREATESTRUCT lpCreateStruct);
  72. LRESULT OnListLeftItemchanged(NMHDR* phdr);
  73. LRESULT OnListRightItemchanged(NMHDR* phdr);
  74. LRESULT OnListLeftItemclicked(NMHDR* phdr);
  75. LRESULT OnListRightItemclicked(NMHDR* phdr);
  76. void OnTimer(UINT_PTR nIDEvent);
  77. HBRUSH OnCtlColorEdit(CDCHandle dc, CEdit edit);
  78. HBRUSH OnCtlColorStatic(CDCHandle dc, CStatic wndStatic);
  79. void OnOutputChanged(UINT uNotifyCode, int nID, CWindow wndCtl);
  80. void OnStartMenuRange(UINT uNotifyCode, int nID, CWindow wndCtl);
  81. WTL::CListViewCtrl m_left_list;
  82. WTL::CListViewCtrl m_right_list;
  83. WTL::CSplitterWindow m_verticalSplitter;
  84. WTL::CHorSplitterWindow m_splitter;
  85. WTL::CEdit m_output;
  86. CCommandEdit m_cmd;
  87. WTL::CFont m_output_font;
  88. WTL::CStatusBarCtrl m_status;
  89. WTL::CString m_strOuput;
  90. WTL::CButton m_OpenDoor;
  91. WTL::CButton m_OpenLocalconsole;
  92. WTL::CButton m_OpenKeyboard;
  93. WTL::CButton m_PasswordOk;
  94. WTL::CButton m_OpenLocalConsole;
  95. int m_nLineCount;
  96. BOOL m_bOperationPending;
  97. int m_iSelectIdx;
  98. //
  99. // IConsoleUISink
  100. void StartEntity(const char *entity_name, const char *cmdline);
  101. void StopEntity(const char *entity_name);
  102. void output_printf(const char *fmt, ...);
  103. void CheckOutputMaxLen();
  104. void OnEditEnter(const char *tmp);
  105. void Usage();
  106. private:
  107. int FindEntitylistItemIndex(int entity_id);
  108. int FindEntitylistItemIndex(const char *entity_name);
  109. void SetEntityState(int entity_id, int state, int pid);
  110. void SetEntityState(const char *entity_name, int state, int pid);
  111. void LoadEntity( int idx, EntityEntry &e);
  112. void SetEntity();
  113. private:
  114. IConsole *m_pConsole;
  115. };
  116. #endif // __MAIN_FRAME_H