![]() |
|
![]() ![]() ![]() |
|
pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: нет Всего: 6 |
Есть CTreeCtrl наложенный на форму. Может кто знает как можно сделать так, чтобы после того как выбран узел дерева нажать клавишу Ф2, появлялась возможность редактирования его названия ? Пробовал перегрузить ф-цию OnKeyUp, прописав ON_WM_KEYUP() в MESSAGE_MAP, не это никчему не привело. -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Чтобы начать редактировать текст узла, нужно вызвать функцию CTreeCtrl::EditLabel().
Кроме того, нужно обрабатывать уведомления TVN_BEGINLABELEDIT (подтвердить начало редактирования) и TVN_ENDLABELEDIT (получить результат и поместить его в итем). У тебя также будет работать стандартный переход в редактирование - когда задерживаешь нажатие на тексте. Поищи в MSDN статью "Tree Control Label Editing". Там все вполне понятно и с примерами. -------------------- ... |
|||
|
||||
pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: нет Всего: 6 |
Попытаюсь переформулировать вопросс.
Если на TreeCtrl нажимается клавиша Ф2, то какакое сообщение генерируется, и можно ли его обработать в главном окне, если да, то как именно. -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Должно приходить уведомление WM_NOTIFY::NM_KEYDOWN - для любой клавиши, конечно. Уведомление приходит паренту контрола. Если это и есть главное окно - значит, ему.
Второй вариант - написать свой класс CMyTreeCtrl (унаследоваться от CTreeCtrl) и в нем сделать обработку того же уведомления через ON_NOTIFY_REFLECT. Это, вообще говоря, рекомендуемый подход, т.к. вся функциональность класса оказывается в нем самом, а не размазывается по всяким главным окнам. Кроме того, если что-то не сработает с NM_KEYDOWN, можно просто перехватить WM_KEYDOWN и сделать все, что нужно. -------------------- ... |
|||
|
||||
AlexPro |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
Можно субклассить дерево, как сказала Earnest, перехватывать и проверять нужные клавиши в PreTranslateMessage.
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |