MFC Tree 控件的相关函数

树控件项选择

        从选择某项转向选择另一个项时,树控件 (Tree Control) (CTreeCtrl) 发送 TVN_SELCHANGINGTVN_SELCHANGED 通知消息。两个通知消息都有一个值指定是单击鼠标改变了选择,还是击键改变了选择。这两条通知还包含有关正失去选择的项和正得到选择的项的信息。可以利用这些信息设置那些依赖于项选择状态的项属性。作为对 TVN_SELCHANGING 通知消息的响应,返回 TRUE 禁止选择另一项;返回 FALSE 则允许选择另一项。

应用程序可以通过调用 SelectItem 成员函数来改变选择。

样式

树控件 (Tree Control) (CTreeCtrl) 样式决定树控件 (Tree Control) 外观特征。创建树控件 (Tree Control) 时,就设置了树控件 (Tree Control) 的初始样式。创建了树控件 (Tree Control) 后,可以检索和更改树控件 (Tree Control) 的样式,方法是利用 GetWindowLongSetWindowLong Windows 函数为 nIndex 参数指定 GWL_STYLE。有关完整的样式列表,请参见 Platform SDK 中的树视图 (TreeView) 控件窗口样式

TVS_HASLINES 样式通过在子项与其相应的父项之间画上一条连线,增强了树控件 (Tree Control) 层次结构的图形化表示形式。这种样式不链接层次结构根位置的项。若要链接层次结构根位置的项,需要组合 TVS_HASLINESTVS_LINESATROOT 样式。

双击父项,可以展开或折叠父项的子项列表。具有 TVS_SINGLEEXPAND 样式的树控件 (Tree Control) 展开选定的项,而折叠未选定的项。如果用鼠标单击选定的项并且该项是关闭的,则该项将展开。如果选定的项是打开的,用鼠标单击它时则会折叠起来。

具有 TVS_HASBUTTONS 样式的树控件 (Tree Control) 在每一父项的左边添加一个按钮。单击该按钮可展开或折叠子项,这是除了用双击父项的方法展开或折叠子项以外的另一种方法。TVS_HASBUTTONS 样式不向在层次结构根位置的项添加按钮。若要向层次结构根位置的项添加按钮,必须组合 TVS_HASLINESTVS_LINESATROOTTVS_HASBUTTONS 样式。

TVS_EDITLABELS 样式使用户编辑树控件项的标签成为可能。有关编辑标签的更多信息,请参见本主题稍后将要介绍的树控件标签编辑

TVS_NOTOOLTIPS 样式禁用树视图 (TreeView) 控件的自动工具提示功能。当鼠标光标移到某项上时,如果该项的整个标题当时是不可见的,则自动工具提示功能自动显示工具提示,其中就包含该项的标题。

树控件项标签

通常在向树控件 (Tree Control) (CTreeCtrl) 添加项时指定项标签文本。InsertItem 成员函数能传递 TVITEM 结构。该结构定义了项的属性,项属性中有一个包含标签文本的字符串。InsertItem 有几个可用各种参数组合调用的重载。

树控件 (Tree Control) 分配存储各项的内存,其中大部分内存都被项标签文本占用。如果您的应用程序保存了树控件 (Tree Control) 中字符串的副本,就可以减少控件所需的内存空间,方法是在 TV_ITEMpszText 成员中或者在 lpszItem 参数中指定 LPSTR_TEXTCALLBACK 值,而不是将实际字符串传递给树控件 (Tree Control)。每当需要重绘某项时,LPSTR_TEXTCALLBACK 使树控件 (Tree Control) 从应用程序中检索该项的标签文本。为了检索标签文本,树控件 (Tree Control) 发送 TVN_GETDISPINFO 通知消息,该消息包括 NMTVDISPINFO 结构的地址。必须通过设置所含结构的适当成员来响应该通知消息。

树控件 (Tree Control) 使用从创建树控件 (Tree Control) 的进程堆分配的内存。树控件 (Tree Control) 最多可以包含的项数取决于堆中可用的内存量。每个项占用 64 字节。

树控件项信息

树控件 (Tree Control) (CTreeCtrl) 有许多检索树控件 (Tree Control) 中项的信息的成员函数。GetItem 成员函数检索部分或全部与项关联的数据。这些数据可能包括项的文本、状态、图像、子项计数和应用程序定义的 32 位数据值。还有一个 SetItem 函数,能够设置部分或全部与项关联的数据。

GetItemStateGetItemTextGetItemDataGetItemImage 成员函数检索项的每个属性。这些函数中的每一个都有一个对应的 Set 函数来设置项属性。

GetNextItem 成员函数检索与当前项有指定关系的树控件项。该函数能够检索项的父项、前一个或下一个可见项、第一个子项等。还有一些用于在树中遍历的函数:GetRootItemGetFirstVisibleItemGetNextVisibleItemGetPrevVisibleItemGetChildItemGetNextSiblingItemGetPrevSiblingItemGetParentItemGetSelectedItemGetDropHilightItem

