从自定义ListCtrl捕获WM_NOTIFY消息

时间:2009-08-10 19:01:19

标签: c++ inheritance mfc messages clistctrl

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案在那里张贴。