### 函数功能

该宏在内存中从对话框模板上创建一个无模式对话框。此宏使用CreateDialoglndirectparam 函数。

### 函数原型

HWND CreateDialoglndirect（HINSTANCE hlnstance,LPCDLGTEMPLATE IPTemplate,HWNDhWndParent,DLGPROC IPDialogFunc）；

### 参数

hlnstance: 标识创建对话框的模块的事例。
IPTemplate: 指向含有一个模板的全局内存对象的指针。CreateDialoglndirect用此模板创建对话框。对话框模板由描述对话框的标题组成，跟随着标题之后的是描述每一个控制的一个或多个数据块，模板可以用标准格式或扩展格式。在标准模板中，标题是由DLGTEMPLATE结构跟随一个变长数组组成。每个控制的数据是由DLGTEMPLATE结构跟随一个变长数组组成。在扩展模板中，标题用DLGTEMPLATEEX格式，且控制定义用DLGITEMPLATEEX格式。CreatDialoglndirect函数返回后，可释放模板，此模板仅用于启动对话框。
hWndParent: 标识拥有对话框的窗口。
IpDialogFunc：指向对话框应用程序的指针，有关更多的对话框应用程序的指针，参见DialogProc。

### 返回值

如果函数调用成功，则返回值为指向对话框的句柄。如果函数调用失败，则返回值为NULL。若想获得更多错误信息，可调用GetLastError函数。
备注：CreateDialOglndirect宏使用CreateWindowEx函数来创建对话框，然后该函数把一个WM_INITDIALOG消息发送到对话框应用程序，如果模板指定DS_SETFONT类型，则函数也把一个WM_SETFONT消息发送到对话框应用程序。如果模板指定WS_VISIBLE类型，则函数显示对话框，最后CreateDialoglndirect返回指向对话框的窗口句柄。
CreateDialoglndirect函数返回之后，可用 ShowWindow函数来显示对话框（如果还没有显示）。用DestroyWindow函数来清除对话框。
在标准对话框模板中，DLGTEMPLATE结构和每一个DLGITEMTEMPLATE结构必须按DWORD边界对齐，遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。
在扩展对话框模板上DLGTEMPLATEEX结构和每一个DLGITEMTEMPLATEEX结构必须按DWORD边界对齐；遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。
所有对话框模板的字符串，例如对话框和按钮的标题，一定是Unicode字符串。使用
MltiByteToWidechar函数产生这些Unicode字符串可以创建在Windows和Windows NT两种系统上工作的代码。
Windows 95和以后版本：系统可支持每个对话框模板最多为255个控制。为把多于255个控制放入对话框，可以在WM_INITDLAIOG消息处理器中创建控制，而不是把它们放入模板中。
Windows CE：lpTempate参数指向的对话框模板中，DLGTEMPLATE结构并不支持所有的类型。
速查:Windows NT：3.1 及以上版本;Windows:95及以上版本；Windows CE：1.0及以上版本；头文件：Winuser.h;库文件：user32.lib;Unicode: 在Windows NT上实现为Unicode和ANSI两种版本。