![]() |
|
|
![]()
|
|
| metoflex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
У меня создан CTreeCtrl, там есть различные категории и т.п. как мне прописать, чтобы при нажатии на правую кнопку, на одном из элементов древа, мыши возникало контекстное меню (как в винде при нажатии, в проводнике скажем, на правую кнопку мыши).
Идея нужна лишь по тому как прописать возникновение контекстного меню при нажатии на пр.кнопку мыши вообще, а с древом идея вообщем есть Огромное Спасибо! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Обрабатывай сообщение WM_CONTEXMENU, в обработчике вызывай функцию TrackPopupMenu
-------------------- ... |
|||
|
||||
| metoflex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Ок. Помпробую! Спасибо Огромное!)
У меня появилась мысль - каждый раз при активности в окне древа обрабатывать каждое действие (вернее ввод любого символа) через getch(); А потом просто сравнивать его с кодом правой кнопки. Только вот не могу нигде найти ASCII или 16-ти ричный код правой кнопки... Не подскажете? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Какой getch в WinAPI? Какой ASSCII код кнопки мыши?
Кнопка мыши и кнопка клавиатуры генерируют разные события. И вообще, уже сказано - лови WM_CONTEXTMENU - это сообщение генерируются при нажатии правой кнопки мыши (кроме прочей обработки). И отображать контекстное меню нужно именно по этому событию. Кроме редких специальных случаев, до понимания которых еще надо дожить. -------------------- ... |
|||
|
||||
| metoflex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Если можно маленький кусочек кода с примером того, как поймать WM_CONTEXTMENU? Не очень понял суть..
Спасибо Огромное! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Давай-ка читай учебники: как обработчик сообщения к MFC-окну прикрутить и т.д. Похоже, с самого начала.
Вроде в сети были какие-то MFC first steps, если книжек нет. -------------------- ... |
|||
|
||||
| metoflex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Вот прописал появление меню таким образом, а результат-ничего не происходит... Книги почитаю) Спасибо за помощь! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
а потом передавать это в TrackPopupMenu - бред. Это должно быть окно, которое будет принимать команды. Остальное, если это код обработчика WM_CONTEXTMENU, и в ресурсах есть меню "Вставить", а в нем попап, то все вроде нормально. Если не работает - дебажь. -------------------- ... |
|||
|
||||
| metoflex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
wnd-это мне надо диалоговое окно создать или сделать ссылку на меню (ктороый создал в ресурсах)?
|
|||
|
||||
| alex6077582 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2010 Репутация: нет Всего: нет |
В редакторе ресурсов кликаеш правой кнопкой мыши по окну(в котором будет вызывотся меню)
Выбираеш свойства, сообщения, WM_CONTEXTMENU добавить OnContexMenu. Естественно создаёш меню(в редакторе или динамически) В созданный обработчик внесем следующий код: CMenu cMenu, *pMenu; cMenu.LoadMenu(IDR_MENU2);//загрузим меню из ресурсов //метод GetSubMenu возвращает указатель на, //в нашем случае, первое выпадающее меню pMenu=cMenu.GetSubMenu(0);//возьмем интересующее нас меню //ну и, непосредственно, покажем это меню pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x,point.y,this); |
|||
|
||||
| metoflex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Всё!)) Получилось!) Спасибо огромное!)
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |