CMFCListCtrl
类
CMFCListCtrl
类通过支持 CMFCHeaderCtrl
类的高级标头控件功能来扩展 CListCtrl
类类的功能。
语法
class CMFCListCtrl : public CListCtrl
成员
公共方法
名称 | 描述 |
---|---|
CMFCListCtrl::EnableMarkSortedColumn |
实现使用不同背景色标记已排序列的功能。 |
CMFCListCtrl::EnableMultipleSort |
启用多排序模式。 |
CMFCListCtrl::GetHeaderCtrl |
返回对带下划线的标头控件的引用。 |
CMFCListCtrl::IsMultipleSort |
检查列表控件是否处于多排序模式。 |
CMFCListCtrl::OnCompareItems |
当框架必须比较两个列表控件项时,由框架调用。 |
CMFCListCtrl::OnGetCellBkColor |
当框架必须确定单个单元格的背景色时,由框架调用。 |
CMFCListCtrl::OnGetCellFont |
当框架必须获取所绘制单元格的字体时,由框架调用。 |
CMFCListCtrl::OnGetCellTextColor |
当框架必须确定单个单元格的文本颜色时,由框架调用。 |
CMFCListCtrl::RemoveSortColumn |
从已排序列的列表中移除排序列。 |
CMFCListCtrl::SetSortColumn |
设置当前已排序列和排序顺序。 |
CMFCListCtrl::Sort |
对列表控件进行排序。 |
备注
CMFCListCtrl
向 CListCtrl
类类提供两个增强功能。 首先,它通过自动在标题上绘制排序箭头来指示列排序是可用选项。 其次,它支持同时对多个列进行数据排序。
示例
下面的示例演示了如何使用 CMFCListCtrl
类中的各种方法。 该示例演示如何创建列表控件、插入列、插入项、设置项的文本以及设置列表控件的字体。 此代码片段是 Visual Studio 演示示例的一部分。
CMFCListCtrl m_wndWatch;
// DWORD dwStyle
// CRect rectDummy
m_wndWatch.Create(dwStyle, rectDummy, this, ID_LIST_1);
m_wndWatch.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_wndWatch.InsertColumn(0, _T("Variable"), LVCFMT_LEFT, 100);
m_wndWatch.InsertColumn(1, _T("Value"), LVCFMT_LEFT, 100);
m_wndWatch.InsertItem(0, _T("m_nCount"));
m_wndWatch.SetItemText(0, 1, _T("100"));
m_wndWatch.SetFont(&m_Font);
继承层次结构
要求
标头:afxlistctrl.h
CMFCListCtrl::EnableMarkSortedColumn
使用不同背景色标记已排序列。
void EnableMarkSortedColumn(
BOOL bMark = TRUE,
BOOL bRedraw = TRUE);
参数
bMark
[in] 一个布尔参数,确定是否要启用不同的背景色。
bRedraw
[in] 一个布尔参数,确定是否立即重新绘制控件。
备注
EnableMarkSortedColumn
使用方法 CDrawingManager::PixelAlpha
计算要用于已排序列的颜色。 选取的颜色基于常规背景色。
CMFCListCtrl::EnableMultipleSort
启用按多个列对列表控件中的数据行进行排序。
void EnableMultipleSort(BOOL bEnable = TRUE);
参数
bEnable
[in] 一个布尔值,指定是否启用多列排序模式。
注解
启用基于多个列的排序时,列具有层次结构。 数据行会首先按主列进行排序。 随后基于优先级,按每个后续列对任何相等值进行排序。
CMFCListCtrl::GetHeaderCtrl
返回对标头控件的引用。
virtual CMFCHeaderCtrl& GetHeaderCtrl();
返回值
对基础 CMFCHeaderCtrl
对象的引用。
备注
列表控件的标头控件是包含列标题的窗口。 它通常直接位于在列的上方。
CMFCListCtrl::IsMultipleSort
检查列表控件当前是否支持对多个列进行排序。
BOOL IsMultipleSort() const;
返回值
如果控件支持多重排序,则为 TRUE
;否则为 FALSE
。
备注
当 CMFCListCtrl
类支持多重排序时,用户可以按多个列对列表控件中的数据进行排序。 若要启用多重排序,请调用 CMFCListCtrl::EnableMultipleSort
。
CMFCListCtrl::OnCompareItems
框架在比较两个项时调用此方法。
virtual int OnCompareItems(
LPARAM lParam1,
LPARAM lParam2,
int iColumn);
参数
lParam1
[in] 要比较的第一项。
lParam2
[in] 要比较的第二项。
iColumn
[in] 此方法在进行排序的列的索引。
返回值
一个整数,指示两个项的相对位置。 负值指示第一项应位于第二个项之前,正值指示第一项应跟在第二项之后,零指示这两个项等效。
注解
默认实现始终返回 0。 替代此函数以提供自己的排序算法。
CMFCListCtrl::OnGetCellBkColor
当框架必须确定单个单元格的背景色时,框架会调用此方法。
virtual COLORREF OnGetCellBkColor(
int nRow,
int nColumn);
参数
nRow
[in] 相关单元格的行。
nColumn
[in] 相关单元格的列。
返回值
一个 COLOREF
值,指定单元格的背景色。
注解
OnGetCellBkColor
的默认实现不使用提供的输入参数,而只是调用 GetBkColor
。 因此默认情况下,整个列表控件会具有相同的背景色。 可以在派生类中替代 OnGetCellBkColor
,以使用单独的背景色标记单个单元格。
CMFCListCtrl::OnGetCellFont
框架在获取单个单元格的字体时调用此方法。
virtual HFONT OnGetCellFont(
int nRow,
int nColumn,
DWORD dwData = 0);
参数
nRow
[in] 相关单元格的行。
nColumn
[in] 相关单元格的列。
dwData
[in] 用户定义的数据。 默认实现不使用此参数。
返回值
用于当前单元格的字体的句柄。
注解
默认情况下,此方法返回 NULL
。 列表控件中的所有单元格都具有相同字体。 替代此方法以便为不同的单元格提供不同的字体。
CMFCListCtrl::OnGetCellTextColor
当框架必须确定单个单元格的文本颜色时,框架会调用此方法。
virtual COLORREF OnGetCellTextColor(
int nRow,
int nColumn);
参数
nRow
[in] 相关单元格的行。
nColumn
[in] 相关单元格的列。
返回值
一个 COLOREF
值,指定单元格的的文本颜色。
备注
默认情况下,无论输入参数如何,此方法都会调用 GetTextColor
。 整个列表控件会具有相同的文本颜色。 可以在派生类中替代 OnGetCellTextColor
,以使用单独的文本颜色标记单个单元格。
CMFCListCtrl::RemoveSortColumn
从已排序列的列表中移除排序列。
void RemoveSortColumn(int iColumn);
参数
iColumn
[in] 要移除的列。
备注
此方法从标头控件中移除排序列。 它调用 CMFCHeaderCtrl::RemoveSortColumn
。
CMFCListCtrl::SetSortColumn
设置当前已排序列和排序顺序。
void SetSortColumn(
int iColumn,
BOOL bAscending = TRUE,
BOOL bAdd = FALSE);
参数
iColumn
[in] 要排序的列。
bAscending
[in] 指定排序模式的布尔值。
bAdd
[in] 一个布尔值,指定该方法是否将 iColumn
指示的列添加到排序列的列表。
注解
此方法使用方法 CMFCHeaderCtrl::SetSortColumn
将输入参数传递给标头控件。
CMFCListCtrl::Sort
对列表控件进行排序。
virtual void Sort(
int iColumn,
BOOL bAscending = TRUE,
BOOL bAdd = FALSE);
参数
iColumn
[in] 要排序的列。
bAscending
[in] 指定排序模式的布尔值。
bAdd
[in] 一个布尔值,指定此方法是否将 iColumn
指示的列添加到排序列的列表。