繁体   English   中英

Win32 C ++:如何在Treeview控件中获取已检查项目的数量

[英]Win32 c++: How to get number of checked items in treeview control

我有一个Treeview控件,每个项目都有一个复选框。 在根级别,我大约有100个项目,每个这样的项目还有100个其他项目,因此遍历树大约需要1-2秒的时间。 我想减少时间。 所以这是我的问题,如何在不遍历Treeview控件的情况下获取treeview控件中已检查项目的数量?

我检查了msdn。 那里我们有“ Treeview_GetCount”,但是它给出了treeview控件中的项目总数。 我知道我可以从根开始并递归遍历以在树状视图中检查每个项目的状态,最后获得具有已检查状态的项目数。

另外,我们可能有一个变量(类成员或全局变量),在选中项目时将其递增,而在未选中项目时将其递减,这最终将使我在一个实例中获得多个项目。

除了这些,还有其他更好的方法吗?

不幸的是,您必须遍历调用TreeView_GetCheckState的树视图才能获取此类信息。 或者,可以在插入项目时通过TVITEMlParam关联检查状态,但这仍然需要遍历。

遍历控件有什么问题? 如果由于某种原因太慢,则始终可以将数字存储在要更新的变量中。

没有任何通知。 不过,您可以自己编写。 只需处理鼠标单击并使用hittest查看鼠标光标是否在状态图像上 为了完整起见,请处理空格键,并为所选项目发送相同的通知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM