Как создать немодальный 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. |