Creating a Modal Dialog Box
You create a modal dialog box by using the
DialogBox function. You must specify the identifier or name of a dialog box template
resource and the address of the dialog box procedure. The
DialogBox function loads the template, displays the dialog box, and processes all user
input until the user closes the dialog box.
In the following example, the application displays a modal dialog box when the
user chooses a Delete Item command from an application menu. The dialog box
contains an edit control (in which the user enters the name of an item) and OK
and Cancel buttons. The control identifiers for these controls are ID_ITEMNAME,
IDOK, and IDCANCEL, respectively.
The first part of the example consists of the statements that create the modal
dialog box. These statements, in the window procedure for the application's
main window, create the dialog box when the system receives a
WM_COMMAND message having the IDM_DELETEITEM command identifier. The second part of the
example is the dialog box procedure, which retrieves the contents of the edit
control and closes the dialog box upon receiving a WM_COMMAND message.
The following statements create the modal dialog box. The dialog box template
is a resource in the application's executable file and has the resource
identifier DLG_DELETEITEM:
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDM_DELETEITEM:
if (DialogBox(hinst,
MAKEINTRESOURCE(DLG_DELETEITEM),
hwnd, (DLGPROC)DeleteItemProc)==IDOK)
.
. // Complete the command; szItemName
. // contains the name of the item to
. // delete.
.
else
.
. // Cancel the command.
.
break;
}
return 0L;
In this example, the application identifies its main window as the owner
window for the dialog box. When Windows initially displays the dialog box, its
position is relative to the upper left corner of the owner window's client area. The
application uses the return value from
DialogBox to determine whether to proceed with the command or cancel it. The following
statements define the dialog box procedure.
char szItemName[80]; // receives name of item to delete.
BOOL CALLBACK DeleteItemProc(hwndDlg, message, wParam, lParam)
HWND hwndDlg;
UINT message;
WPARAM wParam;
LPARAM lParam;
{
switch (message) {
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
if (!GetDlgItemText(hwndDlg, ID_ITEMNAME,
szItemName, 80))
*szItemName=0;
// Fall through.
case IDCANCEL:
EndDialog(hwndDlg, wParam);
return TRUE;
}
}
return FALSE;
}
In this example, the procedure uses
GetDlgItemText to retrieve the current text from the edit control identified by ID_ITEMNAME.
The procedure then calls the
EndDialog function to set the dialog box's return value to either IDOK or IDCANCEL,
depending on the message received, and to begin the process of closing the dialog
box. The IDOK and IDCANCEL identifiers correspond to the OK and Cancel buttons.
After the procedure calls
EndDialog, Windows sends additional messages to the procedure to destroy the dialog box
and returns the dialog box's return value back to the function that created
the dialog box.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database