Поиск:

Ответ в темуСоздание новой темы Создание опроса
> редактирование названий узлов дерева. 
:(
    Опции темы
pablo
Дата 5.12.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: нет
Всего: 6




Есть CTreeCtrl наложенный на форму. Может кто знает как можно сделать так, чтобы после того как выбран узел дерева нажать клавишу Ф2, появлялась возможность редактирования его названия ?

Пробовал перегрузить ф-цию OnKeyUp, прописав ON_WM_KEYUP() в MESSAGE_MAP, не это никчему не привело.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
Earnest
Дата 6.12.2005, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Чтобы начать редактировать текст узла, нужно вызвать функцию CTreeCtrl::EditLabel().
Кроме того, нужно обрабатывать уведомления TVN_BEGINLABELEDIT (подтвердить начало редактирования) и TVN_ENDLABELEDIT (получить результат и поместить его в итем). У тебя также будет работать стандартный переход в редактирование - когда задерживаешь нажатие на тексте.
Поищи в MSDN статью "Tree Control Label Editing". Там все вполне понятно и с примерами.


--------------------
...
PM   Вверх
pablo
Дата 6.12.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: нет
Всего: 6



Попытаюсь переформулировать вопросс.
Если на TreeCtrl нажимается клавиша Ф2, то какакое сообщение генерируется, и можно ли его обработать в главном окне, если да, то как именно.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
Earnest
Дата 8.12.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Должно приходить уведомление WM_NOTIFY::NM_KEYDOWN - для любой клавиши, конечно. Уведомление приходит паренту контрола. Если это и есть главное окно - значит, ему.
Второй вариант - написать свой класс CMyTreeCtrl (унаследоваться от CTreeCtrl) и в нем сделать обработку того же уведомления через ON_NOTIFY_REFLECT. Это, вообще говоря, рекомендуемый подход, т.к. вся функциональность класса оказывается в нем самом, а не размазывается по всяким главным окнам. Кроме того, если что-то не сработает с NM_KEYDOWN, можно просто перехватить WM_KEYDOWN и сделать все, что нужно.


--------------------
...
PM   Вверх
AlexPro
Дата 9.12.2005, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Можно субклассить дерево, как сказала Earnest, перехватывать и проверять нужные клавиши в PreTranslateMessage.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1005 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.