![]() |
|
|
![]()
|
|
| Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
Контекстное меню не обновляется, например CView::OnUpdatePaste - не вызывается при всплывании меню. Как быть?
-------------------- Поехали! |
|||
|
||||
| Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
Вызов функции, отвечающей за обновление контекстного меню вызывается лишь при клике на одну из команд, а при появлении меню (при щелчке правой кнопкой мыши) не вызывается. Неужели никто с этим не сталкивался?
-------------------- Поехали! |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 4 Всего: 44 |
обрабатывай сообщение
WM_CONTEXTMENU |
|||
|
||||
| Амортизатор |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
Но я его и так отлавливаю.
Кажется, я толком не объяснил суть проблемы Вот тут я отлавливаю то самое сообщение WM_CONTEXTMENU
С командой Paste контекстного меню связана переменная ID_PASTE. С ней я ассоциирую On_update_UI
Так вот эта функция по идее должна отображаться при правом щелке и показывании контексного меню (винда посылает сообщение WM_INITMENUPOPUP и формируется объект CCmdUI, которому посылается сообщение WM_UPDATE_UI и которое не удается перехватить) -------------------- Поехали! |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Дело в том, что у view нет обработчика WM_INITMENUPOPUP. В MFC-framework такой обработчик есть только у FrameWnd. Поэтому вариантов 2: либо ловишь сам WM_INITPOPUPMENU в своем view, либо передаешь в TrackPopupMenu не this, а parent frame, тогда update'ы дойдут до view по стандартному пути диспетчиризации команд. Второй вариант проще, если речь идет только о легкой модификации пунктов меню (enable, setcheck, etc). Первый - если нужно модифицировать меню по-крупному.
Не уверена на 100%, т.к. давно в этом разбиралась, но, мо-моему, так. -------------------- ... |
|||
|
||||
| Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
Спасибо. Воспользовался вторым вариантом.
-------------------- Поехали! |
|||
|
||||
| pvl |
|
|||
|
Unregistered |
Я так понял Вы разобрались с этим вопросом, пожалуйста ответьте кодом как нажать на кнопку чужого контекстного меню?
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |