내 자신의 WTL에서 파생 된 listcontrol이 있습니다.부모가 아닌 내 WTL :: CListViewCtrl에서 선택 변경 사항을 감지하는 방법은 무엇입니까?
CPopupList : public CWindowImpl<CPopupList, WTL::CListViewCtrl>,
한 가지를 제외하면 잘 작동합니다. 선택 항목이 변경되면 알림을 받고 싶습니다. 부모 창 (예 : How to detect a CListCtrl selection change?)이 아니라 CPopupList 자체에서 다음 작업을 수행하십시오.
사실 현재 선택한 항목 옆의 작은 힌트 창을 현재 항목의 추가 정보로 표시하려고합니다. 자동 완성 중에 VS가 함수/속성에 대한 추가 정보를 제공하는 것과 같습니다.
아무에게도이 작업을 수행하는 방법에 대한 팁이 있습니까? 대단히 감사합니다.
업데이트 : 시도
:
BEGIN_MSG_MAP(CPopupList)
REFLECTED_NOTIFY_CODE_HANDLER(LVN_ITEMCHANGED, OnListItemChanged)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
그러나 OnListItemChanged()가 호출되지 않습니다. 부모에서
REFLECT_NOTIFICATIONS()
이 추가되었습니다.
부모의 MSG_HANDLER : -
갱신 2 해결
나는 문제가 발견
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()
ALT_MSG_MAP (11) 위의 REFLECT_NOTIFICATIONS을() 이동을, 그리고 마지막으로 OnListItemChanged가 컨트롤에서 호출됩니다.
올바른 :
는 알림 메시지가 어쨌든 부모에게 전송됩니다REFLECT_NOTIFICATIONS()
ALT_MSG_MAP(11)
COMMAND_HANDLER(IDC_PRINT_MONOCHROME,BN_CLICKED,OnPrintMonochromeButton)
감사합니다. 내 의견 (BEGIN_MSG_MAP_EX 및 MSG_OCM_NOTIFY 모두 컴파일 중에 구문 오류가 발생합니다.) _EX이없는 BEGIN_MSG_MAP이 작동합니다.내가 뭘하려 : REFLECTED_NOTIFY_CODE_HANDLER (LVN_ITEMCHANGED, OnListItemChanged) 를 내가 질문 를 업데이트합니다 그러나 당신이 필요로하는 – Zotyi
작동하지 않습니다는에'#INCLUDE는' –
는'BEGIN_MSG_MAP_EX'는 ATL의'BEGIN_MSG_MAP' –