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


#ifndef SORTHEADERCTRL_H 
#define SORTHEADERCTRL_H 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#ifndef __AFXTEMPL_H__ 
	#include "afxtempl.h" 
#endif 
 
 
	/* 
// Construction 
public: 
	CSortHeaderCtrl(); 
 
// Attributes 
public: 
 
// Operations 
public: 
	BOOL	  m_bIsMousePressed; 
	BOOL	  m_bMultipleSort; 
	BOOL	  m_bAscending; 
	int		  m_nHighlightedItem; 
 
    CFont     fontRegular; 
	COLORREF  clrBtnFace, clrBtnShadow, clrBtnHilite; 
	COLORREF  clrBtnText, clrWindowFrame; 
	COLORREF  clrBtnDkShadow, clrBtnLight; 
	CBrush	  brBtnFace; 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CSortHeaderCtrl) 
	public: 
	virtual void Serialize(CArchive& ar); 
	virtual void OnDrawItem (CDC* pDC, int iItem, CRect rect, BOOL bIsPressed,BOOL bIsHighlighted); 
	virtual void OnFillBackground (CDC* pDC); 
	virtual void OnDrawSortArrow (CDC* pDC, CRect rectArrow); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	void SetImage(UINT back,UINT asc,UINT dec); 
	virtual ~CSortHeaderCtrl(); 
 
	void SetSortArrow( const int iColumn, const BOOL bAscending ); 
 
	// Generated message map functions 
protected: 
//	void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ); 
 
	int m_iSortColumn; 
	BOOL m_bSortAscending; 
 
	CDC m_dcBack,m_dcAsc,m_dcDec; 
	BOOL m_bOK; 
 
	//{{AFX_MSG(CSortHeaderCtrl) 
		// NOTE - the ClassWizard will add and remove member functions here. 
	afx_msg BOOL OnEraseBkgnd(CDC* pDC); 
	afx_msg void OnPaint(); 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
	afx_msg void OnCancelMode(); 
	//}}AFX_MSG 
	afx_msg LRESULT OnLayout(WPARAM wparam, LPARAM lparam); 
	afx_msg LRESULT OnMouseLeave(WPARAM,LPARAM); 
 
 
	DECLARE_MESSAGE_MAP()*/ 
class CSortHeaderCtrl : public CHeaderCtrl 
{ 
// Construction 
public: 
	CSortHeaderCtrl(); 
 
// Attributes 
public: 
	int GetSortColumn () const; 
	BOOL IsAscending () const; 
 
	int GetColumnState (int iColumn) const; 
		// Returns: 0 - not not sorted, -1 - descending, 1 - ascending 
 
	BOOL IsMultipleSort () const{	return m_bMultipleSort;} 
// Operations 
public: 
	CMap 	m_mapColumnsStatus;	// -1, 1, 0 
 
	BOOL	  m_bIsMousePressed; 
	BOOL	  m_bMultipleSort; 
	BOOL	  m_bAscending; 
	int		  m_nHighlightedItem; 
	int       m_nMouseInItem; 
	int       m_nNoTrack; 
 
 
    CFont     fontRegular; 
	COLORREF  clrBtnFace, clrBtnShadow, clrBtnHilite; 
	COLORREF  clrBtnText, clrWindowFrame; 
	COLORREF  clrBtnDkShadow, clrBtnLight; 
	CBrush	  brBtnFace; 
	BOOL      m_bStaticBorder; 
// Operations 
public: 
	void SetSortColumn (int iColumn, BOOL bAscending = TRUE, BOOL bAdd = FALSE); 
	void RemoveSortColumn (int iColumn); 
	void EnableMultipleSort (BOOL bEnable = TRUE); 
	virtual void Serialize(CArchive& ar); 
	void SetSortArrow( const int iColumn, const BOOL bAscending ); 
protected: 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CSortHeaderCtrl) 
	//}}AFX_VIRTUAL 
	virtual void OnDrawItem (CDC* pDC, int iItem, CRect rect, BOOL bIsPressed,BOOL bIsHighlighted); 
	virtual void OnFillBackground (CDC* pDC); 
	virtual void OnDrawSortArrow (CDC* pDC, CRect rectArrow); 
	virtual BOOL OnChildNotify(UINT msg, WPARAM wp, LPARAM lp, LRESULT* pRes); 
// Implementation 
public: 
	void SetNoTrack(int num); 
	virtual ~CSortHeaderCtrl(); 
 
	// Generated message map functions 
protected: 
	//{{AFX_MSG(CSortHeaderCtrl) 
	afx_msg BOOL OnEraseBkgnd(CDC* pDC); 
	afx_msg void OnPaint(); 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
	afx_msg void OnCancelMode(); 
	afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); 
	//}}AFX_MSG 
	afx_msg LRESULT OnLayout(WPARAM wparam, LPARAM lparam); 
	afx_msg LRESULT OnMouseLeave(WPARAM,LPARAM); 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // SORTHEADERCTRL_H