CMFCHeaderCtrl 类

CMFCHeaderCtrl 类支持对标头控件的多个列进行排序。

语法

class CMFCHeaderCtrl : public CHeaderCtrl

成员

公共构造函数

名称 描述
CMFCHeaderCtrl::CMFCHeaderCtrl 构造 CMFCHeaderCtrl 对象。
CMFCHeaderCtrl::~CMFCHeaderCtrl 析构函数。

公共方法

名称 描述
CMFCHeaderCtrl::EnableMultipleSort 启用或禁用当前标头控件的多列排序模式
CMFCHeaderCtrl::GetColumnState 指示列是未排序,还是按升序或降序排序。
CMFCHeaderCtrl::GetSortColumn 检索标头控件中第一个排序列的从零开始的索引。
CMFCHeaderCtrl::GetThisClass 由框架用于获取指向与此类类型关联的 CRuntimeClass 对象的指针。
CMFCHeaderCtrl::IsAscending 指示标头控件中的任何列是否按升序排序。
CMFCHeaderCtrl::IsDialogControl 指示当前标头控件的父窗口是否为对话框。
CMFCHeaderCtrl::IsMultipleSort 指示当前标头控件是否处于多列排序模式
CMFCHeaderCtrl::RemoveSortColumn 从排序列列表中删除指定的列。
CMFCHeaderCtrl::SetSortColumn 设置标头控件中指定列的排序顺序。

受保护方法

名称 描述
CMFCHeaderCtrl::OnDrawItem 由框架调用以绘制标头控件列。
CMFCHeaderCtrl::OnDrawSortArrow 由框架调用以绘制排序箭头。
CMFCHeaderCtrl::OnFillBackground 由框架调用以填充标头控件列的背景。

示例

以下示例演示如何构造 CMFCHeaderCtrl 类的对象,以及如何为当前标头控件启用多列排序模式

CMFCHeaderCtrl *headerCtrl = new CMFCHeaderCtrl();
headerCtrl->EnableMultipleSort();

备注

CMFCHeaderCtrl 类在标头控件列上绘制排序箭头,以指示已对该列进行排序。 如果可以同时对父列表控件(CMFCListCtrl 类)中的一组列进行排序,请使用多列排序模式

继承层次结构

CObject

CCmdTarget

CWnd

CHeaderCtrl

CMFCHeaderCtrl

要求

标头:afxheaderctrl.h

CMFCHeaderCtrl::CMFCHeaderCtrl

构造 CMFCHeaderCtrl 对象。

CMFCHeaderCtrl::CMFCHeaderCtrl()

注解

此构造函数将以下成员变量初始化为指定值:

成员变量
m_bIsMousePressed FALSE
m_bMultipleSort FALSE
m_bAscending TRUE
m_nHighlightedItem -1
m_bTracked FALSE
m_bIsDlgControl FALSE
m_hFont Null

CMFCHeaderCtrl::EnableMultipleSort

启用或禁用当前标头控件的多列排序模式

void EnableMultipleSort(BOOL bEnable=TRUE);

参数

bEnable
[in] 为 TRUE 则启用多列排序模式;为 FALSE 则禁用多列排序模式,并从排序列列表中删除任何列。 默认值为 TRUE。

备注

使用此方法启用或禁用多列排序模式。 如果标头控件处于多列排序模式,则两列或更多列可以参与排序。

CMFCHeaderCtrl::GetColumnState

指示列是未排序,还是按升序或降序排序。

int GetColumnState(int iColumn) const;

参数

iColumn
[in] 列的从零开始的索引。

返回值

指示指定列的排序状态的值。 下表列出了可能的值:

说明
-1 已按降序排序。
0 未排序。
1 已按升序排序。

备注

CMFCHeaderCtrl::GetSortColumn

检索标头控件中第一个排序列的从零开始的索引。

int GetSortColumn() const;

返回值

已排序列的索引;如果未找到已排序列,则返回 -1。

备注

