Función MessageBox (winuser.h)
Muestra un cuadro de diálogo modal que contiene un icono del sistema, un conjunto de botones y un breve mensaje específico de la aplicación, como información de estado o error. El cuadro de mensaje devuelve un valor entero que indica qué botón ha hecho clic el usuario.
Sintaxis
int MessageBox(
[in, optional] HWND hWnd,
[in, optional] LPCTSTR lpText,
[in, optional] LPCTSTR lpCaption,
[in] UINT uType
);
Parámetros
[in, optional] hWnd
Tipo: HWND
Identificador de la ventana de propietario del cuadro de mensaje que se va a crear. Si este parámetro es NULL, el cuadro de mensaje no tiene ninguna ventana de propietario.
[in, optional] lpText
Tipo: LPCTSTR
Mensaje que se va a mostrar. Si la cadena consta de más de una línea, puede separar las líneas mediante un carácter de retorno de carro o avance de línea entre cada línea.
[in, optional] lpCaption
Tipo: LPCTSTR
Título del cuadro de diálogo. Si este parámetro es NULL, el título predeterminado es Error.
[in] uType
Tipo: UINT
Contenido y comportamiento del cuadro de diálogo. Este parámetro puede ser una combinación de marcas de los siguientes grupos de marcas.
Para indicar los botones que se muestran en el cuadro de mensaje, especifique uno de los valores siguientes.
Valor | Significado |
---|---|
|
El cuadro de mensaje contiene tres botones de inserción: Anular, Reintentar e Omitir. |
|
El cuadro de mensaje contiene tres botones de inserción: Cancelar, Intentar de nuevo, Continuar. Use este tipo de cuadro de mensaje en lugar de MB_ABORTRETRYIGNORE. |
|
Agrega un botón Ayuda al cuadro de mensaje. Cuando el usuario hace clic en el botón Ayuda o presiona F1, el sistema envía un mensaje WM_HELP al propietario. |
|
El cuadro de mensaje contiene un botón de inserción: Aceptar. Este es el valor predeterminado. |
|
El cuadro de mensaje contiene dos botones de inserción: Aceptar y Cancelar. |
|
El cuadro de mensaje contiene dos botones de inserción: Reintentar y Cancelar. |
|
El cuadro de mensaje contiene dos botones de inserción: Sí y No. |
|
El cuadro de mensaje contiene tres botones de inserción: Sí, No y Cancelar. |
Para mostrar un icono en el cuadro de mensaje, especifique uno de los valores siguientes.
Para indicar el botón predeterminado, especifique uno de los valores siguientes.
Para indicar la modalidad del cuadro de diálogo, especifique uno de los valores siguientes.
Para especificar otras opciones, use uno o varios de los valores siguientes.
Valor | Significado |
---|---|
|
Igual que el escritorio de la estación de ventana interactiva. Para obtener más información, vea Estaciones de ventana.
Si el escritorio de entrada actual no es el escritorio predeterminado, MessageBox no devuelve hasta que el usuario cambia al escritorio predeterminado. |
|
El texto está justificado a la derecha. |
|
Muestra el mensaje y subtítulo texto mediante el orden de lectura de derecha a izquierda en los sistemas hebreo y árabe. |
|
El cuadro de mensaje se convierte en la ventana de primer plano. Internamente, el sistema llama a la función SetForegroundWindow para el cuadro de mensaje. |
|
El cuadro de mensaje se crea con el estilo de ventana WS_EX_TOPMOST . |
|
El autor de llamada es un servicio que notifica al usuario sobre un evento. La función muestra un cuadro de mensaje en el escritorio activo actual, incluso si no hay ningún usuario que haya iniciado sesión en el equipo.
Terminal Services: Si el subproceso que llama tiene un token de suplantación, la función dirige el cuadro de mensaje a la sesión especificada en el token de suplantación. Si se establece esta marca, el parámetro hWnd debe ser NULL. Esto es para que el cuadro de mensaje pueda aparecer en un escritorio distinto del escritorio correspondiente al hWnd. Para obtener información sobre las consideraciones de seguridad relacionadas con el uso de esta marca, consulte Interactive Services. En concreto, tenga en cuenta que esta marca puede producir contenido interactivo en un escritorio bloqueado y, por lo tanto, debe usarse solo para un conjunto muy limitado de escenarios, como el agotamiento de recursos. |
Valor devuelto
Tipo: int
Si un cuadro de mensaje tiene un botón Cancelar , la función devuelve el valor IDCANCEL si se presiona la tecla ESC o se selecciona el botón Cancelar . Si el cuadro de mensaje no tiene ningún botón Cancelar , presionar ESC no tendrá ningún efecto, a menos que haya un botón MB_OK presente. Si se muestra un botón de MB_OK y el usuario presiona ESC, el valor devuelto será IDOK.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Si la función se ejecuta correctamente, el valor devuelto es uno de los siguientes valores de elemento de menú.
Código o valor devuelto | Descripción |
---|---|
|
Se ha seleccionado el botón Anular . |
|
Se ha seleccionado el botón Cancelar . |
|
Se ha seleccionado el botón Continuar . |
|
Se ha seleccionado el botón Omitir . |
|
Se ha seleccionado el botón No . |
|
Se ha seleccionado el botón Aceptar . |
|
Se ha seleccionado el botón Reintentar . |
|
Se ha seleccionado el botón Probar de nuevo . |
|
Se ha seleccionado el botón Sí . |
Comentarios
Los siguientes iconos del sistema se pueden usar en un cuadro de mensaje estableciendo el parámetro uType en el valor de marca correspondiente.
Icono | Valores de marca |
---|---|
MB_ICONHAND, MB_ICONSTOP o MB_ICONERROR | |
MB_ICONQUESTION | |
MB_ICONEXCLAMATION o MB_ICONWARNING | |
MB_ICONASTERISK o MB_ICONINFORMATION |
La adición de dos marcas de derecha a izquierda (RLM), representadas por el carácter de formato Unicode U+200F, al principio de una cadena de presentación del Cuadro de mensajes se interpreta mediante el motor de representación cuadro de mensajes para que el orden de lectura del cuadro de mensajes se represente como de derecha a izquierda (RTL).
Cuando se usa un cuadro de mensaje modal del sistema para indicar que el sistema tiene poca memoria, las cadenas a las que apuntan los parámetros lpText y lpCaption no se deben tomar de un archivo de recursos porque se puede producir un error al intentar cargar el recurso.
Si crea un cuadro de mensaje mientras un cuadro de diálogo está presente, use un identificador para el cuadro de diálogo como parámetro hWnd . El parámetro hWnd no debe identificar una ventana secundaria, como un control en un cuadro de diálogo.
Ejemplos
En el ejemplo siguiente, la aplicación muestra un cuadro de mensaje que solicita al usuario una acción después de que se haya producido una condición de error. El cuadro de mensaje muestra el mensaje que describe la condición de error y cómo resolverla. El estilo MB_CANCELTRYCONTINUE dirige MessageBox para proporcionar tres botones con los que el usuario puede elegir cómo continuar. El estilo MB_DEFBUTTON2 establece el foco predeterminado en el segundo botón del cuadro de mensaje, en este caso, el botón Volver a intentar .
int DisplayResourceNAMessageBox()
{
int msgboxID = MessageBox(
NULL,
(LPCWSTR)L"Resource not available\nDo you want to try again?",
(LPCWSTR)L"Account Details",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
switch (msgboxID)
{
case IDCANCEL:
// TODO: add code
break;
case IDTRYAGAIN:
// TODO: add code
break;
case IDCONTINUE:
// TODO: add code
break;
}
return msgboxID;
}
En la imagen siguiente se muestra la salida del ejemplo de código anterior:
Para ver otro ejemplo de cuadro de mensaje, vea Mostrar un cuadro de mensaje.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h (incluya Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |
Conjunto de API | ext-ms-win-ntuser-dialogbox-l1-1-0 (introducido en Windows 8) |
Consulte también
Conceptual
Otros recursos
Referencia