DialogBoxIndirectParamA 函数 (winuser.h)

从内存中的对话框模板创建模式对话框。 在显示对话框之前,函数将应用程序定义的值作为WM_INITDIALOG消息的 lParam 参数传递给对话框过程。 应用程序可以使用此值来初始化对话框控件。

语法

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

参数

[in, optional] hInstance

类型: HINSTANCE

用于创建对话框的模块的句柄。

[in] hDialogTemplate

类型: LPCDLGTEMPLATE

DialogBoxIndirectParam 用于创建对话框的模板。 对话框模板由描述对话框的标头组成,后跟描述对话框中每个控件的一个或多个附加数据块。 模板可以使用标准格式或扩展格式。

在对话框的标准模板中,标头是 一个 DLGTEMPLATE 结构,后跟其他可变长度数组。 每个控件的数据都包含 一个 DLGITEMTEMPLATE 结构,后跟其他可变长度数组。

在对话框的扩展模板中,标头使用 DLGTEMPLATEEX 格式,控件定义使用 DLGITEMTEMPLATEEX 格式。

[in, optional] hWndParent

类型:HWND

拥有对话框的窗口的句柄。

[in, optional] lpDialogFunc

类型: DLGPROC

指向对话框过程的指针。 有关对话框过程的详细信息,请参阅 DialogProc

[in] dwInitParam

类型:LPARAM

要在WM_INITDIALOG消息的 lParam 参数中传递给对话框的值。

返回值

类型: INT_PTR

如果函数成功,则返回值是在调用 EndDialog 函数时指定的 nResult 参数,该参数用于终止对话框。

如果函数因 hWndParent 参数无效而失败,则返回值为零。 在这种情况下,为了与以前版本的 Windows 兼容,函数返回零。 如果函数因任何其他原因而失败,则返回值为 –1。 要获得更多的错误信息,请调用 GetLastError。

注解

DialogBoxIndirectParam 函数使用 CreateWindowEx 函数创建对话框。 然后,DialogBoxIndirectParamWM_INITDIALOG 消息发送到对话框过程。 如果模板指定 DS_SETFONT 或DS_SHELLFONT样式,函数还会向对话框过程发送 WM_SETFONT 消息。 无论模板是否指定 WS_VISIBLE样式) 、禁用所有者窗口并启动其自己的消息循环来检索和调度对话框的消息,函数都会显示对话框 (。

当对话框过程调用 EndDialog 函数时,DialogBoxIndirectParam 会销毁对话框,结束消息循环,启用所有者窗口 ((如果以前已启用) ),并在调用 EndDialog 时返回由对话框过程指定的 nResult 参数。

在标准对话框模板中, DLGTEMPLATE 结构和每个 DLGITEMTEMPLATE 结构必须在 DWORD 边界上对齐。 遵循 DLGITEMTEMPLATE 结构的创建数据数组也必须在 DWORD 边界上对齐。 模板中的所有其他可变长度数组必须在 WORD 边界上对齐。

在扩展对话框模板中, DLGTEMPLATEEX 标头和每个 DLGITEMTEMPLATEEX 控件定义必须在 DWORD 边界上对齐。 遵循 DLGITEMTEMPLATEEX 结构的创建数据数组(如果有)也必须在 DWORD 边界上对齐。 模板中的所有其他可变长度数组必须在 WORD 边界上对齐。

对话框模板中的所有字符串(例如对话框的标题和按钮)都必须是 Unicode 字符串。

注意

winuser.h 标头将 DialogBoxIndirectParam 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 在 Windows 8) 中引入的 ext-ms-win-ntuser-dialogbox-l1-1-0 (

请参阅

概念性

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

对话框

DialogBox

DialogBoxIndirect

DialogBoxParam

DialogProc

EndDialog

引用

WM_INITDIALOG

WM_SETFONT