CHeaderCtrl 参考

4 篇文章 0 订阅

CHeaderCtrl

CHeaderCtrl

CObject
 └CCmdTarget
    └CWnd
       └CHeaderCtrl

“标头控件”是一个窗口,通常在文本或数据顶部。它包含列名字,可以被拆分。用户可以拖动分隔线来分开各个部分,以设置各列的宽度。
CHeaderCtrl提供了Windows基本标头控件功能。此控件(以及CHeaderCtrl类)仅对运行于Windows 95,Windows NT 3.51版及以上的程序有效。
对IE 4.0的附加控件添加的功能包括:
·标头项目的定制排序。
·标头项目的拖放,直接重新设置标头项目。创建CHeaderCtrl对象时采用HDS_DRAGDROP风格。
·在列大小改变时一直保持标头项目文本可视。创建CHeaderCtrl对象时采用HDS_DRAGDROP风格。
·标头热追踪。当指针停留在标头项目之上时,标头项目高亮度显示。创建CHeaderCtrl对象时采用HDS_DRAGDROP风格。
·支持图象列表。标头项目可以包含存放在CImageList对象中的图象。
要了解有关使用CHeaderCtrl的更多信息,可参阅联机文档的“VisualC++程序员指南”中的“控件主题”和“使用CHeaderCtrl”。
#include <afxcmn.h>


CHeaderCtrl类的成员

构造函数
CHeaderCtrl构造一个CHeaderCtrl对象
Create创建一个标头控件并把它附加给CHeaderCtrl对象

属性
GetItemCount获取一个标头控件下的项目总数
GetItem获取一个标头控件中项目的更多信息
SetItem设置一个标头控件中指定项目的属性
GetImageList获取在标头控件中画标头项目的图象列表的句柄
SetImageList将一个图象列表在标头控件中排列
GetItemRect获取一个标头控件中给定控件的有界矩形
GetOrderArray获取一个标头控件中自左至右的顺序排列的项目
SetOrderArray在一个标头控件中设置自左至右的项目顺序
OrderToIndex获得一个标头控件中依项目顺序排列的项目的索引值

操作
InsertItem在一个标头控件中添加一个项目
DeleteItem从一个标头控件中删除一个项目
Layout在一个给定矩形中获取一个标头控件的大小和位置
CreateDragImage创建一个项目的图象的透明形式
SetHotDivider改变在标头项目之间的分隔线来显示一个标头项目的人工拖放

可覆盖的函数
DrawItem绘制一个标头控件中的指定项目

CHeaderCtrl::CHeaderCtrl

CHeaderCtrl( );

说明:构造一个CHeaderCtrl对象。

CHeaderCtrl::Create

BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);

返回值:
如果初始化成功,则返回非零值,否则为0。

参数:
dwStyle指定标头控件的风格,使用控件需要的任意标头控件风格的结合。
rec指定标头控件的大小与位置,或者是一个CRect对象或者是一个RECT结构。
pParentWnd指定标头控件的父窗口,通常是一个CDialog,不能为NULL。
nID指定标头控件的ID。

