MFC TVN_ITEMEXPANDING не вызывает функцию обработчика - PullRequest
0 голосов
/ 25 января 2012

У меня есть 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");
}

У предметов есть дочерние элементы.

1 Ответ

0 голосов
/ 25 января 2012

Вы пытаетесь перехватить уведомление в родительском диалоговом окне, поэтому следует использовать ON_NOTIFY вместо ON_NOTIFY_REFLECT.

Конечно, тогда ваша карта сообщений будет выглядеть примерно так:

ON_NOTIFY (TVN_ITEMEXPANDING, CTREECTRL_RESOURCES_ID, ONHandlerFunction)

Вы можете использовать механизм отражения, но тогда обработчик должен быть в производном классе CTreeCtrl.

...