DialogBoxIndirect
The DialogBoxIndirect
macro creates a modal dialog box from a dialog box template in memory. DialogBoxIndirect
does not return control until the specified callback function terminates the
modal dialog box by calling the EndDialog
int DialogBoxIndirect(
HINSTANCE hInstance, |
// handle to
application instance |
LPDLGTEMPLATE lpTemplate, |
// identifies
dialog box template |
HWND hWndParent, |
// handle to owner
window |
DLGPROC lpDialogFunc |
// pointer to
dialog box procedure |
); |
|
Parameters
hInstance
Identifies
the instance of the module that creates the dialog box.
lpTemplate
Pointer to a
global memory object containing a template that DialogBoxIndirect uses
to create the dialog box. A dialog box template consists of a header that
describes the dialog box, followed by one or more additional blocks of data
that describe each of the controls in the dialog box. The template can use
either the standard format or the extended format.
In a standard
template for a dialog box, the header is a DLGTEMPLATE
In an
extended template for a dialog box, the header uses the DLGTEMPLATEEX
hWndParent
Identifies
the window that owns the dialog box.
lpDialogFunc
Pointer to
the dialog box procedure. For more information about the dialog box procedure,
see DialogProc
Return Values
If the
function succeeds, the return value is the nResult parameter specified
in the call to the EndDialog
If the
function fails, the return value is -1.
Remarks
The DialogBoxIndirect
macro uses the CreateWindowEx
When the
dialog box procedure calls the EndDialog function, DialogBoxIndirect
destroys the dialog box, ends the message loop, enables the owner window (if
previously enabled), and returns the nResult parameter specified by the
dialog box procedure when it called EndDialog.
In a standard
dialog box template, the DLGTEMPLATE structure and each of the DLGITEMTEMPLATE
structures must be aligned on DWORD boundaries. The creation data array
that follows a DLGITEMTEMPLATE structure must also be aligned on a DWORD
boundary. All of the other variable-length arrays in the template must must be
aligned on WORD boundaries.
In an
extended dialog box template, the DLGTEMPLATEEX header and each of the DLGITEMTEMPLATEEX
control definitions must be aligned on DWORD boundaries. The creation
data array, if any, that follows a DLGITEMTEMPLATEEX structure must also
be aligned on a DWORD boundary. All of the other variable-length arrays
in the template must be aligned on WORD boundaries.
All character
strings in the dialog box template, such as titles for the dialog box and
buttons, must be Unicode strings. To create code that works on both Windows NT
and Windows 95, use the MultiByteToWideChar function to generate these
Unicode strings.
Windows
95: The system can support a maximum
of 16,364 window handles.
See Also