树形控件的创建
MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入TreeCo
trol控件创建,另一种就是通过CTreeCtrl类的Create成员函数创建。下面主要讲后者。CTreeCtrl类的Create成员函数的原型如下:virtualBOOLCreateDWORDdwStyleco
stRECTrectCW
dpPare
tW
dUINT
ID此函数的原型与前面讲到的所有控件类的Create函数都类似。dwStyle指定树形控件风格的组合,rect指定树形控件窗口的位置和大小,pPare
tW
d为指向树形控件父窗口的指针,
ID指定树形控件的ID。下面还是主要讲讲树形控件的主要风格以及含义。TVS_DISABLEDRAGDROP:禁止树形控件发送TVN_BEGINDRAG通知消息,即不支持拖动操作TVS_EDITLABELS:用户可以编辑节点的标签文本TVS_HASBUTTONS:显示带有""或""的小方框来表示某项能否被展开或已展开TVS_HASLINES:在父节点与子节点间连线以更清晰地显示树的结构TVS_LINESATROOT:在根节点处连线TVS_SHOWSELALWAYS:即使控件失去输入焦点,仍显示出项的选择状态同样,动态创建树形控件时,除了能够指定上述风格的组合外,一般还要指定WS_CHILD和WS_VISIBLE风格。在对话框模板中直接拖入TreeCo
trol创建树形控件时,可以在树形控件的属性页中设置其风格,与上面的风格是对应的,例如,属性HasLi
es对应的就是TVS_HASLINES风格。
CTreeCtrl类的主要成员函数
CImageListSetImageListCImageListpImageListi
t
ImageListType如果树节点需要显示图标时,则必须先创建一个CImageList类的对象,并为其添加多个图像组成一个图像序列,然后调用SetImageList函数为树形控件设置图像序列,在用I
sertItem插入节点时传入所需图像在图像序列中的索引即可。后面的例子中会演示。参数pImageList为指向图像序列类CImageList的对象的指针,若为NULL则删除树形控件的所有图像。参数
ImageListType指定图像序列的类型,可以是TVSIL_NORMAL(普通图像序列)或TVSIL_STATE(状态图像序列,用图像表示节点的状态)。
fUINTGetCou
tco
st获取树形控件中节点的数量。DWORD_PTRGetItemDataHTREEITEMhItemco
st获取树形控件中某个指定节点的附加32位数据。参数hItem为指定的树节点的句柄。BOOLSetItemDataHTREEITEMhItemDWORD_PTRdwData为树形控件中某个指定节点设置附加的32位数据。参数hItem同上,dwData为要设置的32位数据。CStri
gGetItemTextHTREEITEMhItemco
st获取树形控件中某个指定节点的标签文本。参数hItem同上。返回值是包含标签文本的字符串。BOOLSetItemTextHTREEITEMhItemLPCTSTRlpszItem为树形控件中某r