树形控件之TVN_SELCHANGE & TVN_SELCHANGING 消息使用

关键词:ON_NOTIFY宏     字符串处理

OnSelchangedTREEMachineInfo(NMHDR* pNMHDR, LRESULT* pResult)

树形控件消息映射使用ON_NOTIFY宏,有两个消息响应函数,这两个消息具备完全一样的入口参数(NMHDR结构体 指针及long型指针),但完全是两种不同的效果,所用结构体都为(NMHDR)。用错了不会有正确的结果。而TVN_SELCHANGED是我们所用。一般都要求选中后都改变

TVN_SELCHANGE: 该消息为当前页改变后发送。

TVN_SELCHANGING:在当前页改变时发送,可以通过返回TRUE来禁止页面的改变,即不改变,我们看到的都是上一次的结果而非当前选中的结果。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 C++ 中,树形控件(如 `HTREEITEM` 或 `CTreeCtrl`)通常会发送 WM_NOTIFY 消息来通知应用程序某个节点的状态或内容发生了变化。当你需要处理这些事件时,你需要注册一个窗口消息处理器函数,并在该函数中编写相应的代码。 以下是一个简单的例子,展示了如何在 `CTreeCtrl` 类中处理 WM_NOTIFY 消息: ```cpp // 首先,在你的头文件 (.h) 中声明处理函数 void CYourClass::OnNotify(NMHDR* pNMHDR, LRESULT* pResult); // 然后,在你的 .cpp 文件中实现这个函数 void CYourClass::OnNotify(NMHDR* pNMHDR, LRESULT* pResult) { LPNMTREEVIEW pTV = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); // 根据 WM_NOTIFY 的子消息类型检查具体事件 switch (pNMHDR->code) { case TVN_ITEMEXPANDED: // 当节点展开时的处理 OnItemExpanded(pTV->itemNew.hItem); break; case TVN_ITEMHITTEST: // 节点点击或鼠标悬停时的处理 OnItemHitTest(pTV->pt.x, pTV->pt.y, &pTV->itemFromPoint); break; // 更多其他类型的处理... default: *pResult = CallWindowProc(GetWindowLongPtr(m_hWnd, GWLP_WNDPROC), m_hWnd, pNMHDR, pResult); return; } // 如果需要自定义处理,可以修改这里的代码 *pResult = 0; // 默认返回值,表示接收并处理了消息 } ``` 在这个例子中,`OnItemExpanded` 和 `OnItemHitTest` 是你自定义的虚函数,可以根据实际需求添加对应的实现。在接收到消息后,你可以访问 `pTV` 结构体中的信息,比如新的展开节点 (`itemNew`) 或是用户点击的节点 (`itemFromPoint`)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值