MFC 树形控件CTreeCtrl类
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 树形控件CTreeCtrl类相关的知识,希望对你有一定的参考价值。
文章目录
- API
- 树形控件创建:Create()
- 设置节点显示图标:SetImageList()
- 获取节点数量:GetCount()
- 获取树形控件中某节点的附加32位数据:GetItemData()
- 为树形控件中某个指定节点设置附加的32位数据:SetItemData()
- 获取树形控件中某个指定节点的标签文本:GetItemText()
- 为树形控件中某个指定节点设置标签文本:SetItemText()
- 获取树形控件中某个指定节点的下一个兄弟节点:GetNextSiblingItem()
- 获取树形控件中某个指定节点的上一个兄弟节点:GetPrevSiblingItem()
- 获取树形控件中某个指定节点的父节点:GetParentItem()
- 获取树形控件根节点的句柄:GetRootItem()
- 获取树形控件当前选中节点的句柄:GetSelectedItem()
- 删除树形控件中的所有节点:DeleteAllItems()
- 删除树形控件中的某个节点:DeleteItem()
- 在树形控件中插入一个新节点:InsertItem()
- 选中指定的树节点:SelectItem()
MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。
API
树形控件创建:Create()
树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control控件创建,另一种就是通过CTreeCtrl类的Create成员函数创建。
前者拖控件,只要你再在类向导里为控件添加一个控件类型的变量,系统就会调用一系列生成函数默认生成该变量对象,
下面Create函数讲的是后者的创建。
Create成员函数的原型如下:
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID
);
参数:
- dwStyle指定树形控件风格的组合(参数详情见下文表格风格表格)
- rect指定树形控件窗口的位置和大小
- pParentWnd为指向树形控件父窗口的指针
- nID指定树形控件的ID。
dwStyle
可选项:
风格 | 含义 |
---|---|
TVS_DISABLEDRAGDROP | 禁止树形控件发送TVN_BEGINDRAG通知消息,即不支持拖动操作 |
TVS_EDITLABELS | 用户可以编辑节点的标签文本 |
TVS_HASBUTTONS | 显示带有"+"或"-"的小方框来表示某项能否被展开或已展开 |
TVS_HASLINES | 在父节点与子节点间连线以更清晰地显示树的结构 |
TVS_LINESATROOT | 在根节点处连线 |
TVS_SHOWSELALWAYS | 即使控件失去输入焦点,仍显示出项的选择状态 |
同样,动态创建树形控件时,除了能够指定上述风格的组合外,一般还要指定WS_CHILD
和WS_VISIBLE
风格。
在对话框模板中直接拖入Tree Control创建树形控件时,可以在树形控件的属性页中设置其风格,与上面的风格是对应的,例如,属性Has Lines
对应的就是TVS_HASLINES
风格。
设置节点显示图标:SetImageList()
CImageList* SetImageList(CImageList * pImageList,int nImageListType);
如果树节点需要显示图标时,则必须先创建一个CImageList类的对象,并为其添加多个图像组成一个图像序列,然后调用SetImageList函数为树形控件设置图像序列,在用InsertItem插入节点时传入所需图像在图像序列中的索引即可。
pImageList
为指向图像序列类CImageList的对象的指针,若为NULL则删除树形控件的所有图像。nImageListType
指定图像序列的类型,可以是TVSIL_NORMAL
(普通图像序列)或TVSIL_STATE
(状态图像序列,用图像表示节点的状态)。
获取节点数量:GetCount()
UINT GetCount( ) const;
获取树形控件中节点的数量。
获取树形控件中某节点的附加32位数据:GetItemData()
DWORD_PTR GetItemData(HTREEITEM hItem) const;
获取树形控件中某个指定节点的附加32位数据。
hItem
为指定的树节点的句柄。
为树形控件中某个指定节点设置附加的32位数据:SetItemData()
BOOL SetItemData(HTREEITEM hItem,DWORD_PTR dwData);
为树形控件中某个指定节点设置附加的32位数据。
hItem
为指定的树节点的句柄。dwData
为要设置的32位数据。
获取树形控件中某个指定节点的标签文本:GetItemText()
CString GetItemText(HTREEITEM hItem) const;
获取树形控件中某个指定节点的标签文本。参数hItem同上。
返回值是包含标签文本的字符串。
为树形控件中某个指定节点设置标签文本:SetItemText()
BOOL SetItemText(HTREEITEM hItem,LPCTSTR lpszItem);
为树形控件中某个指定节点设置标签文本。
参数:
hItem
同上lpszItem
为包含标签文本的字符串的指针。
获取树形控件中某个指定节点的下一个兄弟节点:GetNextSiblingItem()
HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const;
获取树形控件中某个指定节点的下一个兄弟节点。
参数hItem同上。
返回值是下一个兄弟节点的句柄。
获取树形控件中某个指定节点的上一个兄弟节点:GetPrevSiblingItem()
HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const;
获取树形控件中某个指定节点的上一个兄弟节点。
参数hItem同上。
返回值是上一个兄弟节点的句柄。
获取树形控件中某个指定节点的父节点:GetParentItem()
HTREEITEM GetParentItem(HTREEITEM hItem) const;
获取树形控件中某个指定节点的父节点。
参数hItem同上。
返回值是父节点的句柄。
获取树形控件根节点的句柄:GetRootItem()
HTREEITEM GetRootItem( ) const;
获取树形控件根节点的句柄。
获取树形控件当前选中节点的句柄:GetSelectedItem()
HTREEITEM GetSelectedItem( ) const;
获取树形控件当前选中节点的句柄。
删除树形控件中的所有节点:DeleteAllItems()
BOOL DeleteAllItems( );
删除树形控件中的所有节点。删除成功则返回TRUE,否则返回FALSE。
删除树形控件中的某个节点:DeleteItem()
BOOL DeleteItem(HTREEITEM hItem);
删除树形控件中的某个节点。
参数:
hItem
为要删除的节点的句柄。
返回值:删除成功则返回TRUE,否则返回FALSE。
在树形控件中插入一个新节点:InsertItem()
HTREEITEM InsertItem(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent = TVI_ROOT,HTREEITEM hInsertAfter = TVI_LAST);
在树形控件中插入一个新节点。
lpszItem
为新节点的标签文本字符串的指针,nImage
为新节点的图标在树形控件图像序列中的索引,nSelectedImage
为新节点被选中时的图标在图像序列中的索引,hParent
为插入节点的父节点的句柄,hInsertAfter
为新节点的前一个节点的句柄,即新节点将被插入到hInsertAfter节点之后。
选中指定的树节点:SelectItem()
BOOL SelectItem(HTREEITEM hItem);
选中指定的树节点。
参数:
hItem
为要选择的节点的句柄。
返回值:若成功则返回TRUE,否则返回FALSE
以上是关于MFC 树形控件CTreeCtrl类的主要内容,如果未能解决你的问题,请参考以下文章