2
我試圖啓用/禁用visual C++ 6.0的ctreecntrl中的treeitems複選框。我已經找到了所有項目的選項,但不能做到每個項目的基礎。有沒有什麼功能可以做到這一點?在ctreecntrl的treeitems中啓用複選框
我試圖啓用/禁用visual C++ 6.0的ctreecntrl中的treeitems複選框。我已經找到了所有項目的選項,但不能做到每個項目的基礎。有沒有什麼功能可以做到這一點?在ctreecntrl的treeitems中啓用複選框
要打開和關閉單個樹項目的複選框,您需要發送TVM_SETITEM
messages,它們用於設置TreeView中項目的屬性。
該文檔說wParam
必須爲零,並且lParam
是指向包含新項目屬性的TVITEM
structure的指針。
所以真正的戰鬥是在讓TVITEM
結構相應填寫。以下是重要部分:
hItem
成員必須包含要修改的樹項目的句柄。mask
構件應該被設置爲TVIF_STATE
,這表明state
和stateMask
構件是有效的。這些是你將用來打開和關閉複選框的那些。state
成員可以設置爲0,這將隱藏指定樹項目的複選框。 1 << 12
。 (詳情請見docs)。stateMask
成員應設置爲TVIS_STATEIMAGEMASK
以指示您正在更改項目的狀態圖像索引。既然你已經設置mask
,表明你只使用了state
和stateMask
成員,你可以愉快地忽略了其他成員的。
最後,一旦得到了TVITEM
結構集,您可以使用標準SendMessage
函數或TreeView_SetItem
macro將消息發送到樹項目。
(當然,整個的TreeView必須有TVS_CHECKBOXES
style集,以便任何上述工作的!但是你說你已經找到了如何做到這一點。)