/************************************************************************/ /* Copyright (C), 2016-2020, [IT], 保留所有权利; /* 模 块 名:; /* 描 述:; /* /* 版 本:[V]; /* 作 者:[IT]; /* 日 期:[10/21/2016]; /* /* /* 注 意:; /* /* 修改记录:[IT]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /************************************************************************/ #ifndef __LIST_SORT_CTRL__ #define __LIST_SORT_CTRL__ #pragma once // CListSortCtrl #include "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 CListSortCtrl : public CListCtrl { DECLARE_DYNAMIC(CListSortCtrl) public: CListSortCtrl(); virtual ~CListSortCtrl(); protected: DECLARE_MESSAGE_MAP() virtual void PreSubclassWindow(); public: // 数据; CArray m_AryList; // 是否支持排序; BOOL m_bSortSupport; // 列表字体; CFont m_cfont; LOGFONT m_logfont; // 浅色; COLORREF m_clrLightGrid; // 深色; COLORREF m_clrDarkGrid; // 排序的序; static INT m_nCompareColumn; // 升降序; static BOOL m_bSortAscending; // 列表头控件; CSortHeaderCtrl m_Ctrlheader; // 设置list列信息; BOOL SetHeadings( IN LPCTSTR pszText, ... ); // 设置字体; void SetListFont(IN CString strFontName, IN int nFontSize, IN BOOL bBold = FALSE, IN BOOL bItalic = FALSE); static bool IsNumber( LPCTSTR pszText ); static int NumberCompare( LPCTSTR pszNumber1, LPCTSTR pszNumber2 ); static bool IsDate( LPCTSTR pszText ); static int DateCompare( const CString& strDate1, const CString& strDate2 ); static int __cdecl CompareByLabel( const void *elem1, const void *elem2); private: // 列表注册表键名; CString m_strSection; // 列数; INT m_nNumColumns; // 要排序的列; INT m_nSortColumns; protected: // 选择排序的列; void SortByCol(IN const INT nColIndex); // 加载列信息; void LoadColumnInfo(); // 保存列信息; void SaveColumnInfo(); public: void RemoveAll(); afx_msg void OnLvnColumnclick(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnLvnGetdispinfo(NMHDR *pNMHDR, LRESULT *pResult); #ifndef __LIST_DRAW__ afx_msg void OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult); #endif afx_msg void OnDestroy(); }; #endif // __LIST_SORT_CTRL__