我的应用程序是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. 我不应该做其他事情,我不是吗?我问这只是为了让它开放。
答案 0 :(得分:0)
尝试在对话框中放置一个普通的CListCtrl,看看是否可以从该对话中捕获该消息。如果可以,您知道问题是被覆盖的函数之一(可能您没有将鼠标事件转发到CListCtrl或其他东西)。
答案 1 :(得分:0)
我已将此问题移至stackoverflow.com/questions/1272398
答案在那里张贴。