2012-03-09 3 views
7

Обычно клавиша Alt открывает меню в Windows.Как отключить нормальное поведение клавиши Alt?

Мне нужно, чтобы это было отключено, потому что мне нужен ключ Alt для моего приложения. (Это эмулятор старого компьютера, поэтому мне нужно подражать его поведению.) Я пишу его в чистом Windows API, поэтому я ожидаю, что должно быть какое-то сообщение, которое отправлено и должно быть отключено, отброшено или проигнорировано.

Alt + Tab не проблема, а также другие системные ключи и комбинации клавиш, мне просто нужно игнорировать Alt, когда он открывает меню.

(Мое приложение использует DirectInput для чтения ключей, так что он работает хорошо. Мне просто нужно, чтобы отключить функции, которая открывает меню с помощью клавиши Alt. Открою меню с помощью мыши.)

+0

Какое меню это? Я просто набрал Alt в окне Windows, и меню не появилось. – Kaz

+1

@Kaz: Он устанавливает фокус на строку меню сфокусированного окна. –

ответ

10

Как насчет проверки для WM_SYSCOMMAND, а когда wParam - SC_KEYMENU, возврат 0?

Update/точное решение:

if(wParam==SC_KEYMENU && (lParam>>16)<=0) return 0; 
return DefWindowProc(hwnd, message, wParam, lParam); 

Описание: Если lParam>>16 положительна, то меню активируется с помощью мыши, когда она равна нулю или отрицательна, то меню активируется Alt или Alt + что-то.

+0

Это помогло мне найти правильное решение. Я добавил решение этого ответа. –

+0

Помог мне. Эта проблема была настолько ужасной, что клавиша ALT и несколько других клавиш на Windows 8 постоянно вставлялись в приложения Win32. Также благодаря небольшому описанию он понимает, что происходит более четко. Я никогда не знал, что раньше использовались lParam или wParam, так как он никогда не использовался слишком много в моих потребностях. –

Смежные вопросы