如何知道用户何时单击 TreeView 控件中的复选框
04/24/2020
本文内容
本文介绍如何知道用户何时单击 TreeView 控件中的复选框。
原始产品版本: Visual c + +
原始 KB 数: 261289
总结
在具有TVS_CHECKBOXES样式的 TreeView 控件上,没有通知已更改项目的选中状态。 此外,没有指示项目状态已更改的通知。 但是,您可以确定用户已单击项的状态图标,并根据该项执行操作。
TreeView 如何切换复选框的状态
当用户单击 TreeView 项的复选框时, NM_CLICK 会向父窗口发送通知。 发生此事件时,将 TVM_HITTEST 返回邮件 TVHT_ONITEMSTATEICON 。 TreeView 控件使用相同条件来切换复选框的状态。 遗憾的是,TreeView 控件在发送通知后切换状态 NM_CLICK 。
用户单击复选框时要了解的示例代码
您可以将用户定义的邮件发布到正在处理通知的同一窗口 NM_CLICK ,并将此用户定义的邮件视为已更改的已选中状态的通知。 下面的示例代码展示了如何完成此操作。
#define UM_CHECKSTATECHANGE (WM_USER + 100)
case WM_NOTIFY:
{
LPNMHDR lpnmh = (LPNMHDR) lParam;
TVHITTESTINFO ht = {0};
if(lpnmh->code == NM_CLICK) && (lpnmh->idFrom == IDC_MYTREE))