www.pudn.com > CListCtrlfjs.rar > SortListCtrl.h


/******************************************* 
 
             没事儿,尽管用。 
                          --栾义明 
 
*********************************************/ 
#ifndef SORTLISTCTRL_H 
#define SORTLISTCTRL_H 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#ifndef SORTHEADERCTRL_H 
	#include "SortHeaderCtrl.h" 
#endif	// SORTHEADERCTRL_H 
 
#ifdef _DEBUG 
	#define ASSERT_VALID_STRING( str ) ASSERT( !IsBadStringPtr( str, 0xfffff ) ) 
#else	//	_DEBUG 
	#define ASSERT_VALID_STRING( str ) ( (void)0 ) 
#endif	//	_DEBUG 
 
 
class CSortListCtrl : public CListCtrl 
{ 
// Construction 
public: 
	CSortListCtrl(); 
	virtual CSortHeaderCtrl& GetHeaderCtrl () 
	{ 
		return m_ctlHeader; 
 
	} 
 
// Attributes 
public: 
     
// Operations 
public: 
	BOOL SetHeadings( UINT uiStringID ); 
	BOOL SetHeadings( const CString& strHeadings ); 
 
	int AddItem( LPCTSTR pszText, ... ); 
	BOOL DeleteItem( int iItem ); 
	BOOL DeleteAllItems(); 
	void LoadColumnInfo(); 
	void SaveColumnInfo(); 
	BOOL SetItemText( int nItem, int nSubItem, LPCTSTR lpszText ); 
	void Sort( int iColumn, BOOL bAscending ); 
	BOOL SetItemData(int nItem, DWORD dwData); 
	DWORD GetItemData(int nItem) const; 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CSortListCtrl) 
	protected: 
	virtual void PreSubclassWindow(); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	BOOL SetExcelShow(BOOL bShow); 
	void SetHeadImage(UINT back,UINT asc,UINT dec); 
	void SetItemImage(int nItem,int nSubItem,int nImage); 
	int InsertItem2(LPCTSTR pszText); 
	void ResetHendings(); 
	void SetColumnColorShow(BOOL bShow); 
	void SetItemColor(int nItem,  COLORREF clrText, COLORREF clrBkgnd); 
	void UpdateHeadColumn(); 
	void SetCustomColor(COLORREF m_textcolor,COLORREF m_backcolor,COLORREF m_checkcolumcolor,COLORREF m_checktextcolor,COLORREF m_checkbackcolor); 
	void SetItemColor(int nItem, int nSubItem, COLORREF clrText, COLORREF clrBkgnd); 
	void DrawText(int nItem, int nSubItem, CDC *pDC, COLORREF crText, COLORREF crBkgnd, CRect &rect,int nImage); 
	BOOL GetSubItemRect(int nItem, int nSubItem, int nArea, CRect& rect); 
	int GetColumns(); 
	int AddItemColor(LPCTSTR pszText,COLORREF crText,COLORREF crBak); 
	virtual ~CSortListCtrl(); 
 
	// Generated message map functions 
protected: 
	void UpdateSubItem(int nItem, int nSubItem); 
	static int CALLBACK CompareFunction( LPARAM lParam1, LPARAM lParam2, LPARAM lParamData ); 
	void FreeItemMemory( const int iItem ); 
	BOOL CSortListCtrl::SetArray( int iItem, LPTSTR* arrpsz ,COLORREF * clrText,COLORREF * clrBak,int *nImage); 
	LPTSTR* CSortListCtrl::GetTextArray( int iItem ) const; 
	 
 
	CSortHeaderCtrl m_ctlHeader; 
 
	int m_iNumColumns; 
	int m_iSortColumn; 
	BOOL m_bSortAscending; 
	BOOL m_bExcelShow; 
 
	//{{AFX_MSG(CSortListCtrl) 
	afx_msg void OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult); 
	afx_msg void OnDestroy(); 
	afx_msg void OnPaint(); 
	afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);	 
	afx_msg void OnSysColorChange(); 
	//}}AFX_MSG 
 
	DECLARE_MESSAGE_MAP() 
private: 
	int m_OldColumnClick; 
	BOOL m_bColumnColorShow; 
    COLORREF m_textcolor,m_backcolor,m_checkcolumcolor,m_checktextcolor,m_checkbackcolor;		 
	COLORREF crWindowText,crWindow,crHighLight,crHighLightText; 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // SORTLISTCTRL_H