使用由 CHeaderCtrl 类表示的标头控件显示纵栏式列表的列标头。例如,标头控件对于实现电子表格中的列控件应该很有用。
标头控件通常分为叫做“标头项”的各个部分,每个部分有一个关联文本或数字列的标题。根据设置的样式,可以为用户提供若干操作标头项的直接方式。
注意 CListCtrl 提供嵌入标头控件,而 CListView 在 MFC 类中封装 CListCtrl。通常,可考虑使用 CHeaderCtrl 为想要自己绘制的列表加标签。
标头控件和列表控件 (List Control)
大多数情况下,使用嵌入 CListCtrl 或 CListView 对象中的标头控件。但在某些情况中,最好使用单独的标头控件对象,如操作 CView 派生的对象中按行或列排列的数据。在这些情况下,需要进一步控制嵌入标头控件的外观和默认行为。
通常情况下,当希望标头控件提供标准的默认行为时,可能需要改用 CListCtrl 或 CListView。当需要嵌入列表视图公共控件中的默认标头控件功能时,使用 CListCtrl。当需要嵌入视图对象中的默认标头控件功能时,使用 CListView。
注意 如果列表视图 (ListView) 控件是使用 LVS_REPORT 样式创建的,则这些控件只包含内置标头控件。
大多数情况下,可以通过更改包含列表视图 (ListView) 控件的样式来修改嵌入标头控件的外观。另外,可以通过父列表视图 (ListView) 控件的成员函数获取有关标头控件的信息。但是,若要完全控制和访问嵌入标头控件的属性和样式,建议获取指向标头控件对象的指针。
可通过调用各自类的 GetHeaderCtrl 成员函数,从 CListCtrl 或 CListView 访问嵌入标头控件对象。以下代码对此进行了说明:
CListCtrl& refList = GetListCtrl();
CHeaderCtrl* pCtrl = refList.GetHeaderCtrl();
ASSERT(pCtrl != NULL);
//perform any needed operations on the header
//using pHeader
标头控件示例
LISTHDR 示例应用程序对列表视图 (ListView) 控件(由 CListCtrl 对象实现)和嵌入标头控件(由 CHeaderCtrl 对象实现)的各种属性和样式进行了说明。
有关标头控件的示例,请参见“资源管理器”中的右边窗格和 Platform SDK 中的主题标头控件。
标头控件中的标头项
您对组成标头控件 (CHeaderCtrl) 的标头项的外观和行为有相当大的控制。每个标头项可以包含一个字符串,一个位图图像,一个来自关联图像列表的图像,或一个关联应用程序定义的 32 位值。字符串、位图或图像显示在标头项中。