我正在尝试在visual c ++ 6.0的ctreecntrl中启用/禁用treeitems中的复选框。我找到了为所有项目执行此操作的选项,但不能按项目执行此操作。这有什么功能吗?
答案 0 :(得分:4)
要为各个树项打开和关闭复选框,您需要发送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才能使上述任何一个工作!但是你说你已经知道如何做到这一点。)