我需要为我的Windows应用程序创建一个树列表,其中多个节点选择具有拖放支持。由于Microsoft不为树提供任何此类属性,这简化了开发人员的工作,因此我必须自己实现此功能。
有人可以解释我的差异(以及以下陈述的相应吸气剂)以及何时使用
SetItemState(hItem, 1, TVIS_SELECTED);
和
SelectItem(hItem);
和
SetItemState(hItem, TVIS_SELECTED, TVIS_SELECTED);
答案 0 :(得分:1)
主要区别在于SelectItem
在功能上由SetItemState
构建。除了其他任何操作外,SelectItem
还会使用SetItemState
(或等效的内部调用)为新项目设置TVIS_SELECTED
,并将其从之前选择的项目中移除。< / p>
为了实现您自己的多选控件,当您想要扩充选择而不是替换它时,必须阻止调用SelectItem
。有很多情况需要考虑,包括鼠标点击和各种修改键保持键盘导航,所以你的实现好运!