GetItemRect 成员函数检索树控件项的边框。GetCountGetVisibleCount 成员函数分别检索树控件 (Tree Control) 中的项计数和树控件 (Tree Control) 窗口中当前可见项的计数。可以调用 EnsureVisible 成员函数确保某项可见。

 

GetCount ——————————————————————————获取与一个treeview控件相关联的tree项的数目 
GetIndent ——————————————————————————获取一个tree view项对它的父项的偏移(以像素表示) 
SetIndent ——————————————————————————设置一个tree view项对它的父项的偏移(以像素表示) 
GetImageList ——————————————————————————获取与一个tree view控件相关联的图像列表的句柄 
SetImageList—————————————————————————— 设置与一个tree view控件相关联的图像列表的句柄 
GetNextItem ——————————————————————————获取与指定的关系匹配的下一个tree view项 
ItemHasChildren ——————————————————————————如果指定项有子项则返回非零值 
GetChildItem ——————————————————————————获取一个指定tree view项的子项 
GetNextSiblingItem ——————————————————————————获取指定tree view项的下一个兄弟项 
GetPrevSiblingItem ——————————————————————————获取指定tree view项的前一个兄弟项 
GetParentItem ——————————————————————————获取指定tree view项的父项 
GetFirstVisibleItem ——————————————————————————获取指定tree view项的第一个可视项 
GetNextVisibleItem ——————————————————————————获取指定tree view项的下一个可视项 
GetPrevVisibleItem ——————————————————————————获取指定tree view项的前一个可视项 
GetSelectedItem ——————————————————————————获取当前被选择的tree view项 
GetDropHilightItem ——————————————————————————获取一次拖放操作的目标 
GetRootItem ——————————————————————————获取指定tree view项的根 
GetItem ——————————————————————————获取一个指定tree view项的属性 
SetItem ——————————————————————————设置一个指定tree view项的属性 
GetItemState ——————————————————————————返回一个项的状态 
SetItemState ——————————————————————————设置一个项的状态 
GetItemImage ——————————————————————————获取与一个项相关联的图像 
SetItemImage ——————————————————————————设置与一个项相关联的图像 
GetItemText ——————————————————————————返回一个项的文本 
SetItemText ——————————————————————————设置一个项的文本 
GetItemData ——————————————————————————返回与一个项关联的32位的应用程序指定值 
SetItemData ——————————————————————————设置与一个项关联的32位的应用程序指定值 
GetItemRect ——————————————————————————获取一个tree view项的边界矩形 
GetEditControl ——————————————————————————获取用来编辑指定tree view项的编辑控件的句柄 
GetVisibleCount ——————————————————————————获取与一个tree view项关联的可视tree项的编号 
GetToolTips ——————————————————————————获取一个tree view控件使用的子ToolTip控件的的句柄 
SetToolTips ——————————————————————————设置一个tree view控件的子ToolTip控件的的句柄 
GetBkColor—————————————————————————— 获取控件的当前背景颜色 
SetBkColor ——————————————————————————设置控件的背景颜色 
GetItemHeight ——————————————————————————获取tree view项的当前高度 
SetItemHeight ——————————————————————————设置tree view项的当前高度 
GetTextColor ——————————————————————————获取控件的当前文本颜色 
SetTextColor —————————————————————————设置控件的文本颜色 
SetInsertMark ——————————————————————————设置一个tree view控件的插入标记 
GetCheck ——————————————————————————获取一个tree控件项的核选状态 
SetCheck ——————————————————————————设置一个tree控件项的核选状态 
GetInsertMarkColor ——————————————————————————获取tree view用来绘制插入标记的颜色 
SetInsertMarkColor ——————————————————————————设置tree view用来绘制插入标记的颜色 

InsertItem ——————————————————————————插入一个新项。 
DeleteItem ——————————————————————————删除一个项 
DeleteAllItems ——————————————————————————删除所有的项 
Expand ——————————————————————————展开或收缩指定tree view项的子项 
Select ——————————————————————————选择,在视中滚动,或重画一个指定的tree view项 
SelectItem——————————————————————————选择一个指定的tree view项 
SelectDropTarget—————————————————————————— 重画作为一次拖放操作的目标的tree项 
SelectSetFirstVisible ——————————————————————————选择一个指定的tree view项作为第一个可视项 
EditLabel ——————————————————————————现场编辑一个指定的tree view项 
HitTest ——————————————————————————返回与CtreeCtrl关联的光标的当前位置 
CreateDragImage ——————————————————————————为指定的tree view项创建一个拖动位图 
SortChildren ——————————————————————————排序一个给定父项的子项 
EnsureVisible ——————————————————————————确保一个tree view项在它的tree view控件中是可视的 
SortChildrenCB ——————————————————————————使用一个由应用程序定义的排序函数来排列一个给定父项的子项

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值