我有我自己的WTL导出列表控件。
CPopupList : public CWindowImpl<CPopupList, WTL::CListViewCtrl>,
它工作正常,除了一两件事:我想,当选择更改为赶上通知。 不在父窗口(如下: ?如何检测一个CListCtrl选择的变化 ),但在CPopupList本身,然后做一些事情。
其实我接下来要在当前所选项目的小提示窗口出现,作为当前项目的其他信息。 就像自动完成期间VS确实,提供有关的功能/性能的详细信息。
有没有人任何提示如何做到这一点? 非常感谢你。
更新:
尝试:
BEGIN_MSG_MAP(CPopupList)
REFLECTED_NOTIFY_CODE_HANDLER(LVN_ITEMCHANGED, OnListItemChanged)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
但OnListItemChanged()没有被调用。 在父
REFLECT_NOTIFICATIONS()
被添加。
UPDATE2 -解决方案
我发现这个问题:
家长的MSG_HANDLER:
BEGIN_MSG_MAP(CEditorCtrl)
MESSAGE_RANGE_HANDLER(WM_KEYFIRST,WM_KEYLAST,DelegateMessages)
...
MESSAGE_
...
NOTIFY_CODE_HANDLER(LVN_ITEMCHANGED,OnListItemChanged)
CHAIN_MSG_MAP(parentType)
ALT_MSG_MAP(11)
COMMAND_HANDLER(IDC_PRINT_MONOCHROME,BN_CLICKED,OnPrintMonochromeButton)
REFLECT_NOTIFICATIONS()
END_MSG_MAP()
移动REFLECT_NOTIFICATIONS()的ALT_MSG_MAP上述(11),最后是OnListItemChanged被称为在控制。
正确:
REFLECT_NOTIFICATIONS()
ALT_MSG_MAP(11)
COMMAND_HANDLER(IDC_PRINT_MONOCHROME,BN_CLICKED,OnPrintMonochromeButton)