Compartir a través de


Función MessageBoxW (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 la información de estado o error. El cuadro de mensaje devuelve un valor entero que indica qué botón ha clic el usuario.

Sintaxis

int MessageBoxW(
  [in, optional] HWND    hWnd,
  [in, optional] LPCWSTR lpText,
  [in, optional] LPCWSTR 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 de

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 de

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 mostrados en el cuadro de mensaje, especifique uno de los siguientes valores.

Valor Significado
MB_ABORTRETRYIGNORE
0x00000002L
El cuadro de mensaje contiene tres botones de inserción: Anular, Reintentary Omitir.
MB_CANCELTRYCONTINUE
0x00000006L
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.
MB_HELP
0x00004000L
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.
MB_OK
0x00000000L
El cuadro de mensaje contiene un botón de inserción: Aceptar. Este es el valor predeterminado.
MB_OKCANCEL
0x00000001L
El cuadro de mensaje contiene dos botones de inserción: Aceptar y Cancelar.
MB_RETRYCANCEL
0x00000005L
El cuadro de mensaje contiene dos botones de inserción: Reintentar y Cancelar.
MB_YESNO
0x00000004L
El cuadro de mensaje contiene dos botones de inserción: y No.
MB_YESNOCANCEL
0x00000003L
El cuadro de mensaje contiene tres botones de inserción: , Noy Cancelar.
 

Para mostrar un icono en el cuadro de mensaje, especifique uno de los valores siguientes.

Valor Significado
MB_ICONEXCLAMATION
0x00000030L
Aparece un icono de signo de exclamación en el cuadro de mensaje.
MB_ICONWARNING
0x00000030L
Aparece un icono de signo de exclamación en el cuadro de mensaje.
MB_ICONINFORMATION
0x00000040L
Un icono que consta de una letra minúscula i en un círculo aparece en el cuadro de mensaje.
MB_ICONASTERISK
0x00000040L
Un icono que consta de una letra minúscula i en un círculo aparece en el cuadro de mensaje.
MB_ICONQUESTION
0x00000020L
Aparece un icono de signo de interrogación en el cuadro de mensaje. El icono de mensaje de signo de interrogación ya no se recomienda porque no representa claramente un tipo específico de mensaje y porque la expresión de un mensaje como pregunta podría aplicarse a cualquier tipo de mensaje. Además, los usuarios pueden confundir el signo de interrogación del símbolo del mensaje con información de ayuda. Por lo tanto, no use este símbolo de mensaje de signo de interrogación en los cuadros de mensaje. El sistema sigue admitiendo su inclusión solo por motivos de compatibilidad con versiones anteriores.
MB_ICONSTOP
0x00000010L
Aparece un icono de inicio de sesión en el cuadro de mensaje.
MB_ICONERROR
0x00000010L
Aparece un icono de inicio de sesión en el cuadro de mensaje.
MB_ICONHAND
0x00000010L
Aparece un icono de inicio de sesión en el cuadro de mensaje.
 

Para indicar el botón predeterminado, especifique uno de los valores siguientes.

Valor Significado
MB_DEFBUTTON1
0x00000000L
El primer botón es el botón predeterminado.

MB_DEFBUTTON1 es el valor predeterminado a menos que se especifique MB_DEFBUTTON2, MB_DEFBUTTON3o MB_DEFBUTTON4.

MB_DEFBUTTON2
0x00000100L
El segundo botón es el botón predeterminado.
MB_DEFBUTTON3
0x00000200L
El tercer botón es el botón predeterminado.
MB_DEFBUTTON4
0x00000300L
El cuarto botón es el botón predeterminado.
 

Para indicar la modalidad del cuadro de diálogo, especifique uno de los valores siguientes.

Valor Significado
MB_APPLMODAL
0x00000000L
El usuario debe responder al cuadro de mensaje antes de continuar trabajando en la ventana identificada por el parámetro hWnd. Sin embargo, el usuario puede pasar a las ventanas de otros subprocesos y trabajar en esas ventanas.

En función de la jerarquía de ventanas de la aplicación, es posible que el usuario pueda moverse a otras ventanas dentro del subproceso. Todas las ventanas secundarias del elemento primario del cuadro de mensaje se deshabilitan automáticamente, pero no las ventanas emergentes.

MB_APPLMODAL es el valor predeterminado si no se especifica ni MB_SYSTEMMODAL ni MB_TASKMODAL.

MB_SYSTEMMODAL
0x00001000L
Igual que MB_APPLMODAL excepto que el cuadro de mensaje tiene el estilo WS_EX_TOPMOST. Use cuadros de mensaje modales del sistema para notificar al usuario errores graves y potencialmente perjudiciales que requieren atención inmediata (por ejemplo, quedarse sin memoria). Esta marca no tiene ningún efecto en la capacidad del usuario de interactuar con ventanas distintas de las asociadas a hWnd.
MB_TASKMODAL
0x00002000L
Igual que MB_APPLMODAL excepto que todas las ventanas de nivel superior que pertenecen al subproceso actual están deshabilitadas si el parámetro hWnd es NULL. Use esta marca cuando la aplicación o biblioteca que realiza la llamada no tenga disponible un identificador de ventana, pero todavía necesita evitar la entrada a otras ventanas del subproceso que realiza la llamada sin suspender otros subprocesos.
 

Para especificar otras opciones, use uno o varios de los valores siguientes.

Valor Significado
MB_DEFAULT_DESKTOP_ONLY
0x00020000L
Igual que el escritorio de la estación de ventana interactiva. Para obtener más información, consulte Estaciones de ventana.

Si el escritorio de entrada actual no es el escritorio predeterminado, cuadro de mensajes no devuelve hasta que el usuario cambie al escritorio predeterminado.

MB_RIGHT
0x00080000L
El texto está justificado a la derecha.
MB_RTLREADING
0x00100000L
Muestra el texto del mensaje y el título mediante el orden de lectura de derecha a izquierda en los sistemas hebreo y árabe.
MB_SETFOREGROUND
0x00010000L
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.
MB_TOPMOST
0x00040000L
El cuadro de mensaje se crea con el estilo de ventana WS_EX_TOPMOST.
MB_SERVICE_NOTIFICATION
0x00200000L
El autor de la llamada es un servicio que notifica al usuario de 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 con respecto al uso de esta marca, consulte Interactive Services. En concreto, tenga en cuenta que esta marca puede generar contenido interactivo en un escritorio bloqueado y, por 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 IDCANCEL si se presiona la tecla ESC o se selecciona el botón Cancelar . Si el cuadro de mensaje no tiene botón Cancelar, al presionar ESC no tendrá ningún efecto, a menos que esté presente un botón MB_OK. Si se muestra un botón MB_OK y el usuario presiona ESC, el valor devuelto será IDOK.

Si se produce un error en la función, 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 y valor devueltos Descripción
IDABORT
3
Se seleccionó el botón Anular.
IDCANCEL
2
Se seleccionó el botón Cancelar .
IDCONTINUE
11
Se seleccionó el botón Continuar.
IDIGNORE
5
Se seleccionó el botón Omitir .
IDNO de
7
Se seleccionó el botón No.
IDOK
1
Se seleccionó el botón Aceptar.
IDRETRY
4
Se seleccionó el botón Reintentar.
IDTRYAGAIN
10
Se seleccionó el botón Probar de nuevo.
IDYES
6
Se seleccionó el botón Sí.

Observaciones

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
icono de para MB_ICONHAND, MB_ICONSTOP y MB_ICONERROR MB_ICONHAND, MB_ICONSTOPo MB_ICONERROR
Icono de para MB_ICONQUESTION MB_ICONQUESTION
Icono de para MB_ICONEXCLAMATION y MB_ICONWARNING MB_ICONEXCLAMATION o MB_ICONWARNING
Icono de para MB_ICONASTERISK y MB_ICONINFORMATION MB_ICONASTERISK o MB_ICONINFORMATION
 

Agregar 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 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 apunta el lpText y los parámetros lpCaption no deben tomarse de un archivo de recursos porque puede producirse un error al intentar cargar el recurso.

Si crea un cuadro de mensaje mientras está presente un cuadro de diálogo, 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 cuadro de mensajes 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 Intentar de nuevo.

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:

cuadro mensaje de

Para obtener otro ejemplo de cuadro de mensaje, vea Mostrar un cuadro de mensaje.

Nota

El encabezado winuser.h define MessageBox como un alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winuser.h (incluya Windows.h)
biblioteca de User32.lib
DLL de User32.dll
conjunto de API de ext-ms-win-ntuser-dialogbox-l1-1-0 (introducido en Windows 8)

Consulte también

conceptual de

cuadros de diálogo

FlashWindow

messageBeep de

MessageBoxEx de

MessageBoxIndirect

otros recursos

de referencia de

SetForegroundWindow