从内存中的对话框模板创建无模式对话框。 在显示对话框之前,该函数会将应用程序定义的值作为 WM_INITDIALOG 消息的 lParam 参数传递给对话框过程。 应用程序可以使用此值初始化对话框控件。
语法
HWND CreateDialogIndirectParamW(
[in, optional] HINSTANCE hInstance,
[in] LPCDLGTEMPLATEW lpTemplate,
[in, optional] HWND hWndParent,
[in, optional] DLGPROC lpDialogFunc,
[in] LPARAM dwInitParam
);
参数
[in, optional] hInstance
类型:HINSTANCE
包含对话框模板的模块句柄。 如果此参数为 NULL,则使用当前可执行文件。
[in] lpTemplate
类型:LPCDLGTEMPLATE
CreateDialogIndirectParam 模板用于创建对话框。 对话框模板包含描述对话框的标头,后跟一个或多个用于描述对话框中每个控件的其他数据块。 该模板可以使用标准格式或扩展格式。
在标准模板中,标头是一个 DLGTEMPLATE 结构,后跟其他可变长度数组。 每个控件的数据由 DLGITEMTEMPLATE 结构组成,后跟其他可变长度数组。
在扩展对话框模板中,标头使用 DLGTEMPLATEEX 格式,控件定义使用 DLGITEMTEMPLATEEX 格式。
CreateDialogIndirectParam 返回后,可以释放模板,该模板仅用于启动对话框。
[in, optional] hWndParent
类型:HWND
拥有对话框的窗口的句柄。
[in, optional] lpDialogFunc
类型:DLGPROC
指向对话框过程的指针。 有关对话框过程的详细信息,请参阅 DialogProc。
[in] dwInitParam
类型:LPARAM
要传递给 WM_INITDIALOG 消息的 lParam 参数中的对话框的值。
返回值
类型:HWND
如果函数成功,则返回值为对话框的窗口句柄。
如果函数失败,则返回值 NULL。 若要获取扩展的错误信息,请调用 GetLastError。
言论
CreateDialogIndirectParam 函数使用 CreateWindowEx 函数创建对话框。 CreateDialogIndirectParam 然后将 WM_INITDIALOG 消息发送到对话框过程。 如果模板指定 DS_SETFONT 或DS_SHELLFONT样式,该函数还会向对话框过程发送 WM_SETFONT 消息。 如果模板指定 WS_VISIBLE 样式,该函数将显示对话框。 最后,CreateDialogIndirectParam 将窗口句柄返回到对话框。
CreateDialogIndirectParam 返回后,可以使用 ShowWindow 函数显示对话框(如果尚未显示)。 若要销毁对话框,请使用 DestroyWindow 函数。 若要支持键盘导航和其他对话框功能,对话框的消息循环必须调用 IsDialogMessage 函数。
在标准对话框模板中,DLGTEMPLATE 结构,并且每个 DLGITEMTEMPLATE 结构必须在 DWORD 边界上对齐。 在 DLGITEMTEMPLATE 结构后面的创建数据数组也必须在 DWORD 边界上对齐。 模板中的所有其他可变长度数组必须在 WORD 边界上对齐。
在扩展对话框模板中,DLGTEMPLATEEX 标头以及每个 DLGITEMTEMPLATEEX 控件定义必须在 DWORD 边界上对齐。 创建数据数组(如果有)在 DLGITEMTEMPLATEEX 结构之后也必须在 DWORD 边界上对齐。 模板中的所有其他可变长度数组必须在 WORD 边界上对齐。
对话框模板中的所有字符串(如对话框和按钮的标题)必须是 Unicode 字符串。
注意
winuser.h 标头将 CreateDialogIndirectParam 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winuser.h (包括 Windows.h) |
库 | User32.lib |
DLL | User32.dll |
API 集 | ext-ms-win-ntuser-dialogbox-l1-1-0(在 Windows 8 中引入) |
另请参阅
概念
其他资源
参考