Re: "Правый" клик на сплиттере
От: SaloS http://salos.narod.ru/
Дата: 14.03.05 11:18
Оценка:
Я думаю у тебя этот метод никогда не вызывается, так как 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 и проверка их на вхождение в прямоугольник сплиттера не работает
WTL Helper и WTL Wizards помощники для WTL, скачать отсюда http://salos.narod.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.