#pragma once #include #include "DebuggerUI.h" class CDebugCPULogView : public CDebugDialog, public CDialogResize, public CToolTipDialog { public: enum { IDD = IDD_Debugger_CPULog }; CDebugCPULogView(CDebuggerUI * debugger); virtual ~CDebugCPULogView(void); void RefreshList(bool bUpdateBuffer = true); private: CCPULog* m_CPULogCopy; int m_RowHeight; int m_LogStartIndex; CListViewCtrl m_CPUListView; CEdit m_StateInfoEdit; CEditNumber32 m_BuffSizeEdit; CButton m_EnabledChk; CScrollBar m_Scrollbar; CButton m_ExportBtn; LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnClicked(WORD wNotifyCode, WORD wID, HWND /*hWndCtl*/, BOOL& bHandled); LRESULT OnActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnListDblClicked(NMHDR* pNMHDR); LRESULT OnListItemChanged(NMHDR* pNMHDR); LRESULT OnMeasureItem(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/); LRESULT OnScroll(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/); void OnExitSizeMove(void); LRESULT OnDestroy(void); void InterceptMouseWheel(WPARAM wParam, LPARAM lParam); static CDebugCPULogView* _this; static HHOOK hWinMessageHook; static LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam); void ToggleLoggingEnabled(void); void ShowRegStates(size_t stateIndex); void Export(void); int GetNumVisibleRows(CListViewCtrl& list); bool MouseHovering(WORD ctrlId, int xMargin = 0, int yMargin = 0); BEGIN_MSG_MAP_EX(CDebugCPULogView) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_CODE_HANDLER(BN_CLICKED, OnClicked) MESSAGE_HANDLER(WM_ACTIVATE, OnActivate) NOTIFY_HANDLER_EX(IDC_CPU_LIST, NM_DBLCLK, OnListDblClicked) NOTIFY_HANDLER_EX(IDC_CPU_LIST, LVN_ITEMCHANGED, OnListItemChanged) MESSAGE_HANDLER(WM_MEASUREITEM, OnMeasureItem) MESSAGE_HANDLER(WM_VSCROLL, OnScroll) MSG_WM_EXITSIZEMOVE(OnExitSizeMove) CHAIN_MSG_MAP(CDialogResize) END_MSG_MAP() BEGIN_DLGRESIZE_MAP(CDebugCPULogView) DLGRESIZE_CONTROL(IDC_CPU_LIST, DLSZ_SIZE_X | DLSZ_SIZE_Y) DLGRESIZE_CONTROL(IDC_REGSTATES_GRP, DLSZ_MOVE_X | DLSZ_SIZE_Y) DLGRESIZE_CONTROL(IDC_STATEINFO_EDIT, DLSZ_MOVE_X | DLSZ_SIZE_Y) DLGRESIZE_CONTROL(IDC_SCRL_BAR, DLSZ_SIZE_Y) END_DLGRESIZE_MAP() BEGIN_TOOLTIP_MAP() TOOLTIP(IDC_BUFFSIZE_EDIT, "Maximum number of states to keep (1024 = 416kB)") // sizeof(CPUState) END_TOOLTIP_MAP() };