标题：DialogBoxParam
定义
函数功能：该函数根据对话框模板资源创建一个模态的对话框。在显示对话框之前，函数把一个应用程序定义的值作为WM_INITDIALOG消息的IParam参数传到对话框过程,应用程序可用此值来初始化对话框控制。
函数原型：int DialogBoxParam（HINSTANCE hlnstance，LPCTSTR IpTemplateName,HWND hWndParent， DLGPROC IPDialogFunc,LPARAM dwlnitParam）；
参数：
hlnstance：标识一个模块的事例，该模块的可执行文件含有对话框模板。
IpTemplateName：标识对话框模板。此参数可以指向一个以NULL结尾的字符串的指针,该字符串指定对话框模扳名，或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符，则它的高位字一定为零，且低位字一定含有标识符。一定用MAKEINTRESOURCE宏指令创建此值。
hWndParent：指定拥有对话框的窗口。
IpDirlogFunc：指向对话框过程的指针。有关更详细的关于对话框过程的信息，请参见DialogProc。
dwlnitaram：指定传递到WM_INITDIALOG消息的IParam参数中的对话框过程的值。
返回值：如果函数调用成功则返回值为在对函数EndDialog的调用中的nResult参数，该EndDialog函数用于中止对话框。如果函数调用失败，则返回值为C1。若想获得错误信息，请调用GetLastError函数。
备注：DialogBoxParam函数用CreateWindowEx函数创建对话框。然后把一个WM_INITDIALOGG消息传递到对话框过程。如果模板指定DS_SETFONT类型，DialogBoxParam函数把一个WM_SETFONT消息传递到对话框过程。(不管模板是否指定WS_VISIBLE类型）,函数显示对话框使拥有窗口失效,且为对话框启动它本身的消息循环来检取和传递消息。当对话框应用程序调用EndDialog函数时，DialogBoxParam函数清除对话框中止消息循环；使拥有窗口生效（如果以前有效），且返回函数EndDialog的调用中的nReSUlt参数。Windows 95和以后版本：系统可支持每个对话框模板最多为255个控制。为把多于255个控制放入对话框，可以在WM_INITDLALOG消息处理器中创建控制，而不是把它们放入模板中。Windows CE：IPTemplateName参数指向的对话框模板中DLGTEMPLATE结构并不支持所有的类型。
速查：Windows NT：3.1及以上版本：Windows：95及以上版本；Windows CE：1.0及以上版本；头文件：Winuser.h;库文件：USer32.lib：Unicode：在Windows NT上实现为Unicode和ANSI两种版本。
win32编程实例
FirstWindow.cpp 
#include "Windows.h"
#include "tchar.h"
TCHAR ClassName[] = _T("DLGCLASS");
TCHAR MenuName[] = _T("MyMenu");
TCHAR DlgName[] = _T("MyDialog");
TCHAR AppName[] = _T("Our First Dialog Box");
TCHAR TestString[] = _T("Wow! I'm in an edit box now");
TCHAR buffer[512];
HINSTANCE g_hInstance;
#define IDC_EDIT        3000
#define IDC_BUTTON      3001
#define IDC_EXIT        3002
#define IDM_GETTEXT     32000
#define IDM_CLEAR       32001
#define IDM_EXIT        32002
LRESULT CALLBACK ProcWinMain(   HWND hWnd, 
UINT Msg, 
WPARAM wParam, 
LPARAM lParam 
)
{
switch(Msg)
{
case WM_CREATE:
{
SetDlgItemText(hWnd,IDC_EDIT,AppName);
}
break;
case WM_COMMAND:
{
if(lParam == 0)
{
switch(LOWORD(wParam))
{
case IDM_GETTEXT:
GetDlgItemText(hWnd,IDC_EDIT,buffer,512);
MessageBox(NULL,buffer,AppName,MB_OK);
break;
case IDM_CLEAR:
SetDlgItemText(hWnd,IDC_EDIT,NULL);
break;
default:
DestroyWindow(hWnd);
break;
}
}
else
{
if(HIWORD(wParam) == BN_CLICKED)
{
switch(LOWORD(wParam))
{
case IDC_BUTTON:
SetDlgItemText(hWnd,IDC_EDIT,TestString);
break;
case IDC_EXIT:
SendMessage(hWnd,WM_COMMAND,IDM_EXIT,0);
break;
}
}
}
}
break;
case WM_DESTROY:
{
PostQuitMessage(NULL);
}
break;
default:
return DefWindowProc(hWnd, Msg, wParam, lParam ); 
}
return 0;
}
int WINAPI WinMain(     HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HICON hIcon;
HCURSOR hCursor;
MSG stMsg;
WNDCLASSEX stdWndClass;
HWND hDlg;
g_hInstance = hInstance;
RtlZeroMemory(&stdWndClass, sizeof(stdWndClass));
stdWndClass.hCursor = LoadCursor(0,IDC_ARROW);
stdWndClass.cbSize = sizeof(stdWndClass);
stdWndClass.style = CS_HREDRAW|CS_VREDRAW;
stdWndClass.lpfnWndProc = ProcWinMain;
stdWndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
stdWndClass.lpszClassName = ClassName;
stdWndClass.hInstance = hInstance;
stdWndClass.lpszMenuName = MenuName;
stdWndClass.cbClsExtra = NULL;
stdWndClass.cbWndExtra = DLGWINDOWEXTRA;
hIcon = LoadIcon(NULL,IDI_APPLICATION);
stdWndClass.hIcon = hIcon;
stdWndClass.hIconSm = hIcon;
hCursor = LoadCursor(NULL,IDC_ARROW);
stdWndClass.hCursor = hCursor;
RegisterClassEx(&stdWndClass);
hDlg = CreateDialogParam(hInstance,DlgName,NULL,NULL,NULL);
if(!hDlg)
return 0;
SetFocus(GetDlgItem(hDlg,IDC_EDIT));
ShowWindow(hDlg,SW_SHOWNORMAL);
UpdateWindow(hDlg);
while(GetMessage(&stMsg,NULL,0,0))
{
if(!IsDialogMessage(hDlg,&stMsg))
{
TranslateMessage(&stMsg);
DispatchMessage(&stMsg);
}
}
return stMsg.wParam;
}
rsrc.rc 
//#include "resource.h" 
#include <windows.h>
#define IDC_EDIT                                       3000 
#define IDC_BUTTON                                3001 
#define IDC_EXIT                                       3002
#define IDM_GETTEXT                             32000 
#define IDM_CLEAR                                  32001 
#define IDM_EXIT                                      32003
MyDialog DIALOG 10, 10, 205, 60 
STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | 
WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK 
CAPTION "Our First Dialog Box" 
CLASS "DLGCLASS" 
BEGIN 
EDITTEXT         IDC_EDIT,   15,17,111,13, ES_AUTOHSCROLL | ES_LEFT 
DEFPUSHBUTTON   "Say Hello", IDC_BUTTON,    141,10,52,13 
PUSHBUTTON      "E&xit", IDC_EXIT, 141,26,52,13, WS_GROUP 
END
MyMenu MENU 
BEGIN 
POPUP "Test Controls" 
BEGIN 
MENUITEM "Get Text", IDM_GETTEXT 
MENUITEM "Clear Text", IDM_CLEAR 
MENUITEM "", , 0x0800 /*MFT_SEPARATOR*/ 
MENUITEM "E&xit", IDM_EXIT 
END 
END