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

ActiveX/DCOM/ATL

开发平台:

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 AttachIconCell(USHORT nIDRow, USHORT nColumn, HICON hIcon, BOOL bBigIcon);
  59. BOOL AttachBitmapCell(USHORT nLParam, USHORT nColumn, UINT nIDBitmap, int nImageWidth = 14, int nImageHeight = 14, int nRowImage = 0);
  60. void SelectItem(int i);
  61. void DeselectAll();
  62. void SetBoldRow(LPARAM lParam = NULL, BOOL bBold = true, BOOL bInvalidate = false);
  63. void SetItalicRow(LPARAM lParam = NULL, BOOL bItalic = true, BOOL bInvalidate = false);
  64. void ResetBoldLines();
  65. void SortAllItems(LPCTSTR lpszColumnsSort);
  66. void SortAllItems();
  67. void AddSortCallBack(int nColumn, COLUMNCALLBACKCOMPARE pCallBack);
  68. virtual void EnableSort(BOOL bEnable = true);
  69. void EnableSaveHeader(BOOL bEnable = true);
  70. virtual void ViewGridLines(BOOL bEnable = true);
  71. void ExpandHeader();
  72. void Progress(int nPercent);
  73. virtual ~CTsyslistviewex();
  74. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  75. // for speed...
  76. void DrawItemGrid(LPDRAWITEMSTRUCT lpDrawItemStruct);
  77. void DrawItemNoGrid(LPDRAWITEMSTRUCT lpDrawItemStruct);
  78. // Generated message map functions
  79. protected:
  80. CTSortColumns m_sortColumns;
  81. void SaveHeader();
  82. //{{AFX_MSG(CTsyslistviewex)
  83. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  84. afx_msg void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult);
  85. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  86. //}}AFX_MSG
  87. afx_msg void MeasureItem( LPMEASUREITEMSTRUCT lpMeasureItemStruct ); 
  88. static LPCTSTR MakeShortString(CDC* pDC, LPCTSTR lpszLong, int nColumnLen, int nOffset);
  89. DECLARE_MESSAGE_MAP()
  90. protected:
  91. virtual void DrawCell(CDC* pDC, CRect& drawRect, DWORD format, int nItem, int nColumn);
  92. CTColumnBitmap* GetBitmapCell(DWORD nIDRow, int nColumn);
  93. CTColumnBitmap* GetBitmapColumn(int nColumn);
  94. CTHeaderCtrlEx m_wndSortHeaderEx;
  95. int HitTestEx(CPoint point, int& subItem);
  96. private:
  97. BOOL GetRegisteredSort(CString& dest);
  98. int NeedCY();
  99. int NeedCX();
  100. BOOL m_bSaveHeader;
  101. CFont m_boldFont;
  102. CFont m_italicFont;
  103. CFont m_italicBoldFont;
  104. int m_nIProgress;
  105. int m_nSortItems;
  106. CProgressCtrlEx m_wndProgress;
  107. BOOL m_bSorted;
  108. CWnd* m_pOldHeaderCtrl;
  109. FCTDRAWITEM m_fctDrawItem;
  110. int m_nHeightRel;
  111. CMap<int,int, CTColumnBitmap*, CTColumnBitmap*> m_bmpColumns;
  112. CMap<DWORD,DWORD, CTColumnBitmap*, CTColumnBitmap*> m_bmpCells;
  113. CMap<LPARAM, LPARAM, BYTE, BYTE> m_mapRowsBold;
  114. CMap<LPARAM, LPARAM, BYTE, BYTE> m_mapRowsItalic;
  115. };
  116. /////////////////////////////////////////////////////////////////////////////
  117. //{{AFX_INSERT_LOCATION}}
  118. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  119. #endif // !defined(AFX_TSYSLISTVIEWEX_H__78A1F553_DB56_11D1_85D8_0040055C08D9__INCLUDED_)