Я думаю у тебя этот метод никогда не вызывается, так как WM_CONTEXTMENU ловит в твоем случае сплиттер и собствеено никак его не обрабатывает. тебе нужно либо наследовать окно от сплиттера и там обрабатывать WM_CONTEXTMENU либо смотреть в PreTranslateMessage
Здравствуйте, newb, Вы писали:
N>В моем view есть tree и list контролы, разделенный сплиттером:
N>N>m_ctrlVSplitter.Create(m_hWnd, rcDefault, NULL, WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN);
N>m_ctrlVSplitter.SetSplitterExtendedStyle(0);
N>// создание ListView
N>m_lv.Create(m_ctrlVSplitter, rcDefault, 0, WS_CHILD|WS_VISIBLE|LVS_REPORT|WS_CLIPSIBLINGS|WS_CLIPCHILDREN, 0, IDC_LST);
N>m_tv.Create(m_ctrlVSplitter, rcDefault, 0, TVS_SHOWSELALWAYS | TVS_HASBUTTONS | TVS_LINESATROOT
N> | TVS_HASLINES | TVS_EDITLABELS|TVS_SHOWSELALWAYS
N> | TVS_DISABLEDRAGDROP | WS_CHILD | WS_VISIBLE, 0, IDC_TREE);
N>m_ctrlVSplitter.SetSplitterPanes(m_lv, m_tv);
N>
N>И обработчик WM_CONTEXTMENU:
N>N>LRESULT OnContextMenu(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
N>{
N> int b = m_ctrlVSplitter.GetActivePane();
N> if (b)
N> { ::MessageBox(0, _T("OnContextMenu::Tree"), _T(""), 0);
N> }
N> else
N> { ::MessageBox(0, _T("OnContextMenu::List"), _T(""), 0);
N> }
N> return 0;
N>}
N>
N>Хотелось бы отследить "правый" клик на самом сплиттере (когда курсор меняется на "стрелочки") и ничего не делать в этом случае.
N>Извлечь координаты из lParam и проверка их на вхождение в прямоугольник сплиттера не работает