0

我的应用程序是 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.还有什么我不应该做的事情吗?我问这个只是为了让它开放。

4

2 回答 2

0

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

于 2009-08-12T15:19:57.650 回答
0

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

答案张贴在那里。

于 2009-09-30T15:16:51.920 回答