在ctreecntrl的treeitems中启用复选框

时间:2011-04-18 12:08:23

标签: windows visual-c++ mfc treeview vc6

我正在尝试在visual c ++ 6.0的ctreecntrl中启用/禁用treeitems中的复选框。我找到了为所有项目执行此操作的选项,但不能按项目执行此操作。这有什么功能吗?

1 个答案:

答案 0 :(得分: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才能使上述任何一个工作!但是你说你已经知道如何做到这一点。)