2011-04-18 26 views
2

我試圖啓用/禁用visual C++ 6.0的ctreecntrl中的treeitems複選框。我已經找到了所有項目的選項,但不能做到每個項目的基礎。有沒有什麼功能可以做到這一點?在ctreecntrl的treeitems中啓用複選框

回答

4

要打開和關閉單個樹項目的複選框,您需要發送TVM_SETITEM messages,它們用於設置TreeView中項目的屬性。

該文檔說wParam必須爲零,並且lParam是指向包含新項目屬性的TVITEM structure的指針。

所以真正的戰​​鬥是在讓TVITEM結構相應填寫。以下是重要部分:

  • hItem成員必須包含要修改的樹項目的句柄。
  • mask構件應該被設置爲TVIF_STATE,這表明statestateMask構件是有效的。這些是你將用來打開和關閉複選框的那些。
  • state成員可以設置爲0,這將隱藏指定樹項目的複選框。
    顯示樹項目的複選框,設置此成員1 << 12。 (詳情請見docs)。
  • stateMask成員應設置爲TVIS_STATEIMAGEMASK以指示您正在更改項目的狀態圖像索引。

既然你已經設置mask,表明你只使用了statestateMask成員,你可以愉快地忽略了其他成員的。

最後,一旦得到了TVITEM結構集,您可以使用標準SendMessage函數或TreeView_SetItem macro將消息發送到樹項目。

(當然,整個的TreeView必須有TVS_CHECKBOXES style集,以便任何上述工作的!但是你說你已經找到了如何做到這一點。)

相關問題