#pragma once #include #include class CUserXLogDlg : public CDialogEx { DECLARE_DYNAMIC(CUserXLogDlg) public: CUserXLogDlg(CWnd* pParent = nullptr); virtual ~CUserXLogDlg(); #ifdef AFX_DESIGN_TIME enum { IDD = IDD_DIALOG_USERX_LOG }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() public: virtual BOOL OnInitDialog(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnDestroy(); private: struct LogItem { CString time; CString user; CString action; CString detail; }; CListCtrl m_listLogs; std::vector m_logs; void InitListCtrl(); void RefreshLogs(); void AdjustLayout(); };