CreateDialogParam function (Windows)

Switch View :
ScriptFree
CreateDialogParam function

Applies to: desktop apps only

Creates a modeless dialog box from a dialog box template resource. Before displaying the dialog box, the function passes an application-defined value to the dialog box procedure as the lParam parameter of the WM_INITDIALOG message. An application can use this value to initialize dialog box controls.

Syntax

HWND WINAPI CreateDialogParam(
  __in_opt  HINSTANCE hInstance,
  __in      LPCTSTR lpTemplateName,
  __in_opt  HWND hWndParent,
  __in_opt  DLGPROC lpDialogFunc,
  __in      LPARAM dwInitParam
);

Parameters

hInstance [in, optional]

Type: HINSTANCE

A handle to the module whose executable file contains the dialog box template.

lpTemplateName [in]

Type: LPCTSTR

The dialog box template. This parameter is either the pointer to a null-terminated character string that specifies the name of the dialog box template or an integer value that specifies the resource identifier of the dialog box template. If the parameter specifies a resource identifier, its high-order word must be zero and low-order word must contain the identifier. You can use the MAKEINTRESOURCE macro to create this value.

hWndParent [in, optional]

Type: HWND

A handle to the window that owns the dialog box.

lpDialogFunc [in, optional]

Type: DLGPROC

A pointer to the dialog box procedure. For more information about the dialog box procedure, see DialogProc.

dwInitParam [in]

Type: LPARAM

The value to be passed to the dialog box procedure in the lParam parameter in the WM_INITDIALOG message.

Return value

Type: HWND

If the function succeeds, the return value is the window handle to the dialog box.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Remarks

The CreateDialogParam function uses the CreateWindowEx function to create the dialog box. CreateDialogParam then sends a WM_INITDIALOG message (and a WM_SETFONT message if the template specifies the DS_SETFONT or DS_SHELLFONT style) to the dialog box procedure. The function displays the dialog box if the template specifies the WS_VISIBLE style. Finally, CreateDialogParam returns the window handle of the dialog box.

After CreateDialogParam returns, the application displays the dialog box (if it is not already displayed) using the ShowWindow function. The application destroys the dialog box by using the DestroyWindow function. To support keyboard navigation and other dialog box functionality, the message loop for the dialog box must call the IsDialogMessage function.

Requirements

Minimum supported client

Windows 2000 Professional

Minimum supported server

Windows 2000 Server

Header

Winuser.h (include Windows.h)

Library

User32.lib

DLL

User32.dll

Unicode and ANSI names

CreateDialogParamW (Unicode) and CreateDialogParamA (ANSI)

See also

Reference
CreateDialog
CreateDialogIndirect
CreateDialogIndirectParam
CreateWindowEx
DestroyWindow
DialogProc
IsDialogMessage
MAKEINTRESOURCE
ShowWindow
WM_INITDIALOG
WM_SETFONT
Conceptual
Dialog Boxes

 

 

Send comments about this topic to Microsoft

Build date: 2/10/2012

Community Content

Henrik Haftmann
More remarks
This function calls CreateWindowEx() once for the dialog and then for each child (control window) defined in the template. Internally it loads the resource into memory, calls CreateDialogIndirectParam(), and may unload the resource - it is not needed later. Therefore, the connection to the template is lost while the dialog is running - you cannot revert changed strings or similar. The internal flow is roughly:
HRSRC r=FindResource(hInstance,lpTemplateName,RT_DIALOG);
HGLOBAL g=LoadResource(hInstance,r);
return CreateDialogIndirectParam(hInstance,LockResource(g),hWndParent,lpDialogFunc,dwInitParam);
This code snippet gives you a clue how to programmatically show a dialog with specific language: Replace FindResource() by FindResourceEx().
See also: DialogBox(), DialogBoxParam().