簡體   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