Share via


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 对列表控件进行排序。

备注

CMFCListCtrlCListCtrl类提供两个增强功能。 首先,它通过自动在标题上绘制排序箭头来指示列排序是可用选项。 其次,它支持同时对多个列进行数据排序。

示例

下面的示例演示了如何使用 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);

继承层次结构

CObject

CCmdTarget

CWnd

CListCtrl

CMFCListCtrl

要求

标头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 指示的列添加到排序列的列表。

另请参阅

层次结构图

CListCtrl