如何通过传递 TVN_ITEMEXPANDING 来展开 CTreeCtrl 项

Jack J Jun 24,516 信誉分 Microsoft 供应商
2024-01-30T08:20:40.04+00:00

我在__CMyTreeView::OnItemexpanding__中有一些代码,效果很好。

ON_NOTIFY_REFLECT(TVN_ITEMEXPANDING, &CLeftView::OnItemexpanding)   void CLeftView::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult) {  NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;  // TODO: Add your control notification handler code here   }

等等。 但是当我调用

// from CMyListView
TreeCtrl.Expand(hSelectedItem, TVE_EXPAND);

从此类外部(例如从 CMyListView)CLeftView::OnItemexpanding 中的代码不会被触发。 我的问题是,如何以通知 CLeftView::OnItemexpanding 的方式调用 TreeCtrl.Expand ? Note:此问题总结整理于:How to expand a CTreeCtrl item by passing through TVN_ITEMEXPANDING - Microsoft Q&A

C++
C++
一种通用的高级编程语言,作为 C 编程语言的扩展而创建,除了用于低级别内存操作的功能外,还具有面向对象、泛型和功能性等特点。
147 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 48,571 信誉分 Microsoft 供应商
    2024-01-30T09:25:27.92+00:00

    您好,当项目首次通过TVM_EXPAND消息展开时,该操作将生成TVN_ITEMEXPANDING和TVN_ITEMEXPANDED通知代码,并设置项目的TVIS_EXPANDEDONCE状态标志。只要保持此状态标志设置,后续TVM_EXPAND消息就不会生成TVN_ITEMEXPANDING或TVN_ITEMEXPANDED通知。 若要重置TVIS_EXPANDEDONCE状态标志,必须发送设置了 TVE_COLLAPSE 和 TVE_COLLAPSERESET 标志的TVM_EXPAND消息。

    尝试显式设置TVIS_EXPANDEDONCE将导致不可预知的行为。

    供您参考 : TVM_EXPAND
    文档参数TVE_COLLAPSERESET指示折叠列表并删除子项

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。