CTreeCtrl, выбор элемента
От: wonderboy  
Дата: 10.11.06 15:56
Оценка:
Есть класс CPopupTree, наследованный от CTreeCtrl. Предназначен для создания Tree Control в виде Popup-окна (всмысле со стилем WS_POPUP), обрабатывает некоторые сообщения для окна контрола.
Необходимо в CPopupTree обработать выделение (выбор) некоторого элемента в дереве, которое представляет данный контрол. Tree-контрол шлет сообщения об этом parent-окну. А как бы отловить событие выделения элемента в самом окне контрола (CPopupTree)?
Пытался через обработку WM_LBUTTONUP, смотреть изменился ли текущий выделенный элемент.. Однако именно при щелчке мышью на элементе дерева WM_LBUTTONUP даже в CPopupTree::PreTranslateMessage не попадает, хотя Spy++ (VS.NET 2003) говорит, что винда сообщения окну шлет..

Может будут у уважаемых коллег мысли по данному вопросу?
Re: CTreeCtrl, выбор элемента
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 10.11.06 18:00
Оценка:
Здравствуйте, wonderboy, Вы писали:

W>Есть класс CPopupTree, наследованный от CTreeCtrl. Предназначен для создания Tree Control в виде Popup-окна (всмысле со стилем WS_POPUP), обрабатывает некоторые сообщения для окна контрола.


W>Может будут у уважаемых коллег мысли по данному вопросу?


В карте сообщений твоего дерева пропиши
...
ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
...


потом в коде
void YourTreeCtrl::OnSelchanged( NMHDR* pNMHDR, LRESULT* pResult ) 
{
  NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
}
github.com/dmitrigrigoriev/
Re[2]: CTreeCtrl, выбор элемента
От: wonderboy  
Дата: 10.11.06 18:41
Оценка:
Здравствуйте, SkyKnight, Вы писали:

SK>В карте сообщений твоего дерева пропиши

SK>[ccode]

Угу, спасибо. То что надо.
Хотя после некоторых размышлений возникла мысль, что правильнее создать отдельное Popup-окно, в котором разместить этот самый Tree-контрол как дочернее.. Тогда и этого самого MFC-шного рефлекшина не надобно будет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.