C++ C++;MFC-CTreeCtrl-SelectItem和SetItemState之间的差异
我需要为我的windows应用程序创建一个树列表,其中包含多个支持拖放的节点选择。由于微软没有为树提供任何这样的属性来简化开发人员的工作,所以我必须自己实现这些特性 有人能给我解释一下区别(还有,下面语句对应的getter)和何时使用吗C++ C++;MFC-CTreeCtrl-SelectItem和SetItemState之间的差异,c++,windows,mfc,C++,Windows,Mfc,我需要为我的windows应用程序创建一个树列表,其中包含多个支持拖放的节点选择。由于微软没有为树提供任何这样的属性来简化开发人员的工作,所以我必须自己实现这些特性 有人能给我解释一下区别(还有,下面语句对应的getter)和何时使用吗 SetItemState(hItem, 1, TVIS_SELECTED); 及 及 主要区别在于SelectItem在功能上是基于SetItemState构建的。与其他操作一起,SelectItem将使用SetItemState(或等效的内部调用)为新项目设
SetItemState(hItem, 1, TVIS_SELECTED);
及
及
主要区别在于
SelectItem
在功能上是基于SetItemState
构建的。与其他操作一起,SelectItem
将使用SetItemState
(或等效的内部调用)为新项目设置TVIS\u SELECTED
,并将其从以前选择的项目中删除
为了实现您自己的多重选择控件,当您希望增加选择而不是替换选择时,必须防止调用
SelectItem
。有很多情况需要考虑,从鼠标点击到键盘导航的各种修改键,所以在你的实现中好运!p> 这就是封闭源代码软件的问题。在这种情况下,我被迫为每次鼠标点击和按键执行“非业务逻辑”代码。如果是Java,我会使用一些第三方API,并将注意力集中在应用程序逻辑上。@javafan当然,不过如果你做得好,你可以编写一次,然后在任何地方使用它。或者购买其他人编写的实现;通常这会给你带来很多你甚至都不会考虑自己写的能力。据我所知,甚至还有关于开源的。权衡。:)
SelectItem(hItem);
SetItemState(hItem, TVIS_SELECTED, TVIS_SELECTED);