私は自分のWTL派生リストコントロールを持っています。
CPopupList : public CWindowImpl<CPopupList, WTL::CListViewCtrl>,
選択が変更されたときに通知をキャッチしたいという1つのことを除いて、正常に動作します。親ウィンドウではなく(このように: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)