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

ListView/ListBox

开发平台:

Visual C++

  1. #if !defined(AFX_LISTCTRLEX_H__14D0592D_666B_11D1_B5EE_080009BD5569__INCLUDED_)
  2. #define AFX_LISTCTRLEX_H__14D0592D_666B_11D1_B5EE_080009BD5569__INCLUDED_
  3. #if _MSC_VER >= 1000
  4. #pragma once
  5. #endif // _MSC_VER >= 1000
  6. /////////////////////////////////////////////////////////////////////////////
  7. // CHeaderCtrlEx window
  8. class CHeaderCtrlEx : public CHeaderCtrl
  9. {
  10. // Construction
  11. public:
  12. CHeaderCtrlEx();
  13. CHeaderCtrlEx(CWnd* pWnd, void (CWnd::*fpDragCol)(int, int));
  14. // Attributes
  15. bool EnableDrag(bool bDrag=true);
  16. public:
  17. // Operations
  18. public:
  19. // Overrides
  20. // ClassWizard generated virtual function overrides
  21. //{{AFX_VIRTUAL(CHeaderCtrlEx)
  22. //}}AFX_VIRTUAL
  23. // Implementation
  24. public:
  25. virtual ~CHeaderCtrlEx();
  26. void SetCallback(CWnd* pWnd, void (CWnd::*fpDragCol)(int, int));
  27. protected:
  28. bool m_bDragEnable;
  29. BOOL m_bCheckForDrag;
  30. BOOL m_bDragging;
  31. int *m_pWidth;
  32. int m_nDragCol;
  33. int m_nDropPos;
  34. CRect marker_rect;
  35. void (CWnd::*m_fpDragCol)(int, int);
  36. CWnd *m_pOwnerWnd;
  37. // Generated message map functions
  38. protected:
  39. //{{AFX_MSG(CHeaderCtrlEx)
  40. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  41. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  42. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  43. //}}AFX_MSG
  44. DECLARE_MESSAGE_MAP()
  45. };
  46. /////////////////////////////////////////////////////////////////////////////
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CListCtrlEx window
  49. #define HIGHLIGHT_NORMAL 0
  50. #define HIGHLIGHT_ALLCOLUMNS 1
  51. #define HIGHLIGHT_ROW 2
  52. #define LVEX_CASE 0
  53. #define LVEX_NOCASE 1
  54. #define LVEX_NUM 2 //integer
  55. #define LVEX_TIME 3
  56. #define LVEX_NOSORT 4
  57. #define LVEX_NUM_FLOAT 5
  58. #define LVEX_TIME_BASE 6 //probably will never use this
  59. #define LVEX_LAST 6 //increment this if you add more types
  60. class CListCtrlEx : public CListCtrl
  61. {
  62. // Construction
  63. public:
  64. CListCtrlEx();
  65. // Attributes
  66. int SetHighlightType(int hilite);
  67. bool EnableSort(bool bSort=true);
  68. bool SetColumnTypes(unsigned char* pColTypes, unsigned nColCnt);
  69. bool EnableHeaderDrag(bool bDrag=true);
  70. bool SetBaseTime(CString strTime);
  71. public:
  72. // Operations
  73. protected:
  74. int  m_nHighlight; // Indicate type of selection highlighting
  75. bool m_bSort; //set to false if you don't want to sort
  76. unsigned char* m_pTypes;//column sort types
  77. int m_nNumCols; //number of columns to sort
  78. COleDateTime m_ctStart; //base time for sorting on 24hr clock
  79. int nSortedCol;
  80. BOOL bSortAscending;
  81. CHeaderCtrlEx m_headerctrl;
  82. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  83. void RepaintSelectedItems();
  84. void DragColumn(int source, int dest);
  85. static int CALLBACK Compare(LPARAM lParam1, LPARAM lParam2, LPARAM 
  86. lParamSort);
  87. //data structure for setdata
  88. struct ListData
  89. {
  90. ListData(const DWORD dwOld, const CString &strTxt, const COleDateTime Start);
  91. DWORD dwOldData;
  92. CString strText;
  93. COleDateTime BaseTime;
  94. };
  95. // Overrides
  96. // ClassWizard generated virtual function overrides
  97. //{{AFX_VIRTUAL(CListCtrlEx)
  98. protected:
  99. virtual void PreSubclassWindow();
  100. //}}AFX_VIRTUAL
  101. // Implementation
  102. public:
  103. virtual ~CListCtrlEx();
  104. // Generated message map functions
  105. protected:
  106. //{{AFX_MSG(CListCtrlEx)
  107. afx_msg void OnPaint();
  108. afx_msg void OnSetFocus(CWnd* pOldWnd);
  109. afx_msg void OnKillFocus(CWnd* pNewWnd);
  110. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  111. //}}AFX_MSG
  112. afx_msg void OnHeaderClicked(NMHDR* pNMHDR, LRESULT* pResult);
  113. DECLARE_MESSAGE_MAP()
  114. };
  115. /////////////////////////////////////////////////////////////////////////////
  116. //{{AFX_INSERT_LOCATION}}
  117. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  118. #endif // !defined(AFX_LISTCTRLEX_H__14D0592D_666B_11D1_B5EE_080009BD5569__INCLUDED_)