1,頭文件實現:
#if !defined(AFX_LISTCTRLEX_H__FD8138BA_775E_4491_ACCA_B5265EC70DBC__INCLUDED_)
#define AFX_LISTCTRLEX_H__FD8138BA_775E_4491_ACCA_B5265EC70DBC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//
// ListCtrlEx.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx window
//
// 1,排序支持:按字符串不區分大小寫順序;必須預先設置唯一 lparam 參數。
// 2,刪除支持:快捷鍵“Delete”刪除選定條目(多選)。
//
class CListCtrlEx : public CListCtrl
{
public:
BOOL EnableFunc(DWord dwMask); // 打開功能(使生效,默認不開任何功能)
public:
static const DWord funcAll; // 功能掩碼:所有功能 0xffffffff
static const DWord funcSort; // 功能掩碼:排序支持 0x00000001
static const DWord funcDelete; // 功能掩碼:刪除支持 0x00000002
protected:
// 排序的比較函數
static int CALLBACK CompareByParam(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
// 成員變量:功能掩碼(默認不開任何功能)
DWord m_dwFuncMask;
// 成員變量:記錄排序的升降序
BOOL m_bAscending;
// 成員變量:記錄排序的列
int m_iSortCol;
// Construction
public:
CListCtrlEx();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CListCtrlEx)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CListCtrlEx();
// Generated message map functions
protected:
//{{AFX_MSG(CListCtrlEx)
afx_msg void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_LISTCTRLEX_H__FD8138BA_775E_4491_ACCA_B5265EC70DBC__INCLUDED_)
2,類實現文件:
// ListCtrlEx.cpp : implementation file
//