Freigeben über


Qué es el bucle de mensajes, message loop o WndProc ?

Básico

Las ventanas – y los demás controles – funcionan gracias a un bucle de mensajes, todo lo que manejamos nosotros como eventos : click del mouse, mover, cerrar, cambiar tamaño, maximizar etc, realmente es controlado por un bucle en donde se envían diferentes mensajes a la ventana, esta a su vez tiene un procedimiento que recibe estos mensajes y con base a los mensajes recibidos puede hacer una u otra cosa según se programe.

Los mensajes no son sino números, cada número representa un mensaje diferente, en la API de Windows solemos encontrarnos cosas cómo:

 #define WM_INITDIALOG                   0x0110
#define WM_COMMAND                      0x0111
#define WM_LBUTTONDOWN                  0x0201

En C# escribiriamos algo así

 public enum NotifyType
{
    NOTIFY_FOR_THIS_SESSION = 0,
    NOTIFY_FOR_ALL_SESSIONS = 1
}

Ese gran bucle en Windows es llamado WndProc, todo sistema de ventanas en cualquier sistema operativo funciona de forma similar, con otro nombre o estilo desde luego, pero su propósito es el mismo.

Si, para algunos esto ya debe estar sonando a cuento, pero las cosas son así por debajo de lo que usamos tradicionalmente. El tema del artículo no es explicar como funciona un ciclo de mensajes así que por el momento lo dejaremos hasta allí y quien quiera profundizar puede consultar esta fuente en internet:

https://www.winprog.org/tutorial/message_loop.html