【问题标题】:Catching a WM_NOTIFY message from a custom ListCtrl从自定义 ListCtrl 捕获 WM_NOTIFY 消息
【发布时间】:2010-11-18 09:38:59
【问题描述】:

我的应用程序是 c++,是 MFC 和 ATL 的组合。 我在这里使用的部分是 MFC。

我的一个对话框中有一个自定义列表控件类,它继承自 CListCtrl。

我正在尝试为 LVN_ITEMCHANGED 消息添加一个处理程序,以便我可以更新对话框表单的其余部分,这取决于列表的内容。 更具体地说,每个列表项都有一个复选框字段,我需要检测它何时已更改。

问题是,我的列表没有发送消息。

ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_OUTPUT_CMDS, OnLvnItemchangedListOutputCmds)

这是我的消息映射,它工作得很好,我通过简单地更改消息检测到其他消息,如 LVN_ITEMCHANGING、NM_CLICK 和 NM_RELEASEDCAPTURE。

因此,我的猜测是 listctrl 自定义类无法正确发布消息。

这个问题可以通过多种方式回答:
1. 如何将 LVN_ITEMCHANGED 消息从子列表发布到其父列表(对话框)?
2. 我是否捕捉到了正确的信息?我尝试过的大多数都太快触发了更新(即在更新列表中的数据之前)当我这样做时,对话框会根据列表的先前状态刷新。
3. 还有什么我不应该做的事情吗?我问这个只是为了让它开放。

【问题讨论】:

标签: c++ inheritance mfc messages clistctrl


【解决方案1】:

尝试在您的对话框中放置一个普通的 CListCtrl,看看您是否可以从该对话框中捕捉到消息。如果可以,您就知道问题出在被覆盖的函数之一(也许您没有将鼠标事件转发给 CListCtrl 或其他什么)。

【讨论】:

    【解决方案2】:

    我已将此问题移至stackoverflow.com/questions/1272398

    答案贴在那里。

    【讨论】:

      猜你喜欢
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 2019-01-02
      • 2018-11-03
      • 1970-01-01
      • 2021-10-06
      相关资源
      最近更新 更多