FlatHeaderCtrl.h
上传用户:zhenhuadz
上传日期:2007-01-07
资源大小:1511k
文件大小:6k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. ////////////////////////////////////////////////////////////////////////////
  2. // File: CFlatHeaderCtrl.h
  3. // Version: 1.0.2.0
  4. //
  5. // Author: Maarten Hoeben
  6. // E-mail: hoeben@nwn.com
  7. //
  8. // Specification of the CFlatHeaderCtrl and associated classes.
  9. //
  10. // You are free to use, distribute or modify this code
  11. // as long as the header is not removed or modified.
  12. //
  13. ////////////////////////////////////////////////////////////////////////////
  14. #if !defined(AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_)
  15. #define AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_
  16. #if _MSC_VER > 1000
  17. #pragma once
  18. #endif // _MSC_VER > 1000
  19. // FlatHeaderCtrl.h : header file
  20. //
  21. #include <afxtempl.h>
  22. #include <tchar.h>
  23. #include "MemDC.h"
  24. #define FLATHEADER_TEXT_MAX 80
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CFlatHeaderCtrl window
  27. class CFlatHeaderCtrl;
  28. class CFHDragWnd;
  29. class CFHDropWnd;
  30. #define FH_PROPERTY_SPACING 1
  31. #define FH_PROPERTY_ARROW 2
  32. #define FH_PROPERTY_STATICBORDER 3
  33. #define FH_PROPERTY_DONTDROPCURSOR 4
  34. #define FH_PROPERTY_DROPTARGET 5
  35. #define HDF_EX_AUTOWIDTH 0x0001
  36. #define HDF_EX_INCLUDESORT 0x0002
  37. #define HDF_EX_FIXEDWIDTH 0x0004
  38. typedef struct _HDITEMEX
  39. {
  40. UINT nStyle;
  41. INT iMinWidth;
  42. INT iMaxWidth;
  43. _HDITEMEX() : nStyle(0), iMinWidth(0), iMaxWidth(-1) {};
  44. } HDITEMEX, FAR* LPHDITEMEX;
  45. class CFlatHeaderCtrl : public CHeaderCtrl
  46. {
  47. friend class CFHDragWnd;
  48.     DECLARE_DYNCREATE(CFlatHeaderCtrl)
  49. // Construction
  50. public:
  51. CFlatHeaderCtrl();
  52. // Attributes
  53. public:
  54. BOOL ModifyProperty(WPARAM wParam, LPARAM lParam);
  55. BOOL GetItemEx(INT iPos, HDITEMEX* phditemex) const;
  56. BOOL SetItemEx(INT iPos, HDITEMEX* phditemex);
  57. INT GetItemWidth(LPHDITEM lphdi, BOOL bIncludeSort = FALSE);
  58. void SetSortColumn(INT iPos, BOOL bSortAscending);
  59. INT GetSortColumn(BOOL* pbSortAscending = NULL);
  60. INT GetDropResult();
  61. // Overrides
  62. public:
  63. virtual ~CFlatHeaderCtrl();
  64. virtual void DrawItem(LPDRAWITEMSTRUCT);
  65. virtual void DrawItem(CDC* pDC, CRect rect, LPHDITEM lphdi, BOOL bSort, BOOL bSortAscending);
  66. // ClassWizard generated virtual function overrides
  67. //{{AFX_VIRTUAL(CFlatHeaderCtrl)
  68. //}}AFX_VIRTUAL
  69. // Implementation
  70. protected:
  71. BOOL m_bDoubleBuffer;
  72. INT m_iSpacing;
  73. SIZE m_sizeImage;
  74. SIZE m_sizeArrow;
  75. BOOL m_bStaticBorder;
  76. UINT m_nDontDropCursor;
  77. HWND m_hDropTarget;
  78. CRect m_rcDropTarget;
  79. INT m_iDropResult;
  80. INT m_iHotIndex;
  81. INT m_iHotOrder;
  82. BOOL m_bHotItemResizable;
  83. HDHITTESTINFO m_hdhtiHotItem;
  84. HDITEM m_hdiHotItem;
  85. TCHAR m_szHotItemText[FLATHEADER_TEXT_MAX];
  86. BOOL m_bResizing;
  87. INT m_iHotDivider;
  88. COLORREF m_crHotDivider;
  89. CFHDropWnd* m_pDropWnd;
  90. BOOL m_bDragging;
  91. CFHDragWnd* m_pDragWnd;
  92. UINT m_nClickFlags;
  93. CPoint m_ptClickPoint;
  94. BOOL m_bSortAscending;
  95. INT m_iSortColumn;
  96. CArray<HDITEMEX, HDITEMEX> m_arrayHdrItemEx;
  97. COLORREF m_cr3DHighLight;
  98. COLORREF m_cr3DShadow;
  99. COLORREF m_cr3DFace;
  100. COLORREF m_crText;
  101. void DrawCtrl(CDC* pDC);
  102. INT DrawImage(CDC* pDC, CRect rect, LPHDITEM hdi, BOOL bRight);
  103. INT DrawBitmap(CDC* pDC, CRect rect, LPHDITEM hdi, CBitmap* pBitmap, BITMAP* pBitmapInfo, BOOL bRight);
  104. INT DrawText (CDC* pDC, CRect rect, LPHDITEM lphdi);
  105. INT DrawArrow(CDC* pDC, CRect rect, BOOL bSortAscending, BOOL bRight);
  106. // Generated message map functions
  107. protected:
  108. //{{AFX_MSG(CFlatHeaderCtrl)
  109. afx_msg LRESULT OnInsertItem(WPARAM wparam, LPARAM lparam);
  110. afx_msg LRESULT OnDeleteItem(WPARAM wparam, LPARAM lparam);
  111. afx_msg LRESULT OnSetImageList(WPARAM wparam, LPARAM lparam);
  112. afx_msg LRESULT OnSetHotDivider(WPARAM wparam, LPARAM lparam);
  113. afx_msg LRESULT OnLayout(WPARAM wparam, LPARAM lparam);
  114. afx_msg UINT OnNcHitTest(CPoint point);
  115. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  116. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  117. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  118. afx_msg void OnPaint();
  119. afx_msg void OnSysColorChange();
  120. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  121. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  122. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  123. //}}AFX_MSG
  124. DECLARE_MESSAGE_MAP()
  125. };
  126. /////////////////////////////////////////////////////////////////////////////
  127. // CFHDragWnd window
  128. #define FHDRAGWND_CLASSNAME _T("MFCFHDragWnd")
  129. class CFHDragWnd : public CWnd
  130. {
  131. // Construction
  132. public:
  133. CFHDragWnd();
  134. // Attributes
  135. public:
  136. // Operations
  137. public:
  138. // Overrrides
  139. protected:
  140.     // Drawing
  141.     virtual void OnDraw(CDC* pDC);
  142. // ClassWizard generated virtual function overrides
  143. //{{AFX_VIRTUAL(CFHDragWnd)
  144. protected:
  145. virtual void PostNcDestroy();
  146. //}}AFX_VIRTUAL
  147. // Implementation
  148. public:
  149. virtual ~CFHDragWnd();
  150. virtual BOOL Create(CRect rect, CFlatHeaderCtrl* pFlatHeaderCtrl, INT iItem, LPHDITEM lphdiItem);
  151. protected:
  152. CFlatHeaderCtrl* m_pFlatHeaderCtrl;
  153. INT m_iItem;
  154. LPHDITEM m_lphdiItem;
  155. // Generated message map functions
  156. protected:
  157. //{{AFX_MSG(CFHDragWnd)
  158. afx_msg void OnPaint();
  159. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  160. //}}AFX_MSG
  161. DECLARE_MESSAGE_MAP()
  162. };
  163. /////////////////////////////////////////////////////////////////////////////
  164. // CFHDropWnd window
  165. #define FHDROPWND_CLASSNAME _T("MFCFHDropWnd")
  166. class CFHDropWnd : public CWnd
  167. {
  168. // Construction
  169. public:
  170. CFHDropWnd(COLORREF crColor);
  171. // Attributes
  172. public:
  173. // Operations
  174. public:
  175. void SetWindowPos(INT x, INT y);
  176. // Overrrides
  177. protected:
  178.     // Drawing
  179. // ClassWizard generated virtual function overrides
  180. //{{AFX_VIRTUAL(CFHDropWnd)
  181. protected:
  182. virtual void PostNcDestroy();
  183. //}}AFX_VIRTUAL
  184. // Implementation
  185. public:
  186. virtual ~CFHDropWnd();
  187. virtual BOOL Create(INT iHeight);
  188. protected:
  189. CBrush m_brush;
  190. CRgn m_rgn;
  191. INT m_iHeight;
  192. // Generated message map functions
  193. protected:
  194. //{{AFX_MSG(CFHDropWnd)
  195. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  196. //}}AFX_MSG
  197. DECLARE_MESSAGE_MAP()
  198. };
  199. /////////////////////////////////////////////////////////////////////////////
  200. //{{AFX_INSERT_LOCATION}}
  201. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  202. #endif // !defined(AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_)