|
WndProc и VK_LMENU/VK_RMENU
|
|||
---|---|---|---|
#18+
Дико извиняюсь, вопрос не совсем про дотнет, но около него. Понадобилось тут для одного специфического контрола из одного специфического фреймворка заблокировать вызов контекстного меню. Как выяснилось, сделать это можно только в самописной реализации IMessageFilter.PreFilterMessage , который фактически вызывается внутри WndProc хука приложения. Ну вроде как дело это нехитрое - если контрол имеет активный фокус ввода, возвращаем true (т.е. останавливаем дальнейшую обработку сообщения) в случаях, когда: 1. Message.Msg=WM_RBUTTONUP 2. Message.Msg=WM_CONTEXTMENU 3. Message.Msg=WM_SYSKEYDOWN && Message.WParam==VK_F10 4. Message.Msg=WM_KEYUP && Message.WParam==VK_APPS Вроде как всё работает, но смущает наличие в хелпе по virtual key codes ещё двух констант: VK_LMENU и VK_RMENU. Каким физическим кнопкам они соответствуют? Нужно ли аналогично блокировать их нажатие? Я вообще считал, что VK_RMENU - это кнопка ≣ в правой части клавиатуры рядом с windows key, однако, как выяснилось, ≣ - это как раз VK_APPS. Что же в таком случае эти VK_LMENU и VK_RMENU? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 12:10 |
|
|
start [/forum/topic.php?fid=20&tid=1398196]: |
0ms |
get settings: |
28ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
106ms |
get tp. blocked users: |
2ms |
others: | 383ms |
total: | 594ms |
0 / 0 |