www.pudn.com > ExtListctrl_new000.rar > ExtListCtrl.h
#ifndef __EXTLISTCTRL_H__ #define __EXTLISTCTRL_H__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // ExtListCtrl.h : header file #include "Ext.h" #include "ExtHeaderCtrl.h" #include///////////////////////////////////////////////////////////////////////////// // CExtListCtrl window enum COLUMNTYPE{ CJ_NORMAL = 0, // CJ_COMBO // }; enum ListCompareType { ELCT_INTEGER = 0, ELCT_DOUBLE, ELCT_STRING_CASE, ELCT_STRING_NOCASE }; enum ListOperatorType { ELOT_LT = 0, // < less than ELOT_GT, // > greater than ELOT_LTE, // <= less than or equal ELOT_GTE, // >= greather than or equal ELOT_EQ // == equal }; class CExtListCtrl : public CListCtrl { // Construction public: CExtListCtrl(); virtual ~CExtListCtrl(); // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CExtListCtrl) public: virtual BOOL PreTranslateMessage(MSG* pMsg); protected: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual void PreSubclassWindow(); //}}AFX_VIRTUAL // Implementation public: LONG SetStyle(DWORD dwStyle); LONG GetStyle(); DWORD SetExtendedStyle(DWORD dwNewStyle); DWORD GetExtendedStyle(); BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0); BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0); void Modify(int nItem, BOOL bModify); BOOL ItemModified(int nItem); // Header int InsertColumn(int nCol, const LVCOLUMN* pColumn); int InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nWidth, int nFormat = LVCFMT_LEFT, int nSubItem = -1); void SetEditable(BOOL bEditable = TRUE); BOOL DeleteColumn(int nCol); void DeleteAllColumns(); CHeaderCtrl* GetHeaderCtrl() const; int GetColumnCount(); void SetSortable(BOOL bSortable); // BOOL EnsureVisible(int nItem, BOOL bPartialOK); int InsertItem(); int InsertItem(const LVITEM* pItem); int InsertItem(int nItem, LPCTSTR lpszItem, int nImage = -1); int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState, UINT nStateMask, int nImage, LPARAM lParam); // BOOL DeleteItem(int nItem); BOOL DeleteAllItems(); BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszItem, UINT nFormat = DT_LEFT); BOOL SetItemText(int nItem, int nSubItem, INT lpszItem, UINT nFormat = DT_LEFT); BOOL SetItemText(int nItem, int nSubItem, UINT lpszItem, UINT nFormat = DT_LEFT); BOOL SetItemText(int nItem, int nSubItem, LONG lpszItem, UINT nFormat = DT_LEFT); BOOL SetItemText(int nItem, int nSubItem, ULONG lpszItem, UINT nFormat = DT_LEFT); BOOL SetItemText(int nItem, int nSubItem, DOUBLE lpszItem, int nPrecision = -1, UINT nFormat = DT_LEFT); BOOL SetItemTextEx(int nItem, int nSubItem, LPCTSTR lpszItem, LPCTSTR lpszItemEx); BOOL SetItemTextEx(int nItem, int nSubItem, LPCTSTR lpszItemEx); CString GetItemText(int nItem, int nSubItem); CString GetItemTextEx(int nItem, int nSubItem); BOOL SetItemImage(int nItem, int nSubItem, int nImage); int GetItemImage(int nItem, int nSubItem); // BOOL SetItemData(int nItem, DWORD dwData); DWORD GetItemData(int nItem) const; // void SetBkColor(int nItem, int nSubItem, COLORREF crColor, BOOL bRedraw = FALSE); void SetTextColor(int nItem, int nSubItem, COLORREF crColor, BOOL bRedraw = FALSE); BOOL SetItemState(int nItem, UINT nState, BOOL bState = TRUE); UINT GetItemState(int nItem); BOOL SetCheck(int nItem, int nSubItem, BOOL bChecked = TRUE); BOOL GetCheck(int nItem, int nSubItem); int GetSelectedItem(); BOOL SelectItem(int nItem); int Find(LPCTSTR lpszItem, int nSubItem, int nBegin = 0); int FindEx(LPCTSTR lpszItem, int nSubItem, int nBegin = 0); // Generated message map functions protected: CFont m_Font; LOGFONT m_Logfont; LV_ITEM m_lvItem; CExtHeaderCtrl m_pHeader; //Edit CEdit *m_pWndEdit; POINT m_ptEdit; BOOL m_bEditable; //Sort int m_nSortedColumn; BOOL m_bSortAscending; BOOL m_bSortable; ListCompareType m_nCompareAs; // Every subitem. struct EXT_ITEM { DWORD dwData; BOOL bModify; CArray lpszItemEx; // CArray crTxColor; // Text color CArray crBkColor; // Background color CArray nChecked; // -1:not check 0:no check 1:check CArray nFormat; // DT_LEFT DT_CENTER DT_RIGHT }; // Sort struct EXT_SORT { DWORD dwData; UINT nState; CStringArray lpszItem; CStringArray lpszItemEx; CArray nImage; CArray nChecked; CArray nFormat; }; // LONG _GetStyle(); BOOL _GetHeaderColumn(); int _GetHeaderFMT(int nCol); UINT _GetItemFMT(int nItem, int nSubItem); DWORD _AllocItemMemory(int nItem); void _FreeItemMemory(int nItem); void _UpdateColumn(int nCol, BOOL bInsert); void _MouseClkMonitor(UINT nMsg, UINT nFlags, CPoint point, BOOL bTriggerEdit); void _ItemCheckMonitor(UINT nMsg, int nItem, int nSubItem); int _GetCheck(int nItem, int nSubItem); void _StartEdit(int nItem, int nSubItem); void _EndEdit(BOOL bCommit = TRUE); // void _QuickSort(int p, int r); int _Partition(int p, int r); BOOL _SwapRow(int nRow1, int nRow2); virtual BOOL _CompareBy(CString str1, CString str2, ListOperatorType op); COLORREF _BKColorFor(int nItem, int nSubItem, EXT_ITEM *pItem); COLORREF _TXColorFor(int nItem, int nSubItem, EXT_ITEM *pItem); COLORREF _BKColorForItem(int nItem, EXT_ITEM *pItem); COLORREF _TXColorForItem(int nItem, EXT_ITEM *pItem); COLORREF _BKColorForSubItem(int nItem, int nSubItem, EXT_ITEM *pItem); COLORREF _TXColorForSubItem(int nItem, int nSubItem, EXT_ITEM *pItem); virtual void _SwitchTo(DWORD dwDrawStage, LRESULT* pResult, BOOL bDefault); virtual BOOL _IsDraw(); virtual DWORD _OnDraw(CDC *pDC, const CRect rcItem); virtual BOOL _IsPostDraw(); virtual DWORD _OnPostDraw(CDC *pDC, const CRect rcItem); virtual BOOL _IsItemDraw(int nItem); virtual DWORD _OnItemDraw(CDC *pDC, int nItem); virtual BOOL _IsItemPostDraw(int nItem); virtual DWORD _OnPostDraw(CDC *pDC, int nItem); virtual BOOL _IsSubItemDraw(int nItem, int nSubItem); virtual DWORD _OnSubItemDraw(CDC *pDC, int nItem, int nSubItem); virtual BOOL _IsSubItemPostDraw(int nItem, int nSubItem); virtual DWORD _OnSubItemPostDraw(CDC *pDC, int nItem, int nSubItem); virtual void _CalcRect(int nItem, int nSubItem, CRect &rcItem, CRect &rcLabel, CRect &rcCheck, EXT_ITEM *pItem); virtual void _CalcItemRect(int nItem, CRect &rcItem, CRect &rcLabel, CRect &rcCheck, EXT_ITEM *pItem); virtual void _CalcSubItemRect(int nItem, int nSubItem, CRect &rcItem, CRect &rcLabel, CRect &rcCheck, EXT_ITEM *pItem); virtual DWORD _DrawText(CDC *pDC, int nItem, int nSubItem, CRect rcLabel, EXT_ITEM *pItem); virtual DWORD _DrawCheckbox(CDC *pDC, int nItem, int nSubItem, CRect rcCheck, EXT_ITEM *pItem); //{{AFX_MSG(CExtListCtrl) afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDestroy(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // __EXTLISTCTRL_H__