![]() |
|
|
![]()
|
|
| Vicul |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 27.4.2009 Репутация: нет Всего: нет |
Всем привет,
стоит задача написать плагин для IE, в котором будет присутствовать панелька с инструментами - комбоксами, контекстным меню, кнопками итд. В принципе если все эти элементы известны, то создать такое через ATL/MFC проблем нет, примеров много. Но у меня эта панелька может меняться, плагин периодически будет обращаться к серверу и брать хмл с новыми злементами. Проблема в том, что эти элементы должны через ресурсы получить свой ИД, который должен быть привязан с картой событий и со своими методами. Как это сделать динамически - не знаю. Хотя есть идея - забить в проект максимальное количество ресурсов, а потом включать и формировать из них то количество, которое необходимо, но как то некрасиво получается. Кто, что посоветует? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Можно всем кнопкам тулбара присвоить одинаковый ID. А затем в его обработчике уже определять какую кнопку нажали (по позиции мыши).
Разумеется, при этом должна быть какая-то структура данных, позволяющая определить, какая команда связана с кнопкой номер x. -------------------- ... |
|||
|
||||
| Vicul |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 27.4.2009 Репутация: нет Всего: нет |
Спасибо,
неплохая идея, как то с привязкой по позициям я пропустил, а как быть с командами контекстных менюшек? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А вот тут фокус, кажется, не пройдет - в меню нельзя, вроде, добавить одинаковые ид-ры, кроме сепаратора.
Но попробовать можно. Если не получится - тогда выделить пул команд. Или свое меню нарисовать. -------------------- ... |
|||
|
||||
| Vicul |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 27.4.2009 Репутация: нет Всего: нет |
только что попробовал - можно добавлять сколько угодно команд, но метод в карте событий, естественно, должен быть один. Т.е. там уже делать распознавание команд. Сложновато получается, но это лучше, чем забивать в проект максимальное число элементов. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
О, не знала. Тогда точно так же как в тулбаре - определять команду по позиции мыши на момент сообщения.
Насколько я помню, есть способ определить, откуда пришла команда - от меню или от контрола - по lParam. Параметры сообщения в обработчике получить не проблема - есть спец. функция, которая возвращает обрабатываемое сообщение. -------------------- ... |
|||
|
||||
| Vicul |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 27.4.2009 Репутация: нет Всего: нет |
а как называется, не помнишь? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
CWnd::GetCurrentMesssage
-------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |