树形控件的创建
- 在对话框模板中直接拖入Tree Control控件创建;
- 通过CTreeCtrl类的Create成员函数创建。
CtreeCtrl类
-
构造函数
Virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID
);dwStyle指定树形控件风格的组合;
rect指定树形控件窗口的位置和大小;
pParentWnd为指向树形控件父窗口的指针;
nID执行属性控件的ID。
树形控件风格1:
TVS_DISABLEDRAGDROP:禁止树形控件发送TVN_BEGINDRAG通知消息,即不支持拖动操作;
TVS_EDITLABELS:用户可以编辑节点的标签文本
TVS_HASBUTTONS:显示带有"+"或"-"的小方框来表示某项能否被展开或已展开
TVS_HASLINES:在父节点与子节点间连线以更清晰地显示树的结构
TVS_LINESATROOT:在根节点处连线
TVS_SHOWSELALWAYS:即使控件失去输入焦点,仍显示出项的选择状态
-
设置图像序列
CImageList* SetImageList(CImageList * pImageList,int nImageListType);
如果树节点需要显示图标时,则必须先创建一个CImageList类的对象,并为其添加多个图像组成一个图像序列,然后调用SetImageList函数为树形控件设置图像序列,在用InsertItem插入节点时传入所需图像在图像序列中的索引即可。参数pImageList为指向图像序列类CImageList的对象的指针,若为NULL则删除树形控件的所有图像。参数nImageListType指定图像序列的类型,可以是TVSIL_NORMAL(普通图像序列)或TVSIL_STATE(状态图像序列,用图像表示节点的状态)。 -
获取树形控件中节点的数量
UINT GetCount( ) const; -
获取树形控件中某个指定节点的附加32位数据
DWORD_PTR GetItemData(HTREEITEM hItem) const; -
为树形控件中某个指定节点设置附加的32位数据
BOOL SetItemData(HTREEITEM hItem,DWORD_PTR dwData); -
获取树形控件中某个指定节点的标签文本
CString GetItemText(HTREEITEM hItem) const; -
为树形控件中某个指定节点设置标签文本
BOOL SetItemText(HTREEITEM hItem,LPCTSTR lpszItem); -
获取树形控件中某个指定节点的下一个兄弟节点
HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const; -
获取树形控件中某个指定节点的上一个兄弟节点
HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const; -
获取树形控件中某个指定节点的父节点
HTREEITEM GetParentItem(HTREEITEM hItem) const; -
获取树形控件根节点的句柄
HTREEITEM GetRootItem( ) const; -
获取树形控件当前选中节点的句柄
HTREEITEM GetSelectedItem( ) const; -
删除树形控件中的所有节点
BOOL DeleteAllItems( ); -
删除树形控件中的某个节点
BOOL DeleteItem(HTREEITEM hItem); -
在树形控件中插入一个新节点
HTREEITEM InsertItem(
LPCTSTR lpszItem,
int nImage,
int nSelectedImage,
HTREEITEM hParent = TVI_ROOT,
HTREEITEM hInsertAfter = TVI_LAST
);
参数lpszItem为新节点的标签文本字符串的指针,参数nImage为新节点的图标在树形控件图像序列中的索引,参数nSelectedImage为新节点被选中时的图标在图像序列中的索引,参数hParent为插入节点的父节点的句柄,参数hInsertAfter为新节点的前一个节点的句柄,即新节点将被插入到hInsertAfter节点之后。 -
选中指定的树节点
BOOL SelectItem(HTREEITEM hItem);
在对话框模板中直接拖入Tree Control创建树形控件时,可以在树形控件的属性页中设置其风格,与上面的风格是对应的,例如,属性Has Lines对应的就是TVS_HASLINES风格。 ↩︎