Tsyslistviewex.h
上传用户:maicowu
上传日期:2007-01-02
资源大小:87k
文件大小:5k
源码类别:

TreeView控件

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 5/27/98 1:04:03 PM
  5.   Comments: CTsyslistviewex header file
  6.  ************************************/
  7. #if !defined(AFX_TSYSLISTVIEWEX_H__78A1F553_DB56_11D1_85D8_0040055C08D9__INCLUDED_)
  8. #define AFX_TSYSLISTVIEWEX_H__78A1F553_DB56_11D1_85D8_0040055C08D9__INCLUDED_
  9. #include "THeaderCtrlEx.h" // Added by ClassView
  10. #include "TColumnBitmap.h" // Added by ClassView
  11. #include "tsortcolumn.h"
  12. #include "progressctrlex.h"
  13. #include <afxtempl.h>
  14. #if _MSC_VER >= 1000
  15. #pragma once
  16. #endif // _MSC_VER >= 1000
  17. // Tsyslistviewex.h : header file
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CTsyslistviewex window
  21. #define OFFSET 2
  22. #define LIST_UNSUBCLASSED 0x00000000
  23. #define LIST_SUBCLASSED   0x00000001
  24. #define LIST_MASKCLASS    0x00000001
  25. #define LIST_SECTION   _T("ListControls")
  26. class CTsyslistviewex;
  27. typedef void (CTsyslistviewex :: *FCTDRAWITEM) ( LPDRAWITEMSTRUCT lpDrawItemStruct );
  28. class CTsyslistviewex : public CListCtrl
  29. {
  30. // constructor/destructor
  31. public:
  32. CTsyslistviewex(int nHeightRel = 4);
  33. static TCHAR m_cImageTextSeparator;
  34. static BOOL SetHeader(CListCtrl * pList, CString newHeader);
  35. virtual void PreSubclassWindow( );
  36. // Attributes
  37. public:
  38. // Operations
  39. public:
  40. // Overrides
  41. // ClassWizard generated virtual function overrides
  42. //{{AFX_VIRTUAL(CTsyslistviewex)
  43. protected:
  44. virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  45. //}}AFX_VIRTUAL
  46. // Implementation
  47. public:
  48. CString GetHeaderSortString();
  49. CString GetHeaderString();
  50. int GetCountRowsItalic();
  51. int GetCountColumn();
  52. int GetCountRowsBold();
  53. BOOL GetSubItemRect(int item, int subItem, CRect & rect);
  54. BOOL IsHeaderSaved();
  55. BOOL m_bSortWhenClickHeader;
  56. BOOL AttachBitmap(int nColumn, UINT nIDBitmap, int nImageWidth = 14, int nImageHeight = 14, int nRowImage = 0);
  57. DWORD ComposeKeyForCell(USHORT nIDRow, USHORT nColumn);
  58. BOOL AttachBitmapCell(USHORT nLParam, USHORT nColumn, UINT nIDBitmap, int nImageWidth = 14, int nImageHeight = 14, int nRowImage = 0);
  59. void SelectItem(int i);
  60. void DeselectAll();
  61. void SetBoldRow(LPARAM lParam = NULL, BOOL bBold = true, BOOL bInvalidate = false);
  62. void SetItalicRow(LPARAM lParam = NULL, BOOL bItalic = true, BOOL bInvalidate = false);
  63. void ResetBoldLines();
  64. void SortAllItems(LPCTSTR lpszColumnsSort);
  65. void SortAllItems();
  66. void AddSortCallBack(int nColumn, COLUMNCALLBACKCOMPARE pCallBack);
  67. virtual void EnableSort(BOOL bEnable = true);
  68. void EnableSaveHeader(BOOL bEnable = true);
  69. virtual void ViewGridLines(BOOL bEnable = true);
  70. void ExpandHeader();
  71. void Progress(int nPercent);
  72. virtual ~CTsyslistviewex();
  73. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  74. // for speed...
  75. void DrawItemGrid(LPDRAWITEMSTRUCT lpDrawItemStruct);
  76. void DrawItemNoGrid(LPDRAWITEMSTRUCT lpDrawItemStruct);
  77. // Generated message map functions
  78. protected:
  79. CTSortColumns m_sortColumns;
  80. void SaveHeader();
  81. //{{AFX_MSG(CTsyslistviewex)
  82. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  83. afx_msg void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult);
  84. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  85. //}}AFX_MSG
  86. afx_msg void MeasureItem( LPMEASUREITEMSTRUCT lpMeasureItemStruct ); 
  87. static LPCTSTR MakeShortString(CDC* pDC, LPCTSTR lpszLong, int nColumnLen, int nOffset);
  88. DECLARE_MESSAGE_MAP()
  89. protected:
  90. virtual void DrawCell(CDC* pDC, CRect& drawRect, DWORD format, int nItem, int nColumn);
  91. CTColumnBitmap* GetBitmapCell(DWORD nIDRow, int nColumn);
  92. CTColumnBitmap* GetBitmapColumn(int nColumn);
  93. CTHeaderCtrlEx m_wndSortHeaderEx;
  94. int HitTestEx(CPoint point, int& subItem);
  95. private:
  96. BOOL GetRegisteredSort(CString& dest);
  97. int NeedCY();
  98. int NeedCX();
  99. BOOL m_bSaveHeader;
  100. CFont m_boldFont;
  101. CFont m_italicFont;
  102. CFont m_italicBoldFont;
  103. int m_nIProgress;
  104. int m_nSortItems;
  105. CProgressCtrlEx m_wndProgress;
  106. BOOL m_bSorted;
  107. CWnd* m_pOldHeaderCtrl;
  108. FCTDRAWITEM m_fctDrawItem;
  109. int m_nHeightRel;
  110. CMap<int,int, CTColumnBitmap*, CTColumnBitmap*> m_bmpColumns;
  111. CMap<DWORD,DWORD, CTColumnBitmap*, CTColumnBitmap*> m_bmpCells;
  112. CMap<LPARAM, LPARAM, BYTE, BYTE> m_mapRowsBold;
  113. CMap<LPARAM, LPARAM, BYTE, BYTE> m_mapRowsItalic;
  114. };
  115. /////////////////////////////////////////////////////////////////////////////
  116. //{{AFX_INSERT_LOCATION}}
  117. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  118. #endif // !defined(AFX_TSYSLISTVIEWEX_H__78A1F553_DB56_11D1_85D8_0040055C08D9__INCLUDED_)