TVN_SELCHANGING не получено - PullRequest
       52

TVN_SELCHANGING не получено

1 голос
/ 10 апреля 2011

У меня есть приложение WTL81.CMainFrame имеет дочерний CPaneContainer, который имеет дочернее окно CTreeViewCtrl.Проблема в том, что CTreeViewCtrl не получает сообщение TVN_SELCHANGING.

Я "подсмотрел" CTreeViewCtrl и его родителя (CPaneContainer), и код уведомления не получен.

CMainFrame реализован из общедоступного CFrameWindowImpl<CMainFrame>

CPaneContainer реализован так

class PaneContainerReflectNotif : public CPaneContainer 
{
    BEGIN_MSG_MAP(PaneContainerReflectNotif)
        CHAIN_MSG_MAP(CPaneContainer)
        REFLECT_NOTIFICATIONS()
    END_MSG_MAP()
};

Дерево реализовано следующим образом

class MyTreeView : 
    public CWindowImpl<CatalogTreeView, CTreeViewCtrl>,
    public CCustomDraw<CatalogTreeView>,
    public CTheme

   ...

BEGIN_MSG_MAP_EX(MyTreeView )
    MSG_WM_CREATE(OnCreate)
    MSG_WM_DESTROY(OnDestroy)
    REFLECTED_NOTIFY_CODE_HANDLER_EX(NM_DBLCLK, OnDblClick)
    REFLECTED_NOTIFY_CODE_HANDLER_EX(TVN_ITEMEXPANDING, OnItemExpanding)
    REFLECTED_NOTIFY_CODE_HANDLER_EX(TVN_SELCHANGING, OnSelChanged)

OnDblClick - отлично работает
OnItemExpanding - отлично работает
OnSelChanged - не работает

любые идеи о том, в чем может быть проблема

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

решаемая. Моя проблема была в том, что древовидное представление было многоцелевым, и такое дерево не отправляет уведомления TVN_SELCHANGING

0 голосов
/ 11 апреля 2011

Вы не упомянули, зачем вам TVN_SELCHANGING. Событие запускается, когда изменяются узлы дерева, и выбирается другой узел дерева.

В качестве альтернативы вы можете попробовать TVN_SELCHANGED или HitTest (). Я предоставляю ссылку MFC .. http://msdn.microsoft.com/en-us/library/x0w7ft34.aspx

...