Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;MFC-CTreeCtrl-SelectItem和SetItemState之间的差异_C++_Windows_Mfc - Fatal编程技术网

C++ C++;MFC-CTreeCtrl-SelectItem和SetItemState之间的差异

C++ C++;MFC-CTreeCtrl-SelectItem和SetItemState之间的差异,c++,windows,mfc,C++,Windows,Mfc,我需要为我的windows应用程序创建一个树列表,其中包含多个支持拖放的节点选择。由于微软没有为树提供任何这样的属性来简化开发人员的工作,所以我必须自己实现这些特性 有人能给我解释一下区别(还有,下面语句对应的getter)和何时使用吗 SetItemState(hItem, 1, TVIS_SELECTED); 及 及 主要区别在于SelectItem在功能上是基于SetItemState构建的。与其他操作一起,SelectItem将使用SetItemState(或等效的内部调用)为新项目设

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

有人能给我解释一下区别(还有,下面语句对应的getter)和何时使用吗

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);