Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuáles son la información clave y la información de caracteres en la programación de Windows?

¿Cuáles son la información clave y la información de caracteres en la programación de Windows?

1. Enfoque

La estructura MSG utilizada por el programa para leer mensajes de la cola de mensajes contiene un campo hwnd. Este campo representa el identificador de la ventana que recibió el mensaje. La función DispatchMessage en el bucle de mensajes entrega el mensaje al procedimiento de ventana que necesita el mensaje.

La ventana que recibe este evento de teclado se llama ventana con foco de entrada.

A veces, ninguna ventana tiene foco de entrada. Esto sucede cuando el programa está minimizado.

Un procedimiento de ventana determina si su ventana tiene foco de entrada capturando los mensajes WM_SETFOCUS y WM_KILLFOCUS.

2. Cola y sincronización

Cuando el usuario presiona y suelta teclas en el teclado, Windows y los controladores de dispositivos de teclado convierten los códigos de escaneo de hardware en mensajes formateados. Sin embargo, estos mensajes no se colocan inmediatamente en la cola de mensajes de la aplicación, sino que Windows los almacena en la cola de mensajes del sistema. La cola de mensajes del sistema es una cola de mensajes separada que Windows utiliza para almacenar inicialmente la entrada del usuario desde el teclado y el mouse. Sólo después de que una aplicación de Windows haya terminado de procesar el mensaje de entrada del usuario actual, Windows obtiene el siguiente mensaje de la cola de mensajes del sistema y lo coloca en la cola de mensajes de la aplicación.

3. Mensajes clave

Cuando el usuario presiona una tecla, Windows colocará el mensaje WM_KEYDOWN o WM_SYSKEYDOWN en la cola de mensajes con foco de entrada. Cuando se suelta la clave, Windows coloca un mensaje WM_KEYUP o WM_SYSKEYUP en la cola de mensajes adecuada.

4. Información del personaje

Al escapar de la información de estado, la información clave se puede convertir en información del personaje.

GetMessage obtiene el siguiente mensaje de la cola de mensajes;

TranslateMessage es responsable de convertir mensajes clave en mensajes de caracteres

GetMessage obtiene el siguiente mensaje del mensaje; cola;

TranslateMessage es responsable de convertir mensajes clave en mensajes de caracteres.