说明:
分两步建立一个CHeaderCtrl对象。首先调用构造函数,然后调用Create来创建标头控件并把它附加给CHeaderCtrl对象。
以下风格可被用于标头控件(见联机文档“平台SDK”中的“关于标头控件风格”):
·HDS_HOTTRACK当指针停留在标头项目时,此项目高亮度显示。
·HDS_DRAGDROP标头控件可以被拖放,以实现重排序。
·HDS_FULLDRAG当用户改变列大小时,标头控件显示列内容。
·HDS_BUTTONS标头控件与按钮一样。
·HDS_HORZ标头控件水平。
·HDS_VERT标头控件垂直(此风格当前不采用)。
·HDS_HIDDEN标头控件在详细模式下不可见。
另外,可以使用以下常用控件风格来确定标头控件自己的大小和位置(见“平台SDK”中的“常用控件风格”)。
·CCS_BOTTOM使控件自身排列在父窗口用户区的底部并设置其宽度与父窗口的宽度一样。
·CCS_NODIVIDER禁止在控件顶部画一个二像素高亮度显示。
·CCS_NOHILITE禁止在控件顶部画一个一像素高亮度显示。
·CCS_NOMOVEY使控件自己水平改变大小及移动而不垂直移动,响应WM_SIZE消息。如果使用CCS_NORESET风格,则此风格无效。标头控件缺省时具有此风格。
·CCS_NOPARENTALIGNCCS_TOP CCS_BOTTOM禁止对象在父窗口顶部或底部自动移动。尽管父窗口大小改变了,控件仍在父窗口中保持其位置。如果CCS_TOP或CCS_BOTTOM风格也被使用,则缺省调整高度,但位置与宽度不变。
·CCS_NORESIZE禁止控件在初始化或新大小设置时使用缺省宽度与高度,而是用创建或新设请求时指定的宽度和高度。
·CCS_TOP使控件定位于父窗口用户区的顶部并使其宽度与父窗口一样。
也可以对一个标头控件使用以下窗口风格(见“MFC库参考,第二部分”中的“Windows风格”):
·WS_CHILD构造一个子窗口,不可与WS_POPUP风格同时使用。
·WS_VISIBLE构造一个初始可见的窗口。
·WS_DISABLED构造一个初始不可见的窗口。
·WS_GROUP指定一组控件中的第一个可以用箭头从一个控件移到另一个控件的控件。从第一个开始,所有的用WS_GROUP风格定义均属于同一组。下一个用WS_GROUP风格结束的控件结束了此组并开始一个新组(即:下一个开始时,上一个便结束)。
·WS_TABSTOP指定了控件的任意一个,通过它用户可以用TAB键移动。TAB键使用户访问由WS_TABSTOP风格指定的另一个控件。


CHeaderCtrl::CreateDragImage

CImageList* GreateDragImage(int nIndex);

返回值:
如果成功,则返回一个指向CImageList对象的指针,否则为NULL。返回的列表仅包含一个图象。

参数:
nIndex标头控件内项目的基于0的索引。分配给此项目的图象是透明图象的基础。

说明:
此成员函数执行Win32的消息HDM_CREATEDRAGIMAGE的动作,可参阅联机文档“平台SDK”中的叙述。它提供了对项目拖放的支持。
返回的指向的CImageList对象指针是一个临时对象,当下一个空闲时间运行时即被删除。


CHeaderCtrl::DeleteItem

BOOL DeleteItem(int nPos);

返回值:如果成功,则返回非零值,否则为0。

参数:
nPos要删除的项目的基于0的索引。

说明:从一个标头控件中删去一个项目。

CHeaderCtrl::DrawItem

void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

参数:
lpDraWItemStruct指向描述着色项目DRAWITEMSTRUCT结构的指针。

说明:
当拥有者绘制的标头控件的可视背景改变时,由框架调用。ItemAction成员的DRAWITEMSTRUCT结构定义了将要进行的绘画动作。
缺省时,此成员函数不做任何事情。覆盖此函数,可绘制拥有者的CHeaderCtrl对象。在此成员函数终止之前,应用应存储所有由lpDrawItemStruct提供的、用于显示上下文的图形设备接口对象。

CHeaderCtrl::GetImageList

CImageList* GetImageList( ) const;

返回值:一个指向CImageList对象的指针。

说明:
此成员函数实现Win32消息HDM_GETIMAGELIST的功能,可参阅联机文档“平台SDK”。
指向CImageList对象的返回指针是一个临时对象指针,当下一个空闲时间运行时被删除。

CHeaderCtrl::GetItem

BOOL GetItem(int nPos, HDITEM* pHeaderItem) const;

返回值:如果成功,则返回非零值;否则为0。

参数:
nPos指定要获取的项目的基于0的索引。
pHeaderItem指向接收新项目的HDITEM结构的指针,此结构与InsertItem和SetItem成员函数一起使用。
mask元素中的标志设置保证对应元素中的值被返回值正确填充。如果mask元素被设置为0,则其它结构元素无意义。

说明:获取关于标头控件项目的信息。


CHeaderCtrl::GetItemCount

int GetItemCount( ) const;

返回值:
如果成功,则返回标头控件项目的个数,否则为-1。

