作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试在 Visual C++ 6.0 的 ctreecntrl 中启用/禁用树项中的复选框。我找到了对所有项目执行此操作的选项,但无法针对每个项目执行此操作。有什么功能可以做到吗?
最佳答案
要打开和关闭单个树项目的复选框,您需要发送 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 才能使上述任何一项工作!但您说过您已经想出了如何做到这一点。)
关于windows - 在 ctreecntrl 的树项中启用复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702614/
我正在尝试在 Visual C++ 6.0 的 ctreecntrl 中启用/禁用树项中的复选框。我找到了对所有项目执行此操作的选项,但无法针对每个项目执行此操作。有什么功能可以做到吗? 最佳答案 要
我是一名优秀的程序员,十分优秀!