Función DialogBoxIndirectParamA (winuser.h)

Crea un cuadro de diálogo modal a partir de una plantilla de cuadro de diálogo en memoria. Antes de mostrar el cuadro de diálogo, la función pasa un valor definido por la aplicación al procedimiento del cuadro de diálogo como parámetro lParam del mensaje de WM_INITDIALOG . Una aplicación puede usar este valor para inicializar controles de cuadro de diálogo.

Sintaxis

INT_PTR DialogBoxIndirectParamA(
  [in, optional] HINSTANCE       hInstance,
  [in]           LPCDLGTEMPLATEA hDialogTemplate,
  [in, optional] HWND            hWndParent,
  [in, optional] DLGPROC         lpDialogFunc,
  [in]           LPARAM          dwInitParam
);

Parámetros

[in, optional] hInstance

Tipo: HINSTANCE

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

[in] hDialogTemplate

Tipo: LPCDLGTEMPLATE

Plantilla que dialogBoxIndirectParam 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 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, consulte DialogProc.

[in] dwInitParam

Tipo: LPARAM

Valor que se va a pasar al cuadro de diálogo en el parámetro lParam del mensaje WM_INITDIALOG .

Valor devuelto

Tipo: INT_PTR

Si la función se ejecuta correctamente, el valor devuelto es el parámetro nResult especificado en la llamada a la función EndDialog que se usó para finalizar el cuadro de diálogo.

Si se produce un error en la función porque el parámetro hWndParent no es válido, el valor devuelto es cero. La función devuelve cero en este caso para la compatibilidad con versiones anteriores de Windows. Si se produce un error en la función por cualquier otro motivo, el valor devuelto es –1. Para obtener información de error extendida, llame a GetLastError.

Comentarios

La función DialogBoxIndirectParam usa la función CreateWindowEx para crear el cuadro de diálogo. A continuación, DialogBoxIndirectParam 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 EndDialog , DialogBoxIndirectParam 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 se llama a EndDialog.

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

En una plantilla de cuadro de diálogo extendida, el encabezado DLGTEMPLATEEX y cada una de las definiciones de control DLGITEMTEMPLATEEX deben alinearse en los 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 DWORD . Todas las demás matrices de longitud variable de la plantilla deben alinearse en los límites de WORD .

Todas las cadenas de caracteres de la plantilla del cuadro de diálogo, como títulos para el cuadro de diálogo y los botones, deben ser cadenas Unicode.

Nota

El encabezado winuser.h define DialogBoxIndirectParam 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 neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

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

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

Cuadros de diálogo

Cuadro de diálogo

DialogBoxIndirect

DialogBoxParam

DialogProc

EndDialog

Referencia

WM_INITDIALOG

WM_SETFONT