#pragma once #include #include #include #include "CEXMemFileQueue.h" struct MyListItem { int id; CString name; CString date; }; class CEXVirtualListCtrl : public CListCtrl { DECLARE_DYNAMIC(CEXVirtualListCtrl) public: CEXVirtualListCtrl(); virtual ~CEXVirtualListCtrl(); //void Initialize(); void SetData(CEXMemFileQueue* pQueue); void StartAutoRefresh(int lMSecond); void StopAutoRefresh(); void RefreshShow(); protected: DECLARE_MESSAGE_MAP() afx_msg void OnLvnGetdispinfo(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult); private: CEXMemFileQueue* m_pQueueData; int m_lOldCount; public: afx_msg BOOL OnEraseBkgnd(CDC* pDC); virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); afx_msg void OnTimer(UINT_PTR nIDEvent); }; // CEXVirtualListDlg 对话框 class CEXVirtualListDlg : public CDialogEx { DECLARE_DYNAMIC(CEXVirtualListDlg) public: CEXVirtualListDlg(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CEXVirtualListDlg(); //给虚拟列表关联数据 void SetData(CEXMemFileQueue* pQueue); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_CEXVirtualListDlg }; #endif virtual BOOL OnInitDialog(); protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() afx_msg void OnBnClickedOk(); afx_msg void OnBnClickedCancel(); afx_msg void OnSize(UINT nType, int cx, int cy); private: CEXVirtualListCtrl* m_pstVirtualList; };