2012-03-09 12 views
7

Normalmente, la tecla Alt abre el menú en Windows.Cómo deshabilitar el comportamiento normal de la tecla Alt?

Necesito que se deshabilite, porque necesito la tecla Alt para mi aplicación. (Es un emulador de una computadora vieja, así que tengo que imitar su comportamiento.) Lo escribo en la pura API de Windows, por lo que espero que haya algún mensaje que se envíe y deba ser desactivado, descartado o ignorado.

Alt + Tab no es un problema, así como otras teclas del sistema y combinaciones de teclas, solo tengo que ignorar Alt cuando abre el menú.

(Mi aplicación utiliza DirectInput para leer las claves, por lo que funciona bien. Sólo necesito para desactivar la función que abre el menú con la tecla Alt. Voy a abrir el menú utilizando el ratón.)

+0

¿De qué menú es esto? Acabo de escribir Alt en un cuadro de Windows y no apareció ningún menú. – Kaz

+1

@Kaz: Establece el foco en la barra de menú de la ventana enfocada. –

Respuesta

10

Cómo sobre la comprobación para WM_SYSCOMMAND, y cuando wParam es SC_KEYMENU, devuelve 0?

actualización/solución exacta:

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

Descripción: Si lParam>>16 es positivo, el menú se activa mediante el ratón, cuando es cero o negativo, el menú se activa mediante Alt o Alt + algo.

+0

Esto me ayudó a encontrar la solución correcta. Agregué la solución a esta respuesta. –

+0

me ayudó también. Este problema fue tan terrible que la tecla ALT y algunas otras teclas en Windows 8 se atornillan constantemente con las aplicaciones Win32. También gracias por la pequeña descripción que hace entender lo que está pasando más claro. Nunca supe para qué se usaba lParam o wParam, ya que nunca se utilizó demasiado en mis necesidades. –

Cuestiones relacionadas