Mensajes y colas de mensajes

En esta sección se describen los mensajes y las colas de mensajes y cómo usarlos en las aplicaciones.

En esta sección

Nombre Descripción
Acerca de los mensajes y las colas de mensajes En esta sección se describen los mensajes de Windows y las colas de mensajes.
Uso de mensajes y colas de mensajes En los ejemplos de código siguientes se muestra cómo realizar las siguientes tareas asociadas a mensajes de Windows y colas de mensajes.
Referencia de mensajes Contiene la referencia de API.

mensajes de System-Provided

Para obtener listas de los mensajes proporcionados por el sistema, vea Mensajes definidos por el sistema.

Funciones de mensajes

Nombre Descripción
BroadcastSystemMessage Envía un mensaje a los destinatarios especificados. Los destinatarios pueden ser aplicaciones, controladores instalables, controladores de red, controladores de dispositivo de nivel de sistema o cualquier combinación de estos componentes del sistema.
Para recibir información adicional si se define la solicitud, use la función BroadcastSystemMessageEx .
BroadcastSystemMessageEx Envía un mensaje a los destinatarios especificados. Los destinatarios pueden ser aplicaciones, controladores instalables, controladores de red, controladores de dispositivo de nivel de sistema o cualquier combinación de estos componentes del sistema.
Esta función es similar a BroadcastSystemMessage , salvo que esta función puede devolver más información de los destinatarios.
DispatchMessage Envía un mensaje a un procedimiento de ventana. Normalmente se usa para enviar un mensaje recuperado por la función GetMessage .
GetInputState Determina si hay mensajes de botón del mouse o teclado en la cola de mensajes del subproceso que llama.
GetMessage Recupera un mensaje de la cola de mensajes del subproceso que llama. La función envía mensajes enviados entrantes hasta que un mensaje publicado está disponible para su recuperación.
A diferencia de GetMessage, la función PeekMessage no espera a que se publique un mensaje antes de devolverlo.
GetMessageExtraInfo Recupera la información adicional del mensaje para el subproceso actual. La información adicional del mensaje es un valor definido por el controlador o de la aplicación asociado a la cola de mensajes del subproceso actual.
GetMessagePos Recupera la posición del cursor del último mensaje recuperado por la función GetMessage .
Para determinar la posición actual del cursor, use la función GetCursorPos .
GetMessageTime Recupera la hora del mensaje para el último mensaje recuperado por la función GetMessage . El tiempo es un entero largo que especifica el tiempo transcurrido, en milisegundos, desde el momento en que se inició el sistema hasta la hora en que se creó el mensaje (es decir, colocado en la cola de mensajes del subproceso).
GetQueueStatus Indica el tipo de mensajes que se encuentran en la cola de mensajes del subproceso que llama.
InSendMessage Determina si el procedimiento de ventana actual está procesando un mensaje enviado desde otro subproceso (en el mismo proceso o en otro proceso) mediante una llamada a la función SendMessage .
Para obtener información adicional sobre cómo se envió el mensaje, use la función InSendMessageEx .
InSendMessageEx Determina si el procedimiento de ventana actual está procesando un mensaje enviado desde otro subproceso (en el mismo proceso o en otro).
PeekMessage Envía mensajes enviados entrantes, comprueba la cola de mensajes del subproceso de un mensaje publicado y recupera el mensaje (si existe alguno).
PostMessage Publica un mensaje en la cola de mensajes asociada al subproceso que creó la ventana especificada y devuelve sin esperar a que el subproceso procese el mensaje.
Para publicar un mensaje en la cola de mensajes asociada a un subproceso, use la función PostThreadMessage .
PostQuitMessage Indica al sistema que un subproceso ha realizado una solicitud para finalizar (salir). Normalmente se usa en respuesta a un mensaje de WM_DESTROY .
PostThreadMessage Envía un mensaje a la cola de mensajes del subproceso especificado. Devuelve sin esperar a que el subproceso procese el mensaje.
RegisterWindowMessage Define un nuevo mensaje de ventana que se garantiza que es único en todo el sistema. El valor del mensaje se puede usar al enviar o publicar mensajes.
ReplyMessage Responde a un mensaje enviado a través de la función SendMessage sin devolver el control a la función que llamó a SendMessage.
SendAsyncProc Función de devolución de llamada definida por la aplicación que se usa con la función SendMessageCallback . El sistema pasa el mensaje a la función de devolución de llamada después de pasar el mensaje al procedimiento de la ventana de destino. El tipo SENDASYNCPROC define un puntero a esta función de devolución de llamada. SendAsyncProc es un marcador de posición para el nombre de función definido por la aplicación.
SendMessage Envía el mensaje especificado a una ventana o ventanas. La función SendMessage llama al procedimiento de ventana para la ventana especificada y no devuelve hasta que el procedimiento de ventana haya procesado el mensaje.
Para enviar un mensaje y devolverlo inmediatamente, use la función SendMessageCallback o SendNotifyMessage . Para publicar un mensaje en la cola de mensajes de un subproceso y devolverlo inmediatamente, use la función PostMessage o PostThreadMessage .
SendMessageCallback Envía el mensaje especificado a una ventana o ventanas. Llama al procedimiento de ventana para la ventana especificada y devuelve inmediatamente. Después de que el procedimiento de ventana procese el mensaje, el sistema llama a la función de devolución de llamada especificada, pasando el resultado del procesamiento de mensajes y un valor definido por la aplicación a la función de devolución de llamada.
SendMessageTimeout Envía el mensaje especificado a una de las ventanas más.
SendNotifyMessage Envía el mensaje especificado a una ventana o ventanas. Si el subproceso de llamada creó la ventana, SendNotifyMessage llama al procedimiento de ventana de la ventana y no vuelve hasta que el procedimiento de ventana haya procesado el mensaje. Si la ventana se creó mediante un subproceso diferente, SendNotifyMessage pasa el mensaje al procedimiento de ventana y devuelve inmediatamente; no espera a que el procedimiento de ventana termine de procesar el mensaje.
SetMessageExtraInfo Establece la información adicional del mensaje para el subproceso actual. La información adicional del mensaje es un valor definido por el controlador o de la aplicación asociado a la cola de mensajes del subproceso actual. Una aplicación puede usar la función GetMessageExtraInfo para recuperar la información adicional del mensaje de un subproceso.
TranslateMessage Convierte los mensajes de clave virtual en mensajes de caracteres. Los mensajes de caracteres se publican en la cola de mensajes del subproceso que realiza la llamada, que se leerá la próxima vez que el subproceso llame a la función GetMessage o PeekMessage .
WaitMessage Devuelve el control a otros subprocesos cuando un subproceso no tiene ningún otro mensaje en su cola de mensajes. La función WaitMessage suspende el subproceso y no vuelve hasta que se coloca un nuevo mensaje en la cola de mensajes del subproceso.

Constantes de mensaje

Nombre Descripción
OCM__BASE Se usa para definir mensajes privados para que los usen las clases de ventana privada.
WM_APP Se usa para definir mensajes privados.
WM_USER Se usa para definir mensajes privados para que los usen las clases de ventana privada.

Estructuras de mensajes

Nombre Descripción
BSMINFO Contiene información sobre una ventana que denegó una solicitud de BroadcastSystemMessageEx.
MSG Contiene información de mensaje de la cola de mensajes de un subproceso.