4. Cuadro de mensaje (MessageBox)
La función de mensaje crea, muestra, y opera un cuadro o caja de mensaje. El cuadro de mensaje contiene un mensaje y el título definido por la aplicación, así como cualquier combinación de iconos y botones predefinidos.
int __fastcall MessageBox(char * Text, char * Caption, int Flags);
Parámetros
Text (Texto)
Apunta a una cadena terminada en cero que contiene el mensaje que se mostrará.
Caption (Leyenda)
Apunta a una cadena terminada en cero utilizada para el título del cuadro de diálogo. Si este parámetro es NULL, se utilizará el título predeterminado de error.
Flags (Banderas)
Especifica un conjunto de bits indicadores que determinan el contenido y el comportamiento del cuadro de diálogo. Este parámetro puede ser una combinación de banderas de los siguientes grupos.
1.- Especificar una de las siguientes banderas para indicar los botones que figuran en el cuadro de mensaje:
Flags | Significado |
MB_ABORTRETRYIGNORE | El cuadro de mensaje contiene tres botones: Anular, Reintentar e Ignorar. |
MB_OK | El cuadro de mensaje contiene un botón: OK. Este es el predeterminado. |
MB_OKCANCEL | El cuadro de mensaje contiene dos botones: Aceptar y Cancelar. |
MB_RETRYCANCEL | El cuadro de mensaje contiene dos botones: Reintentar y Cancelar. |
MB_YESNO | El cuadro de mensaje contiene dos botones: Sí y No. |
MB_YESNOCANCEL | El cuadro de mensaje contiene tres botones: Sí, No, y Cancelar. |
2.- Especificar uno de los siguientes indicadores para mostrar un icono en el cuadro de mensaje:
Flags | Significado |
MB_ICONEXCLAMATION | una exclamación, icono de punto aparece en el cuadro de mensaje. |
MB_ICONWARNING | |
MB_ICONINFORMATION | un icono que consiste en una i minúscula en un círculo aparece en el cuadro de mensaje. |
MB_ICONASTERISK | |
MB_ICONQUESTION | Una pregunta icono de la marca aparece en el cuadro de mensaje. |
MB_ICONSTOP | una parada de signo icono aparece en el cuadro de mensaje. |
MB_ICONERROR | |
MB_ICONHAND | |
3 Especificar una de las siguientes banderas para indicar el botón por defecto:
Flags | Significado |
MB_DEFBUTTON1 | El primer botón es el botón predeterminado. |
MB_DEFBUTTON2 | El segundo botón es el botón predeterminado. |
MB_DEFBUTTON3 | El tercer botón es el botón predeterminado. |
MB_DEFBUTTON4 | El cuarto botón es el botón predeterminado. |
MB_DEFBUTTON1 es el valor predeterminado a menos que se especifique MB_DEFBUTTON2, MB_DEFBUTTON3, o MB_DEFBUTTON4.
Valor de retorno
El valor de retorno es cero si no hay suficiente memoria para crear el cuadro de mensaje.
Si la función tiene éxito, el valor de retorno es uno de los siguientes elementos de menú de los valores devueltos por el cuadro de diálogo:
Valor | Valor numérico | Significado |
IDABORT | 3 | El usuario eligió el botón Anular. |
IDCANCEL | 2 | El usuario eligió el botón Cancelar. |
IDIGNORE | 5 | El usuario eligió el botón Ignorar. |
IDNO | 7 | El usuario escogió en el botón No. |
IDOK | 1 | El usuario eligió el botón Aceptar. |
IDRETRY | 4 | El usuario eligió el botón Reintentar. |
IDYES | 6 | El usuario eligió el botón Sí |
Si un cuadro de mensaje tiene un botón Cancelar, la función devuelve el valor IDCANCEL si la tecla ESC es pulsada o el botón Cancelar es seleccionado. Si el cuadro de mensaje no tiene ningún botón Cancelar, al presionar ESC no tiene ningún efecto.
4.1. Ejemplo de utilización del MessageBox
En el siguiente ejemplo, se introduce la llamada al MessageBox en el interior de una sentencia if. El cuadro de mensaje se muestra al llegar a la sentencia y queda en espera de que el usuario actúe sobre él. Cuando se cierra el MessageBox el valor de retorno es capturado y evaluado por la sentencia. En este caso, si se ha pulsado el botón aceptar IDOK se ejecutará el cuerpo de la sentencia, de lo contrario se descarta.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Application->MessageBoxA("¿Guardar el fichero?","Guardar como",MB_OKCANCEL) == IDOK)
{
// Guardar el fichero
}
}

Ejemplo de MessageBox
En el siguiente ejemplo se muestra la combinación de varios indicadores para establecer los botones que se han de mostrar junto con un icono.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Application->MessageBoxA("¿Guardar el fichero?","Guardar como",MB_OKCANCEL+ MB_ICONQUESTION) == IDOK)
{
// Guardar el fichero
}
}

Ejemplo de combinación de varios flags en MessageBox