2012-03-09 14 views
7

Normalmente il tasto Alt apre il menu in Windows.Come disabilitare il normale comportamento del tasto Alt?

Ho bisogno che questo sia disabilitato, perché ho bisogno del tasto Alt per la mia applicazione. (È un emulatore di vecchio computer, quindi ho bisogno di imitare il suo comportamento.) Lo scrivo in pura API di Windows, quindi mi aspetto che ci sia un messaggio che viene inviato e deve essere disabilitato, scartato o ignorato.

Alt + Tab non è un problema, così come altri tasti di sistema e combinazioni di tasti, ho solo bisogno di ignorare Alt quando si apre il menu.

(La mia applicazione utilizza DirectInput di leggere le chiavi, in modo che funziona bene. Ho solo bisogno di disattivare la funzionalità che si apre il menu con tasto Alt. Aprirò il menu utilizzando il mouse.)

+0

Che menu è questo? Ho semplicemente inserito Alt su una finestra di Windows e non è apparso alcun menu. – Kaz

+1

@ Kaz: imposta lo stato attivo sulla barra dei menu della finestra focalizzata. –

risposta

10

Come circa il controllo per WM_SYSCOMMAND e quando wParam è SC_KEYMENU, restituire 0?

Aggiornamento/soluzione esatta:

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

Descrizione: Se lParam>>16 è positivo allora menu viene attivato con il mouse, quando è pari a zero o negativo allora menu viene attivato da Alt o Alt + qualcosa.

+0

Questo mi ha aiutato a trovare la soluzione giusta. Ho aggiunto la soluzione a questa risposta. –

+0

Mi ha aiutato anche. Questo problema è stato così terribile che il tasto ALT e alcuni altri tasti su Windows 8 si bloccano costantemente con le applicazioni Win32. Inoltre grazie per la piccola descrizione rende più chiaro ciò che sta accadendo. Non ho mai saputo per cosa si usasse il lParam o il wParam perché non è mai stato usato troppo nei miei bisogni. –

Problemi correlati