MFC - CTreeCtrl - SelectItem和SetItemState的区别

C++ MFC - CTreeCtrl - Difference between SelectItem and SetItemState

本文关键字:区别 SetItemState SelectItem CTreeCtrl MFC      更新时间:2023-10-16

我需要为我的windows应用程序创建一个Tree List,支持多个节点的拖放选择。由于微软没有为树提供任何这样的属性来简化开发人员的工作,所以我必须自己实现这些功能。

谁能给我解释一下它们的区别(以及下面语句对应的getter)以及何时使用

SetItemState(hItem, 1, TVIS_SELECTED);

SelectItem(hItem);

SetItemState(hItem, TVIS_SELECTED, TVIS_SELECTED);

主要区别在于SelectItem在功能上是基于SetItemState构建的。除了它所做的其他事情,SelectItem将使用SetItemState(或等效的内部调用)为新项目设置TVIS_SELECTED,并且,说,从先前选择的项目中删除它。

为了实现你自己的多选择控件,当你想要增加选择而不是替换它时,你必须防止SelectItem被调用。有很多情况需要考虑,从鼠标点击与各种修改键按住键盘导航,所以祝你的实现好运!