如果标头控件处于多列排序模式,并且以调试模式编译了应用程序,则此方法断言并建议改用 CMFCHeaderCtrl::GetColumnState 方法。 如果标头控件处于多列排序模式,并且以零售模式编译了应用程序,则此方法返回 -1。

CMFCHeaderCtrl::IsAscending

指示标头控件中的任何列是否按升序排序。

BOOL IsAscending() const;

返回值

如果标头控件中的任何列按升序排序,则返回 TRUE;否则返回 FALSE。

注解

此方法返回的值用于在标头控件项上显示适当的排序箭头。 使用 CMFCHeaderCtrl::SetSortColumn 方法设置排序顺序。

CMFCHeaderCtrl::IsDialogControl

指示当前标头控件的父窗口是否为对话框。

BOOL IsDialogControl() const;

返回值

如果当前标头控件的父窗口为对话框,则返回 TRUE;否则返回 FALSE。

CMFCHeaderCtrl::IsMultipleSort

指示当前标头控件是否处于多列排序模式

BOOL IsMultipleSort() const;

返回值

如果启用了多列排序模式,则返回 TRUE;否则返回 FALSE。

备注

使用 CMFCHeaderCtrl::EnableMultipleSort 方法启用或禁用多列排序模式。 如果标头控件处于多列排序模式,则两列或更多列可以参与排序。

CMFCHeaderCtrl::OnDrawItem

由框架调用以绘制标头控件列。

virtual void OnDrawItem(
    CDC* pDC,
    int iItem,
    CRect rect,
    BOOL bIsPressed,
    BOOL bIsHighlighted);

参数

pDC
[in] 指向设备上下文的指针。

iItem
[in] 要绘制的项的从零开始的索引。

rect
[in] 要绘制的项的边框。

bIsPressed
[in] 为 TRUE 则绘制处于按下状态的项;否则为 FALSE。

bIsHighlighted
[in] 为 TRUE 则绘制处于突出显示状态的项;否则为 FALSE。

CMFCHeaderCtrl::OnDrawSortArrow

由框架调用以绘制排序箭头。

virtual void OnDrawSortArrow(
    CDC* pDC,
    CRect rectArrow);

参数

pDC
[in] 指向设备上下文的指针。

rectArrow
[in] 排序箭头的边框。

CMFCHeaderCtrl::OnFillBackground

由框架调用以填充标头控件列的背景。

virtual void OnFillBackground(CDC* pDC);

参数

pDC
[in] 指向设备上下文的指针。

备注

CMFCHeaderCtrl::RemoveSortColumn

从排序列列表中删除指定的列。

void RemoveSortColumn(int iColumn);

参数

iColumn
[in] 要删除列的从零开始的索引。

CMFCHeaderCtrl::SetSortColumn

设置标头控件中指定列的排序顺序。

void SetSortColumn(
    int iColumn,
    BOOL bAscending=TRUE,
    BOOL bAdd=FALSE);

参数

iColumn
[in]标头控件列的从零开始的索引。 如果此参数小于零,此方法将从排序列列表中删除所有列。

bAscending
[in ]指定 iColumn 参数指定的列的排序顺序。 为 TRUE 则设置为升序顺序;为 FALSE 则设置为降序顺序。 默认值为 TRUE。

bAdd
[in] 为 TRUE 则设置 iColumn 参数指定的列的排序顺序

如果当前标头控件处于多列排序模式,此方法会将指定的列添加到排序列列表。 使用 CMFCHeaderCtrl::EnableMultipleSort 设置多列排序模式。

如果未设置多列排序模式,并且此方法在调试模式下编译,则此方法断言。 如果未设置多列排序模式,并且此方法在零售模式下编译,则此方法首先从排序列列表中删除所有列,然后将指定的列添加到列表中。

如果为 FALSE 则首先从排序列列表中删除所有列,然后将指定的列添加到列表中。 默认值是 FALSE。

备注

使用此方法设置列的排序顺序。 如有必要,此方法会将列添加到排序列列表。 标头控件使用排序顺序绘制向上或向下点的排序箭头。

另请参阅

层次结构图

CMFCListCtrl 类