For a modeless
CPropertySheet, the Microsoft Foundation Classes (MFC) resize the sheet and hide
the standard buttons in the
CPropertySheet::OnInitDialog member function. To prevent MFC from doing this, perform the
following steps:
| • | Derive a class from CPropertySheet and override the OnInitDialog function. |
| • | Set "m_bModeless" to FALSE and remove the WF_CONTINUEMODAL
style for "m_nFlags". |
| • | Call CPropertySheet::OnInitDialog. |
| • | Set "m_bModeless" back to TRUE and add the style
WF_CONTINUEMODAL to "m_nFlags". |
The following sample code illustrates this technique:
// CMySheet is derived from CpropertySheet.
// Compile options needed: default.
BOOL CMySheet::OnInitDialog()
{
m_bModeless = FALSE;
m_nFlags |= WF_CONTINUEMODAL;
BOOL bResult = CPropertySheet::OnInitDialog();
m_bModeless = TRUE;
m_nFlags &= ~WF_CONTINUEMODAL;
return bResult;
}
In a modeless
CPropertySheet object, the
OK and
Cancel buttons do not close the property sheet when they are clicked.
They do send a WM_COMMAND message with IDOK or IDCANCEL to the sheet, and the
OnOK or
OnCancel functions are called for the page. To close the sheet, you can
implement ON_COMMAND handlers for IDOK and IDCANCEL in the
CPropertySheet and call the
EndDialog function to close the sheet.