How To Create a Modeless CPropertySheet with Standard Buttons

How To Create a Modeless CPropertySheet with Standard Buttons

This article was previously published under Q146916

This article describes how to implement the standard OK, Cancel, and Apply buttons in a modeless
CPropertySheet object.

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章