XListCtrl.h
上传用户:dfzycw
上传日期:2010-01-10
资源大小:66k
文件大小:8k
源码类别:

进程与线程

开发平台:

Visual C++

  1. // XListCtrl.h  Version 1.3
  2. //
  3. // Author:  Hans Dietrich
  4. //          hdietrich2@hotmail.com
  5. //
  6. // This software is released into the public domain.
  7. // You are free to use it in any way you like.
  8. //
  9. // This software is provided "as is" with no expressed
  10. // or implied warranty.  I accept no liability for any
  11. // damage or loss of business that this software may cause.
  12. //
  13. ///////////////////////////////////////////////////////////////////////////////
  14. #ifndef XLISTCTRL_H
  15. #define XLISTCTRL_H
  16. #include "XHeaderCtrl.h"
  17. #ifndef DO_NOT_INCLUDE_XCOMBOLIST
  18. #include "XComboList.h"
  19. #endif
  20. extern UINT NEAR WM_XLISTCTRL_COMBO_SELECTION;
  21. extern UINT NEAR WM_XLISTCTRL_CHECKBOX_CLICKED;
  22. ///////////////////////////////////////////////////////////////////////////////
  23. // Style bits for use with SetExtendedStyleX()
  24. // none defined yet
  25. ///////////////////////////////////////////////////////////////////////////////
  26. // CXListCtrl data
  27. struct XLISTCTRLDATA
  28. {
  29. // ctor
  30. XLISTCTRLDATA()
  31. {
  32. bEnabled             = TRUE;
  33. crText               = ::GetSysColor(COLOR_WINDOWTEXT);
  34. crBackground         = ::GetSysColor(COLOR_WINDOW);
  35. bShowProgress        = FALSE;
  36. nProgressPercent     = 0;
  37. strProgressMessage   = _T("");
  38. bShowProgressMessage = TRUE;
  39. nCheckedState        = -1;
  40. bBold                = FALSE;
  41. nImage               = -1;
  42. #ifndef NO_XLISTCTRL_TOOL_TIPS
  43. strToolTip           = _T("");
  44. #endif
  45. bCombo               = FALSE;
  46. bComboIsClicked      = FALSE;
  47. nComboListHeight     = 10;
  48. nInitialComboSel     = 0;
  49. psa                  = NULL;
  50. dwItemData           = 0;
  51. }
  52. BOOL bEnabled; // TRUE = enabled, FALSE = disabled (gray text)
  53. BOOL bBold; // TRUE = display bold text
  54. int nImage; // index in image list, else -1
  55. #ifndef NO_XLISTCTRL_TOOL_TIPS
  56. CString strToolTip; // tool tip text for cell
  57. #endif
  58. // for combo
  59. BOOL bCombo; // TRUE = display combobox
  60. BOOL bComboIsClicked; // TRUE = downarrow is clicked
  61. CStringArray * psa; // pointer to string array for combo listbox
  62. int nComboListHeight; // combo listbox height (in rows)
  63. int nInitialComboSel; // initial combo listbox selection (0 = first)
  64. // for color
  65. COLORREF crText;
  66. COLORREF crBackground;
  67. // for progress
  68. BOOL bShowProgress; // true = show progress control
  69. int nProgressPercent; // 0 - 100
  70. CString strProgressMessage; // custom message for progress indicator -
  71. // MUST INCLUDE %d
  72. BOOL bShowProgressMessage; // TRUE = display % message, or custom message
  73. // if one is supplied
  74. // for checkbox
  75. int nCheckedState; // -1 = don't show, 0 = unchecked, 1 = checked
  76. DWORD dwItemData; // pointer to app's data
  77. };
  78. ///////////////////////////////////////////////////////////////////////////////
  79. // CXListCtrl class
  80. class CXListCtrl : public CListCtrl
  81. {
  82. // Construction
  83. public:
  84. CXListCtrl();
  85. virtual ~CXListCtrl();
  86. // Attributes
  87. public:
  88. // Operations
  89. public:
  90. int CountCheckedItems(int nSubItem);
  91. BOOL DeleteAllItems();
  92. BOOL DeleteItem(int nItem);
  93. void DeleteProgress(int nItem, int nSubItem);
  94. BOOL GetBold(int nItem, int nSubItem);
  95. int GetCheckbox(int nItem, int nSubItem);
  96. int GetColumns();
  97. CString GetComboText(int iItem, int iSubItem);
  98. int GetCurSel();
  99. BOOL GetEnabled(int nItem);
  100. DWORD GetExtendedStyleX() { return m_dwExtendedStyleX; }
  101. int GetHeaderCheckedState(int nSubItem);
  102. DWORD GetItemData(int nItem);
  103. BOOL GetSubItemRect(int iItem, int iSubItem, int nArea, CRect& rect);
  104. int InsertItem(int nItem, LPCTSTR lpszItem);
  105. int InsertItem(int nItem, 
  106.    LPCTSTR lpszItem, 
  107.    COLORREF crText, 
  108.    COLORREF crBackground);
  109. int InsertItem(const LVITEM* pItem);
  110. BOOL SetBold(int nItem, int nSubItem, BOOL bBold);
  111. BOOL SetComboBox(int nItem, 
  112. int nSubItem, 
  113. BOOL bEnableCombo, 
  114. CStringArray *psa,
  115. int nComboListHeight,
  116. int nInitialComboSel);
  117. BOOL SetCheckbox(int nItem, int nSubItem, int nCheckedState);
  118. BOOL SetCurSel(int nItem);
  119. BOOL SetEnabled(int nItem, BOOL bEnable);
  120. DWORD SetExtendedStyleX(DWORD dwNewStyle) 
  121. {
  122. DWORD dwOldStyle = m_dwExtendedStyleX;
  123. m_dwExtendedStyleX = dwNewStyle;
  124. return dwOldStyle;
  125. }
  126. BOOL SetHeaderCheckedState(int nSubItem, int nCheckedState);
  127. int SetItem(const LVITEM* pItem);
  128. BOOL SetItemData(int nItem, DWORD dwData);
  129. BOOL SetItemImage(int nItem, int nSubItem, int nImage);
  130. BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText); 
  131. BOOL SetItemText(int nItem, 
  132. int nSubItem, 
  133. LPCTSTR lpszText,
  134. COLORREF crText, 
  135. COLORREF crBackground);
  136. BOOL SetProgress(int nItem, 
  137. int nSubItem, 
  138. BOOL bShowProgressText = TRUE, 
  139. LPCTSTR lpszProgressText = NULL);
  140. void UpdateProgress(int nItem, int nSubItem, int nPercent);
  141. void UpdateSubItem(int nItem, int nSubItem);
  142. #ifndef NO_XLISTCTRL_TOOL_TIPS
  143. void DeleteAllToolTips();
  144. BOOL SetItemToolTipText(int nItem, int nSubItem, LPCTSTR lpszToolTipText);
  145. CString GetItemToolTipText(int nItem, int nSubItem);
  146. virtual int OnToolHitTest(CPoint point, TOOLINFO * pTI) const;
  147. #endif
  148. // Overrides
  149. // ClassWizard generated virtual function overrides
  150. //{{AFX_VIRTUAL(CXListCtrl)
  151. public:
  152. virtual void PreSubclassWindow();
  153. //}}AFX_VIRTUAL
  154. // Implementation
  155. public:
  156. CXHeaderCtrl m_HeaderCtrl;
  157. CImageList m_cImageList; // Image list for the header control
  158. protected:
  159. void DrawCheckbox(int nItem, 
  160.   int nSubItem, 
  161.   CDC *pDC, 
  162.   COLORREF crText,
  163.   COLORREF crBkgnd,
  164.   CRect& rect, 
  165.   XLISTCTRLDATA *pCLD);
  166. #ifndef DO_NOT_INCLUDE_XCOMBOLIST
  167. void DrawComboBox(int nItem, 
  168.   int nSubItem, 
  169.   CDC *pDC, 
  170.   COLORREF crText,
  171.   COLORREF crBkgnd,
  172.   CRect& rect, 
  173.   XLISTCTRLDATA *pCLD);
  174. void UnpressComboButton();
  175. #endif
  176. int DrawImage(int nItem, 
  177.   int nSubItem, 
  178.   CDC* pDC, 
  179.   COLORREF crText,
  180.   COLORREF crBkgnd,
  181.   CRect rect,
  182.   XLISTCTRLDATA *pXLCD);
  183. void DrawProgress(int nItem, 
  184.   int nSubItem, 
  185.   CDC *pDC, 
  186.   COLORREF crText,
  187.   COLORREF crBkgnd,
  188.   CRect& rect, 
  189.   XLISTCTRLDATA *pCLD);
  190. void DrawText(int nItem, 
  191.   int nSubItem, 
  192.   CDC *pDC, 
  193.   COLORREF crText,
  194.   COLORREF crBkgnd,
  195.   CRect& rect, 
  196.   XLISTCTRLDATA *pCLD);
  197. void GetDrawColors(int nItem,
  198.    int nSubItem,
  199.    COLORREF& colorText,
  200.    COLORREF& colorBkgnd);
  201. void SubclassHeaderControl();
  202. BOOL m_bHeaderIsSubclassed;
  203. DWORD m_dwExtendedStyleX;
  204. COLORREF m_cr3DFace;
  205. COLORREF m_cr3DHighLight;
  206. COLORREF m_cr3DShadow;
  207. COLORREF m_crBtnFace;
  208. COLORREF m_crBtnShadow;
  209. COLORREF m_crBtnText;
  210. COLORREF m_crGrayText;
  211. COLORREF m_crHighLight;
  212. COLORREF m_crHighLightText;
  213. COLORREF m_crWindow;
  214. COLORREF m_crWindowText;
  215. #ifndef DO_NOT_INCLUDE_XCOMBOLIST
  216. BOOL m_bComboIsClicked;
  217. int m_nComboItem;
  218. int m_nComboSubItem;
  219. CRect m_rectComboButton;
  220. CRect m_rectComboList;
  221. CXComboList * m_pListBox;
  222. CFont m_ListboxFont;
  223. BOOL m_bFontIsCreated;
  224. CString m_strInitialComboString;
  225. #endif
  226. // Generated message map functions
  227. protected:
  228. //{{AFX_MSG(CXListCtrl)
  229. afx_msg BOOL OnClick(NMHDR* pNMHDR, LRESULT* pResult);
  230. afx_msg BOOL OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult);
  231. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  232. afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
  233. afx_msg void OnDestroy();
  234. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  235. afx_msg void OnPaint();
  236. afx_msg void OnSysColorChange();
  237. //}}AFX_MSG
  238. #ifndef DO_NOT_INCLUDE_XCOMBOLIST
  239. afx_msg void OnTimer(UINT nIDEvent);
  240. afx_msg LRESULT OnComboEscape(WPARAM, LPARAM);
  241. afx_msg LRESULT OnComboReturn(WPARAM, LPARAM);
  242. afx_msg LRESULT OnComboKeydown(WPARAM, LPARAM);
  243. afx_msg LRESULT OnComboLButtonUp(WPARAM, LPARAM);
  244. #endif
  245. #ifndef NO_XLISTCTRL_TOOL_TIPS
  246. virtual afx_msg BOOL OnToolTipText(UINT id, NMHDR * pNMHDR, LRESULT * pResult);
  247. #endif
  248. DECLARE_MESSAGE_MAP()
  249. };
  250. /////////////////////////////////////////////////////////////////////////////
  251. //{{AFX_INSERT_LOCATION}}
  252. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  253. #endif //XLISTCTRL_H