TV_ITEM结构和TV_INSERTSTRCT结构的定义:
- typedef struct _TVITEM{
- UINT mask; //说明TVITEM结构中哪些成员有效
- HTREEITEM hItem; //项目句柄
- UINT state; //项的状态
- UINT stateMask; //状态有效的屏蔽位
- LPSTR pszText; //项目名称
- int cchTextMax; //pszText所指向的缓冲区的大小
- int iImage; //当项目没有选中时关联图像列表的图像索引值
- int iSelectedImage; //当项目选中时关联图像列表的图像索引值
- int cChildren; //该项目是否包含子项目
- LPARAM iParam; //程序定义的32为参数
- }TVITEM,FAR *LPTVITEM;
- typedef struct _TVINSERTSTRUCT{
- HTREEITEM hParent; //插入项的父项的句柄
- HTREEITEM hInsertAfter; //插入处上一项的句柄或位置标志值
- TV_ITEM item; //插入的项目
- }TVINSERTSTRUCT,FAR *LPTVINSERTSTRUCT;
树视控件常用的属性有:Has buttons表示父项目的前面有一个“+”或“—”按钮,单机该按钮可以展开或折叠该项目;Has lines表示用连线体现项目之间的层次关系;Edit labels表示可以编辑项目的名称;Check boxes表示项目的左侧有一个复选框;Lines at root表示在项目的最高层用连线将项目与根项目连接;Single expand表示单机项目可以展开或折叠该项目。
封装树视控件的MFC类是CTreeCtrl类。CTreeCtrl类主要的成员函数有:SetImageList()函数设置与树视控件关联的图像列表;GetCount()函数返回控件中项目的数量;GetSelectedItem()函数返回当前选中的项目;GetNextItem()函数获得满足某种条件的项目;GetChildItem()或GetparentItem()函数返回一个项目的子项目或父项目;GetNextSiblingItem()或GetPrevSiblingItem()函数返回下一个或上一个兄弟项;GetRootItem()函数返回根项目;GetItemText()或SetItemText()函数用于获取或设置项目的文本串;GetItemData()或SetItemData()函数获得或设置项目的关联数据;InsertItem()函数插入一个项目;DeleteItem()函数删除一个项目;DeleteAllItem()函数删除所有项目;Expand()函数展开或者折叠项目。
示例:
编写一个对话框应用程序MyTree,对话框中有一个树视控件和其他一些如图所示的按钮。树视控件用于显示一些有层次关系的项目,用户可通过“添加”或“删除”按钮向树视控件中添加或删除一个项目。