Как создать немодальный CPropertySheet со
стандартными кнопками
В данной статье расказывается как включить
стандартные кнопки OK, Cancel, и Apply в
немодальный объект CPropertySheet.
Для немодального CPropertySheet, Microsoft Foundation Classes
(MFC) изменяет размер окошка свойств и скрывает
стандартные кнопки в функции CPropertySheet::OnInitDialog.
Чтобы заставить MFC не делать этого, выполните
следующие шаги:
- Наследуйте класс от CPropertySheet и
переопределите функцию OnInitDialog.
- Установите "m_bModeless" в FALSE и удалите стиль
WF_CONTINUEMODAL в "m_nFlags".
- Вызовите CPropertySheet::OnInitDialog.
- Установите "m_bModeless" обратно в TRUE и добавьте
стиль WF_CONTINUEMODAL в "m_nFlags".
Следующий пример иллюстрирует данный способ:
// CMySheet наследован от CpropertySheet.
// Необходимые опции для компиляции: поумолчанию.
BOOL CMySheet::OnInitDialog()
{
m_bModeless = FALSE;
m_nFlags |= WF_CONTINUEMODAL;
BOOL bResult = CPropertySheet::OnInitDialog();
m_bModeless = TRUE;
m_nFlags &= ~WF_CONTINUEMODAL;
return bResult;
}
В немодальном объекте CPropertySheet, кнопки OK
и Cancel не закрывают property sheet если по ним
кликнуть. Они отправляют сообщение WM_COMMAND с IDOK или
IDCANCEL в окошко свойств и вызывают функции OnOK
или OnCancel для страницы. Для того, чтобы можно
было закрыть окошко свойств, необходимо в CPropertySheet
добавить обработчики ON_COMMAND для IDOK и IDCANCEL и
вызвать функцию EndDialog.
|