INF: Changing/Setting the Default Push Button in a Dialog Box

ID Number: Q67655

3.00

WINDOWS

Summary:

The default push button in a dialog box is defined to be the button

that is pressed when the user presses the ENTER key, provided that the

input focus is not on another button in the dialog box. This button is

visually distinguished from other buttons by a thick dark border. This

article describes how to change the default push button.

More Information:

To change the default push button, perform the following three steps:

1. Send the BM_SETSTYLE message to the current default push button to

change its border to that of a regular push button.

2. Send a DM_SETDEFID to the dialog box to change the ID of the

default push button.

3. Send the BM_SETSTYLE message to the new default push button to

change its border to that of a default push button.

The following is sample code that performs the three steps:

// Reset the current default push button to a regular button.

SendDlgItemMessage(hDlg, <ID of current default push button>,

BM_SETSTYLE, BS_PUSHBUTTON, (LONG)TRUE);

// Update the default push button's control ID.

SendMessage(hDlg, DM_SETDEFID, <ID of new default push button>,

0L);

// Set the new style.

SendDlgItemMessage(hDlg, <ID of new default push button>,

BM_SETSTYLE, BS_DEFPUSHBUTTON, (LONG)TRUE);

Note, however, that ANY push button that has the input focus will have

a dark border. A default push button will retain this dark border even

when the input focus is transferred to another control in the dialog

box, provided the new control is not another push button.

For example, if the input focus is on an edit control, check box,

radio button, or any control other than a push button, and the ENTER

key is pressed, Windows sends a WM_COMMAND message to the dialog box

procedure with the wParam set to the control ID of the default push

button.

Additional reference words: 3.00 MICS3 R5.7