Заменить пункт меню на свой через HANDLE
Модераторы: Duncon, Hawk, Romeo, Eugie
ОГРОМНОЕ СПАСИБО!!!
А что делать в случае с контекстным меню? Ведь оно не посылает сообщения WM_COMMAND...
Видимо, вопрос естественным образом закрылся, но на всякий случай: 1) если контекстное меню системное (system menu, отображается при клике в левом вернем углу заголовка), оно посылает сообщения WM_SYSCOMMAND, их тоже можно ловить; 2) если оно пользоватьское - все зависит от способа вызова - указан или нет флажок TPM_NONOTIFY в TrackPopupMenu (в последнем случае, действительно, ловить нечего)
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
В последнем случае нужно ловить WM_COMMAND, который отсылает сэмулированный айтем главного меню. Ведь если разработчики сэмулировали выпадение подменю, то соответствующий айтем уже не popup, а обычный, как следствие он шлёт WM_COMMAND. Именно в command xэндлере этого айтема происходит вызов TrackPopupMenu.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Речь об обычном контекстном меню, в эмулированном, ессно, все может быть
В общем, сделаю наверное так:
Есть такая фигня "Detours": http://research.microsoft.com/sn/detours/
Она позволяет перехватывать любые Win32 API функции, она специально для этого и разработана. (COOL)
Я перехватываю TrackPopupMenu(), в параметре hMenu у нее убиваю нужный мне пункт и передаю управление оригинальной TrackPopupMenu()
Есть такая фигня "Detours": http://research.microsoft.com/sn/detours/
Она позволяет перехватывать любые Win32 API функции, она специально для этого и разработана. (COOL)
Я перехватываю TrackPopupMenu(), в параметре hMenu у нее убиваю нужный мне пункт и передаю управление оригинальной TrackPopupMenu()
