汇编教程之树型视图控件
2008-04-28 09:33:29 来源:WEB开发网该结构体根据消息类型,用来发送或接收关于一个树型视图的项目的有关信息。譬如:对于消息TVM_INSERTITEM,它用来指定插入树型视图控件的项目的属性。而对于消息TVM_GETITEM,该结构体用来填充关于选定项目的信息。
imask 用来指定TV_ITEM的那些成员变量有效。譬如,如果指定了TVIF_TEXT,这意味着pszText成员变量是有效的。您可以同时指定几个标志位。
hItem 是树型视图项目的句柄。每一个项目都有它自己的句柄,就像窗口一样。如果您想要操作一个项目,就必须选择它的句柄。
pszText 是一个字符串指针。它是项目的标签名。
cchTextMax仅在查询项目的名称时使用。由于在pszText中指定了指针,WINDOWS还要知道该缓冲去的大小。所以您必须给出该值。
iImage 和 iSelectedImage用来指定图象列表以及一个索引号。这样就知道当项目被选中或没被选中时用哪个图象来表示该项目。像资源管理器中左边窗口中的文件夹等小图表就是有这两个参数来决定的。
为了在树型视图中插入一个项目,您必须至少设定hParent, hInsertAfter,另外您还要设定imask和pszText值。
把图形加到图形视图中
如果您想要在项目的名称左边显示图标的话,您必须创建一个图形列表,并且把它和树形视图相关联起来。您可以调用ImageList_Create来创建一个图形列表。
ImageList_Create PROTO cx:DWORD, cy:DWORD, flags:DWORD, \
cInitial:DWORD, cGrow:DWORD
如果创建成功的话,该函数返回一个空的图象列表的句柄。
cx == 以像素为单位的图象的宽度。
cy == 以像素为单位的图象的高度。图象列表中的每一幅的高度都必须相同。否则WINDOWS会对您的图象进行裁剪,如果过大的话就可能裁剪成几小块。所以您必须指定相同大小的图象。
flags == 指定图象列表的图象的颜色深度。详细情况请参考WIN32 API 指南。
cInitial == 指定包含的图象的数目。WINDWOS将依此来分配合适的内存。
cGrow == 在增加新图象是一次增加的数目。
图象列表不是窗口。仅仅是保存在那给其它的窗口使用的一种资源。 在图象列表产生后,您可以调用ImageList_Add来向其中加入图象。
ImageList_Add PROTO himl:DWORD, hbmImage:DWORD, hbmMask:DWORD
如果该函数调用失败的话,返回-1。
himl == 图象列表的句柄。它是调用ImageList_Create时返回的值。
hbmImage == 加入图象列表的位图的句柄。您通常把位图保存在资源中,然后调用LoadBitmap来把它加载进来。 注意您没有必要指定该位图中包含的图象的数目。WINDOWS会根据它的大小,自动计算。
hbmMask == 掩码位图的句柄。如果没有使用掩码位图,可以忽略该值。 通常我们加入两种图象到图象列表中。一种时被选中时显示的图象,另一种时没被选中时显示的。
当图象列表准备就绪后,您可以发送消息TVM_SETIMAGELIST给树型视图来让图象列表和树型视图联系起来。
TVM_SETIMAGELIST
wParam = 图象列表的状态,一共有两种:
TVSIL_NORMAL 包含被选中和没有被选中两种状态的图象。
TVSIL_STATE 包含了用户自定义的状态的图象。
lParam = 图象列表的句柄。
检索树型视图的信息
您可以通过发送消息TVM_GETITEM来检索图形视图的信息。
TVM_GETITEM
wParam = 0
lParam =指向结构体TV_ITEM的指针。该结构体将用来得到相关的信息。
更多精彩
赞助商链接