EndDialog function (Windows)

Switch View :
ScriptFree
EndDialog function

Applies to: desktop apps only

Destroys a modal dialog box, causing the system to end any processing for the dialog box.

Syntax

BOOL WINAPI EndDialog(
  __in  HWND hDlg,
  __in  INT_PTR nResult
);

Parameters

hDlg [in]

Type: HWND

A handle to the dialog box to be destroyed.

nResult [in]

Type: INT_PTR

The value to be returned to the application from the function that created the dialog box.

Return value

Type: BOOL

If the function succeeds, the return value is nonzero.

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

Remarks

Dialog boxes created by the DialogBox, DialogBoxParam, DialogBoxIndirect, and DialogBoxIndirectParam functions must be destroyed using the EndDialog function. An application calls EndDialog from within the dialog box procedure; the function must not be used for any other purpose.

A dialog box procedure can call EndDialog at any time, even during the processing of the WM_INITDIALOG message. If your application calls the function while WM_INITDIALOG is being processed, the dialog box is destroyed before it is shown and before the input focus is set.

EndDialog does not destroy the dialog box immediately. Instead, it sets a flag and allows the dialog box procedure to return control to the system. The system checks the flag before attempting to retrieve the next message from the application queue. If the flag is set, the system ends the message loop, destroys the dialog box, and uses the value in nResult as the return value from the function that created the dialog box.

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

See also

Reference
DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
WM_INITDIALOG
Conceptual
Dialog Boxes

 

 

Send comments about this topic to Microsoft

Build date: 2/10/2012

Community Content

dmex
C# syntax
[DllImport("user32.dll", ExactSpelling=true)]
public static extern bool EndDialog(HandleRef hWnd, IntPtr result);

dmex
vb.net syntax
<DllImport("user32.dll", ExactSpelling:=True)> Public Shared Function EndDialog(ByVal hWnd As HandleRef, ByVal result As IntPtr) As Boolean
End Function

Dwayne Robinson
Calling EndDialog on modeless dialogs
For clarity, EndDialog should not be called on a dialog created via CreateDialog, because while the call will appear to have succeeded, it really only hides the window (the window handle still exists). Instead, explicitly call DestroyWindow.