Uso básico de MessageBox

Antes de aprender a visualizar texto en la ventana, usaremos un mecanismo más simple para informar al usuario de cualquier cosa que pase en nuestra aplicación. Este mecanismo no es otro que el cuadro de mensaje (message box), que consiste en una pequeña ventana con un mensaje para el usuario y uno o varios botones, según el tipo de cuadro de mensaje que usemos. En nuestros primeros ejemplos, el cuadro de mensaje sólo incluirá el botón de "Aceptar".

Para visualizar un cuadro de mensaje simple, usaremos la función MessageBox. En nuestros ejemplos bastará con la siguiente forma:

MessageBox(hWnd, "Texto de mensaje", "Texto de título", MB_OK);

Esto mostrará un pequeño cuadro de diálogo con el texto y el título especificados y un botón de "Aceptar". El cuadro se cerrará al pulsar el botón o al pulsar la tecla de Retorno.

Respondiendo a los mensajes del menú

Las activaciones de los menús se reciben mediante un mensaje WM_COMMAND.

Para procesar estos mensajes, si sólo podemos recibir mensajes desde un menú, únicamente nos interesa la palabra de menor peso del parámetro wParam del mensaje.

Modifiquemos el procedimiento de ventana para procesar los mensajes de nuestro menú:

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)                  /* manipulador del mensaje */
    {
        case WM_COMMAND:
           switch(LOWORD(wParam)) {
              case CM_PRUEBA:
                 MessageBox(hwnd, "Comando: Prueba", "Mensaje de menú", MB_OK);
                 break;
              case CM_SALIR:
                 MessageBox(hwnd, "Comando: Salir", "Mensaje de menú", MB_OK);
                 /* envía un mensaje WM_QUIT a la cola de mensajes */
                 PostQuitMessage(0);    
                 break;
           }
           break;   
        case WM_DESTROY:
           /* envía un mensaje WM_QUIT a la cola de mensajes */
           PostQuitMessage(0);    
           break;
        default: /* para los mensajes de los que no nos ocupamos */
           return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    return 0;
}

Sencillo, ¿no?.

Observa que hemos usado la macro LOWORD para extraer el identificador del ítem del parámetro wParam. Después de eso, todo es más fácil.

También se puede ver que hemos usado la misma función para salir de la aplicación que para el mensaje WM_DESTROY: la función PostQuitMessage.

Ejemplo 2

Este ejemplo contiene todo lo que hemos visto sobre los menús hasta ahora.


  Nombre Fichero Fecha Tamaño Contador Descarga
D Ejemplo 2 win002.zip 2004-01-18 2247 bytes 1832