SortListCtrl.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2.  *  Openmysee
  3.  *
  4.  *  This program is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This program is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this program; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  */
  19. /*----------------------------------------------------------------------
  20. Copyright (C)2001 MJSoft. All Rights Reserved.
  21.           This source may be used freely as long as it is not sold for
  22. profit and this copyright information is not altered or removed.
  23. Visit the web-site at www.mjsoft.co.uk
  24. e-mail comments to info@mjsoft.co.uk
  25. File:     SortListCtrl.h
  26. Purpose:  Provides a sortable list control, it will sort text, numbers
  27.           and dates, ascending or descending, and will even draw the
  28. arrows just like windows explorer!
  29. ----------------------------------------------------------------------*/
  30. #ifndef SORTLISTCTRL_H
  31. #define SORTLISTCTRL_H
  32. #if _MSC_VER > 1000
  33. #pragma once
  34. #endif // _MSC_VER > 1000
  35. #ifndef SORTHEADERCTRL_H
  36. #include "SortHeaderCtrl.h"
  37. #endif // SORTHEADERCTRL_H
  38. #ifdef _DEBUG
  39. #define ASSERT_VALID_STRING( str ) ASSERT( !IsBadStringPtr( str, 0xfffff ) )
  40. #else // _DEBUG
  41. #define ASSERT_VALID_STRING( str ) ( (void)0 )
  42. #endif // _DEBUG
  43. class CSortListCtrl : public CListCtrl
  44. {
  45. // Construction
  46. public:
  47. CSortListCtrl();
  48. // Attributes
  49. public:
  50. // Operations
  51. public:
  52. BOOL SetHeadings( UINT uiStringID );
  53. BOOL SetHeadings( const CString& strHeadings );
  54. int AddItem( LPCTSTR pszText, ... );
  55. BOOL DeleteItem( int iItem );
  56. BOOL DeleteAllItems();
  57. void LoadColumnInfo();
  58. void SaveColumnInfo();
  59. BOOL SetItemText( int nItem, int nSubItem, LPCTSTR lpszText );
  60. void Sort( int iColumn, BOOL bAscending );
  61. BOOL SetItemData(int nItem, DWORD dwData);
  62. DWORD GetItemData(int nItem) const;
  63. // Overrides
  64. // ClassWizard generated virtual function overrides
  65. //{{AFX_VIRTUAL(CSortListCtrl)
  66. protected:
  67. virtual void PreSubclassWindow();
  68. //}}AFX_VIRTUAL
  69. // Implementation
  70. public:
  71. virtual ~CSortListCtrl();
  72. // Generated message map functions
  73. protected:
  74. static int CALLBACK CompareFunction( LPARAM lParam1, LPARAM lParam2, LPARAM lParamData );
  75. void FreeItemMemory( const int iItem );
  76. BOOL CSortListCtrl::SetTextArray( int iItem, LPTSTR* arrpsz );
  77. LPTSTR* CSortListCtrl::GetTextArray( int iItem ) const;
  78. CSortHeaderCtrl m_ctlHeader;
  79. int m_iNumColumns;
  80. int m_iSortColumn;
  81. BOOL m_bSortAscending;
  82. //{{AFX_MSG(CSortListCtrl)
  83. afx_msg void OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult);
  84. afx_msg void OnDestroy();
  85. //}}AFX_MSG
  86. DECLARE_MESSAGE_MAP()
  87. };
  88. //{{AFX_INSERT_LOCATION}}
  89. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  90. #endif // SORTLISTCTRL_H