我有一个CTreeCtrl,我喜欢使用它的TVN_ITEMEXPANDING消息,但处理函数从不调用。
CsetkliensDlg.h
afx_msg void OnItemExpanding(NMHDR* pNmhdr,LRESULT *lResult);
CsetkliensDlg.cpp
BEGIN_MESSAGE_MAP(CCsetkliensDlg, CDialogEx)
ON_NOTIFY_REFLECT(TVN_ITEMEXPANDING, &CCsetkliensDlg::OnItemExpanding)
END_MESSAGE_MAP()
...
void CCsetkliensDlg::OnItemExpanding(NMHDR* pNmhdr,LRESULT *lResult)
{
AfxMessageBox("almafa");
}
这些物品有孩子。
答案 0 :(得分:0)
您正尝试在父对话框中捕获通知,因此您应该使用ON_NOTIFY而不是ON_NOTIFY_REFLECT。
当然,你的消息地图会有点像:
ON_NOTIFY(TVN_ITEMEXPANDING,CTREECTRL_RESOURCES_ID,ONHandlerFunction)
您可以使用反射机制,但处理程序应该在CTreeCtrl派生类中。