2012-03-09 11 views
7

Normalnie klawisz Alt otwiera menu w systemie Windows.Jak wyłączyć normalne zachowanie klawisza Alt?

Potrzebuję tego wyłączyć, ponieważ potrzebuję klawisza Alt dla mojej aplikacji. (Jest to emulator starego komputera, więc muszę naśladować jego zachowanie.) Piszę to w czystym Windows API, więc spodziewam się, że musi być jakiś komunikat, który jest wysyłany i musi być wyłączony, odrzucony lub zignorowany.

Alt + Tab nie jest problemem, jak również inne klawisze systemowe i kombinacje klawiszy, po prostu trzeba ignorować Alt kiedy otwiera menu.

(Moja aplikacja używa DirectInput czytać klucze, więc to działa dobrze. Muszę tylko wyłączyć funkcjonalność, która otwiera menu za pomocą klawisza Alt. Będę otworzyć menu za pomocą myszki.)

+0

Jakie to menu? Właśnie wpisałem Alt w oknie Windows i nie pojawiło się menu. – Kaz

+1

@Kaz: Ustawia ostrość na pasek menu w aktywnym oknie. –

Odpowiedz

10

Jak o sprawdzenie dla WM_SYSCOMMAND, a gdy wParam jest SC_KEYMENU, zwraca 0?

Aktualizacja/dokładne rozwiązanie:

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

Opis: Jeśli lParam>>16 jest dodatni wtedy menu jest aktywowane za pomocą myszy, gdy jest zerowa lub ujemna, to menu jest aktywowany przez Alt lub Alt + coś.

+0

Pomogło mi to znaleźć właściwe rozwiązanie. Dodałem rozwiązanie do tej odpowiedzi. –

+0

Pomógł mi również. Ten problem był tak straszny, że klawisz ALT i kilka innych kluczy w systemie Windows 8 ciągle skręcają z aplikacjami Win32. Dziękuję również za mały opis, który ułatwia zrozumienie tego, co się dzieje. Nigdy nie wiedziałem, do czego lParam lub wParam były używane wcześniej, ponieważ nigdy nie był używany zbyt wiele w moich potrzebach. –

Powiązane problemy