说明:获取标头控件中的项目的个数。


CHeaderCtrl::GetItemRect

BOOL GetItemRect(int nIndex, LPRECT lpRect) const;

返回值:如果成功,则返回非零值,否则为0。

参数:
nIndex标头控件项目基于0的索引。
lpRect指向RECT项目地址的指针,以接收有界矩形的更多信息。

说明:

此函数实现Win32消息HDM_GETITEMRECT的功能,可参阅联机文档“平台SDK”。 

CHeaderCtrl::GetOrderArray

BOOL GetOrderArray(LPINT piArray, int iCount = -1);

返回值:如果成功,则返回非零值,否则为0。

参数:
piArray指向缓冲区地址的指针,以接收标头控件项目值的索引,按它们从左到右的显示顺序。
iCount标头控件的项目数。

说明:
此成员函数实现Win32消息HDM_GETORDERARRAY的功能,可参阅联机文档“平台SDK”。它提供对标头项目排序的支持。
如果使用iCount的缺省值,则GetOrderArray使用GetItemCount填充参数。


CHeaderCtrl::InsertItem

int InserItem(int nPos, HDITEM* phdi);

返回值:如果成功,则返回新项目索引,否则为-1。

参数:
nPos插入项目的基于0的索引。如果为0,则此项目插入标头控件的开始处;如果此值大于最大值,则此项目插入标头控件末尾。
phdi指向一个包括被插入项目信息的HDITEM结构的指针。

说明:插入一个指定的索引的项目到标头控件。

CHeaderCtrl::Layout

BOOL Layout(HDLAYOUT* pHeaderLayout);

返回值:如果成功,则返回非零值,否则为0。

参数:
pHeaderLayout指向一个HDLAYOUT结构的指针,包含标头控件的大小和位置信息。

说明:
获取在一个指定矩形内的标头控件的大小和位置。此函数用于指定占用给定矩形的新标头控件的属性情况。 

CHeaderCtrl::OrderToIndex

int OrderToIndex(int nOrder) const;

返回值:
项目索引,基于标头控件中项目的顺序。索引自左到右由0开始。

参数:
nOrder项目在标头控件从左到右显示时的基于0的顺序值。

说明:
此成员函数实现Win32的宏HDM_ORDERTOINDEX的功能,可参阅联机文档“平台SDK”。
它提供对标头排序的支持。

CHeaderCtrl::SetHotDivider

int SetHotDivider(CPoint pt);
int SetHotDivider(int nIndex);

返回值:高亮度分隔符的索引。

参数:
pt指针位置。标头控件按指针位置,高亮度显示分隔符索引。
nIndex高亮度分隔符的索引。

说明:
此成员函数实现Win32消息HDM_SETHOTDIVIDER的功能,可参阅联机文档“平台SDK”。它提供对标头项目的拖放。

CHeaderCtrl::SetImageList

CImageList* SetImageList(CImageList* pImageList);

返回值:
以前分配给标头控件的CImageList对象的指针。

参数:
pImageList指向CImageList对象,此对象包含将被分配给标头控件的图象列表。

说明:
此成员函数实现Win32消息HDM_SETIMAGELIST的功能,可参阅联机文档“平台SDK”。返回指针指向的CImageList对象是一个临时对象,在下一空闲时间运行时被删除。

CHeaderCtrl::SetItem

BOOL SetItem(int nPos,HDITEM* pHeaderItem);

返回值:如果成功,则返回非零,否则为0。

参数:
nPos被操纵的项目的基于0的索引。
pHeaderItem指向HDITEM结构的指针,此结构包含新项目的信息。

说明:设置标头控件中项目的属性。

CHeaderCtrl::SetOrderArray

BOOL SetOrderArray(int iCount,LPINT piArray);

返回值:如果成功,则返回非零值,否则为0。

参数:
iCount标头控件的项目数。
piArray指向缓冲区地址的指针,按其由左到右的显示顺序,接收标头控件中项目的索引值。

说明:
此成员函数实现Win32的宏HDM_SETORDERARRAY的功能,可参阅联机文档“平台SDK”。它提供对标头项目排序的支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值