MultiColumnSortListView.h
上传用户:ayqaqa
上传日期:2007-01-02
资源大小:37k
文件大小:3k
源码类别:

ListView/ListBox

开发平台:

Visual C++

  1. #if !defined(AFX_MULTICOLUMNSORTLISTVIEW_H__E58FDCA1_0449_11D2_9AED_2F8C0624A000__INCLUDED_)
  2. #define AFX_MULTICOLUMNSORTLISTVIEW_H__E58FDCA1_0449_11D2_9AED_2F8C0624A000__INCLUDED_
  3. #if _MSC_VER >= 1000
  4. #pragma once
  5. #endif // _MSC_VER >= 1000
  6. // MultiColumnSortListView.h : header file
  7. //
  8. #include <afxcview.h>
  9. #include "SortableHeaderCtrl.h"
  10. #define MINCOLWIDTH        70
  11. #define MAXCOLWIDTH        70
  12. #define MAX_COLUMNS        64
  13. #define MULTI_COLUMN_SORT  1
  14. #define SINGLE_COLUMN_SORT 0
  15. enum SORT_STATE{ DESCENDING, ASCENDING };
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CMultiColumnSortListView view
  18. class CMultiColumnSortListView : public CListView
  19. {
  20. protected:
  21. CMultiColumnSortListView();           // protected constructor used by dynamic creation
  22. DECLARE_DYNCREATE(CMultiColumnSortListView)
  23. // Attributes
  24. public:
  25. // Operations
  26. public:
  27. void SetUniqueName( LPCTSTR );
  28. int FindNumericColumnIndex( int );
  29. void UnsetColumnNumeric( int iCol );
  30. const bool IsColumnNumeric( int ) const;
  31. void SetColumnNumeric( int );
  32. void SetColumnWidth( int );
  33. void AutoSizeColumn( int iColumn );
  34. void AutoSizeAllColumns();
  35. const int GetRegColumnWidth( int ) const;
  36. int FindItemInCombedSortedList( int );
  37. void MoveItemInCombinedSortedListToEnd( int );
  38. void EmptyArray( int * );
  39. const int GetNumCombinedSortedColumns() const;
  40. void SetItemSortState( int, SORT_STATE );
  41. const SORT_STATE GetItemSortState( int ) const;
  42. bool NotInCombinedSortedColumnList( int iItem ) const;
  43. const int IsControlPressed() const;
  44. int  InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = 1, int nSubItem = 1 );
  45. void SortColumn( int, bool = false );
  46. int  LoadColumnWidths();
  47. void SaveColumnWidths();
  48. UINT GetColumnCount();
  49. void DeleteAllColumns();
  50. void DeleteAllItems();
  51. const bool IsSorting() const;
  52. __int64       m_lColumnSortStates;
  53. int           m_aCombinedSortedColumns[MAX_COLUMNS];
  54. CUIntArray    m_aNumericColumns;
  55. CImageList   m_ilImageList;
  56. // Overrides
  57. // ClassWizard generated virtual function overrides
  58. //{{AFX_VIRTUAL(CMultiColumnSortListView)
  59. protected:
  60. virtual void OnDraw(CDC* pDC);      // overridden to draw this view
  61. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  62. //}}AFX_VIRTUAL
  63. // Implementation
  64. protected:
  65. virtual ~CMultiColumnSortListView();
  66. #ifdef _DEBUG
  67. virtual void AssertValid() const;
  68. virtual void Dump(CDumpContext& dc) const;
  69. #endif
  70. // Generated message map functions
  71. protected:
  72. CString m_strColumnWidthSection;
  73. CSortableHeaderCtrl m_ctlHeaderCtrl;
  74. CString     m_strUniqueName;
  75. bool m_bAutoSizeOnInsert;
  76. bool m_bSorting;
  77. //{{AFX_MSG(CMultiColumnSortListView)
  78. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  79. afx_msg void OnDestroy();
  80. //}}AFX_MSG
  81. afx_msg void OnHeaderClicked(NMHDR* pNMHDR, LRESULT* pResult) ;
  82. DECLARE_MESSAGE_MAP()
  83. };
  84. /////////////////////////////////////////////////////////////////////////////
  85. //{{AFX_INSERT_LOCATION}}
  86. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  87. #endif // !defined(AFX_MULTICOLUMNSORTLISTVIEW_H__E58FDCA1_0449_11D2_9AED_2F8C0624A000__INCLUDED_)