2009-11-21 82 views
4

我使用Win32 API和微軟的Visual C++ 6建立一個目錄結構的樹狀視圖,與每個樹視圖項相關的複選框。我的目標是能夠檢查父文件夾,並自動檢查其所有關聯的子項。檢查一個Win32樹視圖項自動檢查所有子項

但是,通過MSDN挖後,我一直沒能找到一個項目是控制通知消息檢查,只有當選擇的產品。我一直在使用一個選擇通知信息,提示程序輪詢該項目並查看認爲,如果目前的「檢查狀態」是真的,但我不知道那和選擇可以以這樣的方式被捆綁在一起檢查,並且也擔心隨着用戶在非常大的目錄中移動而不斷輪詢項目所帶來的開銷。

有沒有人有經驗,設立這種情況?我擔心輪詢GUI元素的開銷是否合理?

回答

3

由於Windows Vista中,微軟已經推出NM_TVSTATEIMAGECHANGING和相應的NMTVSTATEIMAGECHANGING結構。我不確定爲什麼沒有通過Tree View通知記錄,而是在General Control Reference部分記錄。

該通知代碼是由樹控制時的狀態的圖像改變發送(即點擊複選框時)。

NMTVSTATEIMAGECHANGING結構有一個iOldStateImageIndexiNewStateImageIndex字段,指定相應的更改。此信息可用於確定將顯示的新狀態圖像(1是未選中的框,2是已選中的框)

Vista還引入了灰色,局部和排除檢查,儘管此刻我不確定如何將這些狀態圖像索引表示爲上述兩個基本情況。