HOWTO: How to Change Default Button on CPropertySheet (140587)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC), when used with:
    • Microsoft Visual C++, 32-bit Editions 4.0

This article was previously published under Q140587

SUMMARY

When a modal CPropertySheet is created, the default button is the OK button. To change the default to a different button, derive a class from CPropertySheet, override OnInitDialog(), and send a message of DM_SETDEFID to the sheet with the ID of the new button.

MORE INFORMATION

The IDs of the buttons that are created in a modal CPropertySheet are:
   IDOK            - OK button
   IDCANCEL        - Cancel button
   ID_APPLY_NOW    - Apply button
   IDHELP          - Help button
				
Before you can set the focus to a button, the button must exist and be enabled. By default, the Apply button on a modal CPropertySheet is not enabled; it has to be explicitly enabled as shown in the sample code in this article.

If you want a button other than these default buttons to have the default focus, you have to create the button, say IDC_MYBUTTON, and set focus to that button using:
   SendMessage (DM_SETDEFID, IDC_MYBUTTON);
				

Sample Code

// This code sets the Apply button as the default
// CMySheet is derived from CPropertySheet

BOOL CMySheet::OnInitDialog()
{
        CPropertySheet::OnInitDialog();

        // Enable the Apply button
        GetPage(0)->SetModified ();
        // Set the Apply button as the default button
        SendMessage (DM_SETDEFID, ID_APPLY_NOW);

        return TRUE;
}
				

Modification Type:MajorLast Reviewed:11/3/2003
Keywords:kbhowto kbPropSheet KbUIDesign KB140587