ListCtrlEx.h
上传用户:twainx
上传日期:2007-01-02
资源大小:4k
文件大小:7k
源码类别:

ListView/ListBox

开发平台:

Visual C++

  1. #if !defined(AFX_LISTCTRLEX_H_INCLUDED)
  2. #define AFX_LISTCTRLEX_H_INCLUDED
  3. #if _MSC_VER >= 1000
  4. #pragma once
  5. #endif // _MSC_VER >= 1000
  6. /////////////////////////////////////////////////////////////////////////////
  7. // CListCtrlEx definitions
  8. #ifndef NOLISTVIEWEX
  9. #define LVIS_ACTIVATING         0x0020
  10. #define LVS_EX_FLATSB           0x00000100
  11. #define LVS_EX_REGIONAL         0x00000200
  12. #define LVS_EX_INFOTIP          0x00000400
  13. #define LVS_EX_UNDERLINEHOT     0x00000800
  14. #define LVS_EX_UNDERLINECOLD    0x00001000
  15. #define LVS_EX_MULTIWORKAREAS   0x00002000
  16. #define LV_MAX_WORKAREAS         16                          
  17. #define LVM_SETWORKAREAS         (LVM_FIRST + 65)
  18. #define ListView_SetWorkAreas(hwnd, nWorkAreas, prc) 
  19.     (BOOL)SNDMSG((hwnd), LVM_SETWORKAREAS, (WPARAM)(int)nWorkAreas, (LPARAM)(RECT FAR*)(prc))
  20. #define LVM_GETWORKAREAS        (LVM_FIRST + 70)
  21. #define ListView_GetWorkAreas(hwnd, nWorkAreas, prc) 
  22.     (BOOL)SNDMSG((hwnd), LVM_GETWORKAREAS, (WPARAM)(int)nWorkAreas, (LPARAM)(RECT FAR*)(prc))
  23. #define LVM_GETNUMBEROFWORKAREAS  (LVM_FIRST + 73)
  24. #define ListView_GetNumberOfWorkAreas(hwnd, pnWorkAreas) 
  25.     (BOOL)SNDMSG((hwnd), LVM_GETNUMBEROFWORKAREAS, 0, (LPARAM)(UINT *)(pnWorkAreas))
  26. #define LVM_GETSELECTIONMARK    (LVM_FIRST + 66)
  27. #define ListView_GetSelectionMark(hwnd) 
  28.     (int)SNDMSG((hwnd), LVM_GETSELECTIONMARK, 0, 0)
  29. #define LVM_SETSELECTIONMARK    (LVM_FIRST + 67)
  30. #define ListView_SetSelectionMark(hwnd, i) 
  31.     (int)SNDMSG((hwnd), LVM_SETSELECTIONMARK, 0, (LPARAM)i)
  32. #define LVM_SETHOVERTIME        (LVM_FIRST + 71)
  33. #define ListView_SetHoverTime(hwndLV, dwHoverTimeMs)
  34.         (DWORD)SendMessage((hwndLV), LVM_SETHOVERTIME, 0, dwHoverTimeMs)
  35. #define LVM_GETHOVERTIME        (LVM_FIRST + 72)
  36. #define ListView_GetHoverTime(hwndLV)
  37.         (DWORD)SendMessage((hwndLV), LVM_GETHOVERTIME, 0, 0)
  38. #define LVM_SETTOOLTIPS       (LVM_FIRST + 74)
  39. #define ListView_SetToolTips(hwndLV, hwndNewHwnd)
  40.         (HWND)SendMessage((hwndLV), LVM_SETTOOLTIPS, hwndNewHwnd, 0)
  41. #define LVM_GETTOOLTIPS       (LVM_FIRST + 78)
  42. #define ListView_GetToolTips(hwndLV)
  43.         (HWND)SendMessage((hwndLV), LVM_GETTOOLTIPS, 0, 0)
  44. typedef struct tagLVBKIMAGEA
  45. {
  46.     ULONG ulFlags;
  47.     HBITMAP hbm;
  48.     LPSTR pszImage;
  49.     UINT cchImageMax;
  50.     int xOffsetPercent;
  51.     int yOffsetPercent;
  52. } LVBKIMAGEA, FAR *LPLVBKIMAGEA;
  53. typedef struct tagLVBKIMAGEW
  54. {
  55.     ULONG ulFlags;
  56.     HBITMAP hbm;
  57.     LPWSTR pszImage;
  58.     UINT cchImageMax;
  59.     int xOffsetPercent;
  60.     int yOffsetPercent;
  61. } LVBKIMAGEW, FAR *LPLVBKIMAGEW;
  62. #define LVBKIF_SOURCE_NONE      0x00000000
  63. #define LVBKIF_SOURCE_HBITMAP   0x00000001
  64. #define LVBKIF_SOURCE_URL       0x00000002
  65. #define LVBKIF_SOURCE_MASK      0x00000003
  66. #define LVBKIF_STYLE_NORMAL     0x00000000
  67. #define LVBKIF_STYLE_TILE       0x00000010
  68. #define LVBKIF_STYLE_MASK       0x00000010
  69. #define LVM_SETBKIMAGEA         (LVM_FIRST + 68)
  70. #define LVM_SETBKIMAGEW         (LVM_FIRST + 138)
  71. #define LVM_GETBKIMAGEA         (LVM_FIRST + 69)
  72. #define LVM_GETBKIMAGEW         (LVM_FIRST + 139)
  73. #ifdef UNICODE
  74. #define LVBKIMAGE               LVBKIMAGEW
  75. #define LPLVBKIMAGE             LPLVBKIMAGEW
  76. #define LVM_SETBKIMAGE          LVM_SETBKIMAGEW
  77. #define LVM_GETBKIMAGE          LVM_GETBKIMAGEW
  78. #else
  79. #define LVBKIMAGE               LVBKIMAGEA
  80. #define LPLVBKIMAGE             LPLVBKIMAGEA
  81. #define LVM_SETBKIMAGE          LVM_SETBKIMAGEA
  82. #define LVM_GETBKIMAGE          LVM_GETBKIMAGEA
  83. #endif
  84. #define ListView_SetBkImage(hwnd, plvbki) 
  85.     (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)plvbki)
  86. #define ListView_GetBkImage(hwnd, plvbki) 
  87.     (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)plvbki)
  88. typedef struct tagNMITEMACTIVATE
  89. {
  90.     NMHDR   hdr;
  91.     int     iItem;
  92.     int     iSubItem;
  93.     UINT    uNewState;
  94.     UINT    uOldState;
  95.     UINT    uChanged;
  96.     POINT   ptAction;
  97.     LPARAM  lParam;
  98.     UINT    uKeyFlags;
  99. } NMITEMACTIVATE, FAR *LPNMITEMACTIVATE;
  100. #define LVKF_ALT       0x0001
  101. #define LVKF_CONTROL   0x0002
  102. #define LVKF_SHIFT     0x0004
  103. #define LVN_HOTTRACK            (LVN_FIRST-21)
  104. typedef struct tagNMLVGETINFOTIPA
  105. {
  106.     NMHDR hdr;
  107.     DWORD dwFlags;
  108.     LPSTR pszText;
  109.     int cchTextMax;
  110.     int iItem;
  111.     int iSubItem;
  112.     LPARAM lParam;
  113. } NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
  114. typedef struct tagNMLVGETINFOTIPW
  115. {
  116.     NMHDR hdr;
  117.     DWORD dwFlags;
  118.     LPWSTR pszText;
  119.     int cchTextMax;
  120.     int iItem;
  121.     int iSubItem;
  122.     LPARAM lParam;
  123. } NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
  124. #define LVGIT_UNFOLDED  0x0001
  125. #define LVN_GETINFOTIPA          (LVN_FIRST-57)
  126. #define LVN_GETINFOTIPW          (LVN_FIRST-58)
  127. #ifdef UNICODE
  128. #define LVN_GETINFOTIP          LVN_GETINFOTIPW
  129. #define NMLVGETINFOTIP          NMLVGETINFOTIPW
  130. #define LPNMLVGETINFOTIP        LPNMLVGETINFOTIPW
  131. #else
  132. #define LVN_GETINFOTIP          LVN_GETINFOTIPA
  133. #define NMLVGETINFOTIP          NMLVGETINFOTIPA
  134. #define LPNMLVGETINFOTIP        LPNMLVGETINFOTIPA
  135. #endif
  136. #endif // NOLISTVIEWEX
  137. // ListCtrlEx.h : header file
  138. //
  139. /////////////////////////////////////////////////////////////////////////////
  140. // CListCtrlEx window
  141. class CListCtrlEx : public CListCtrl
  142. {
  143. // Construction
  144. // Attributes
  145. public:
  146. int AddItem(LPCTSTR strItem, int nItem, int nSubItem = 0, UINT nState = -1, int nImageIndex = -1, long nParam = -1);
  147. DWORD GetViewStyle() const;
  148. DWORD SetViewStyle(DWORD dwNewView);
  149. // Available with IE4 Dll => commctl.dll v4.71.1712.3
  150. #ifndef NOLISTVIEWEX
  151. POSITION GetFirstSelectedItemPosition() const;
  152. int GetNextSelectedItem(POSITION &pos) const;
  153. BOOL GetColumnOrderArray(LPINT pnArray, int nCount = -1) const;
  154. BOOL SetColumnOrderArray(int nCount, LPINT pnArray);
  155. CSize SetIconSpacing(CSize size);
  156. CSize SetIconSpacing(int cx, int cy);
  157. CHeaderCtrl* GetHeaderCtrl() const;
  158. HCURSOR GetHotCursor() const;
  159. HCURSOR SetHotCursor(HCURSOR hc);
  160. BOOL GetSubItemRect(int nItem, int nSubItem, int nArea, CRect& rcRef) const;
  161. int GetHotItem() const;
  162. int SetHotItem(int nIndex);
  163. int GetSelectionMark() const;
  164. int SetSelectionMark(int nIndex);
  165. DWORD GetExtendedStyle() const;
  166. DWORD SetExtendedStyle(DWORD dwNewStyle);
  167. int SubItemHitTest(LPLVHITTESTINFO lpInfo);
  168. UINT GetNumberOfWorkAreas() const;
  169. void GetWorkAreas(int nWorkAreas, LPRECT lpRect) const;
  170. void SetWorkAreas(int nWorkAreas, LPRECT lpRect);
  171. BOOL SetItemCountEx(int iCount, DWORD dwFlags = LVSICF_NOINVALIDATEALL);
  172. CSize ApproximateViewRect(CSize size = CSize(-1, -1), int nCount = -1) const;
  173. BOOL GetBkImage(LVBKIMAGE* plvbkImage) const;
  174. BOOL SetBkImage(HBITMAP hbm, BOOL bTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0);
  175. BOOL SetBkImage(LPTSTR pszUrl, BOOL bTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0);
  176. BOOL SetBkImage(LVBKIMAGE* plvbkImage);
  177. DWORD GetHoverTime() const;
  178. DWORD SetHoverTime(DWORD dwHoverTime = -1);
  179. BOOL GetCheck(int nItem) const;
  180. BOOL SetCheck(int nItem, BOOL bCheck);
  181. #endif // NOLISTVIEWEX
  182. // Operations
  183. // Overrides
  184. //{{AFX_VIRTUAL(CListCtrlEx)
  185. //}}AFX_VIRTUAL
  186. // Implementation
  187. protected:
  188. //{{AFX_MSG(CListCtrlEx)
  189. //}}AFX_MSG
  190. DECLARE_MESSAGE_MAP()
  191. };
  192. /////////////////////////////////////////////////////////////////////////////
  193. #endif // !defined(AFX_LISTCTRLEX_H_INCLUDED)