Compartir a través de


Macro DialogBoxIndirectA (winuser.h)

Crea un cuadro de diálogo modal a partir de una plantilla de cuadro de diálogo en memoria. dialogBoxIndirect no devuelve el control hasta que la función de devolución de llamada especificada finaliza el cuadro de diálogo modal llamando a la función de EndDialog.

DialogBoxIndirect se implementa como una llamada a la función DialogBoxIndirectParam.

Sintaxis

void DialogBoxIndirectA(
  [in, optional]  hInstance,
  [in]            lpTemplate,
  [in, optional]  hWndParent,
  [in, optional]  lpDialogFunc
);

Parámetros

[in, optional] hInstance

Tipo: HINSTANCE

Identificador del módulo que crea el cuadro de diálogo.

[in] lpTemplate

Tipo: LPCDLGTEMPLATE

La plantilla que DialogBoxIndirect usa para crear el cuadro de diálogo. Una plantilla de cuadro de diálogo consta de un encabezado que describe el cuadro de diálogo, seguido de uno o varios bloques adicionales de datos que describen cada uno de los controles del cuadro de diálogo. La plantilla puede usar el formato estándar o el formato extendido.

En una plantilla estándar para un cuadro de diálogo, el encabezado es una estructura DLGTEMPLATE seguida de matrices de longitud variable adicionales. Los datos de cada control constan de una estructura de DLGITEMTEMPLATE seguida de matrices de longitud variable adicionales.

En una plantilla extendida para un cuadro de diálogo, el encabezado usa el formato DLGTEMPLATEEX y las definiciones de control usan el formato DLGITEMTEMPLATEEX.

[in, optional] hWndParent

Tipo: HWND

Identificador de la ventana que posee el cuadro de diálogo.

[in, optional] lpDialogFunc

Tipo: DLGPROC

Puntero al procedimiento del cuadro de diálogo. Para obtener más información sobre el procedimiento del cuadro de diálogo, vea DialogProc.

Valor devuelto

Ninguno

Observaciones

La macro DialogBoxIndirect usa la función createWindowEx para crear el cuadro de diálogo. dialogBoxIndirect envía un mensaje WM_INITDIALOG al procedimiento del cuadro de diálogo. Si la plantilla especifica el estilo DS_SETFONT o DS_SHELLFONT, la función también envía un mensaje WM_SETFONT al procedimiento del cuadro de diálogo. La función muestra el cuadro de diálogo (independientemente de si la plantilla especifica el estilo WS_VISIBLE), deshabilita la ventana del propietario e inicia su propio bucle de mensajes para recuperar y enviar mensajes para el cuadro de diálogo.

Cuando el procedimiento del cuadro de diálogo llama a la función de EndDialog, DialogBoxIndirect destruye el cuadro de diálogo, finaliza el bucle de mensajes, habilita la ventana de propietario (si se ha habilitado previamente) y devuelve el parámetro nResult especificado por el procedimiento del cuadro de diálogo cuando llamó a EndDialog.

En una plantilla de cuadro de diálogo estándar, la estructura DLGTEMPLATE y cada una de las estructuras de DLGITEMTEMPLATE deben alinearse en límites de DWORD. La matriz de datos de creación que sigue a un estructura de DLGITEMTEMPLATE también debe alinearse en un límite DWORD de . Todas las demás matrices de longitud variable de la plantilla deben alinearse en límites de WORD.

En una plantilla de cuadro de diálogo extendido, el encabezado DLGTEMPLATEEX y cada una de las definiciones de control DLGITEMTEMPLATEEX debe alinearse en límites de DWORD. La matriz de datos de creación, si existe, que sigue a una estructura DLGITEMTEMPLATEEX también debe alinearse en un límite de DWORD. Todas las demás matrices de longitud variable de la plantilla deben alinearse en límites de WORD.

Todas las cadenas de caracteres de la plantilla del cuadro de diálogo, como los títulos del cuadro de diálogo y los botones, deben ser cadenas Unicode. Use la función MultiByteToWideChar para generar cadenas Unicode a partir de cadenas ANSI.

Ejemplos

Para obtener un ejemplo, vea Creación de una plantilla en memoria.

Nota

El encabezado winuser.h define DialogBoxIndirect como 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

Consulte también

conceptual de

createWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

cuadros de diálogo

cuadro de diálogo

dialogBoxIndirectParam

dialogBoxParam

cuadro de diálogo Proc

endDialog

MultiByteToWideChar

otros recursos

de referencia de

WM_INITDIALOG

WM_SETFONT