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.
本文介绍如何在模式对话框CPropertySheet中实现标准的OK、Cancel和Apply按钮功能。通过继承CPropertySheet并覆盖OnInitDialog函数,可以阻止Microsoft Foundation Classes (MFC)隐藏这些按钮。文中提供了一个示例代码,展示了如何使这些按钮在点击时不关闭属性页,而是发送相应的消息。
1843

被折叠的 条评论
为什么被折叠?



