CPropertSheetImpl и обработка исключений
От: vita5555  
Дата: 27.06.11 07:45
Оценка:
Хочется перехватывать и обрабатывать исключения, брошенные из обработчиков страниу (например, OnInitDialog), в блоке try-catch верхнего уровня приложения. В коде ниже показан блок catch, где предполагается обработка исключений.

try {

CMyPropertySheet sheet;
sheet.DoModal();

} catch (...) {
// Здесь должны обрабатываться исключения
}

Однако, если обработчик страницы, например OnInitDialog, бросает исключение, то воникает assert (в debug вурсии) после вызова диструкторов окон. Здесь atl код, где возникает assert:

virtual ~CWindowImplRoot()
{
#ifdef _DEBUG
if(m_hWnd != NULL) // should be cleared in WindowProc
{
ATLTRACE(atlTraceWindowing, 0, _T("ERROR — Object deleted before window was destroyed\n"));
ATLASSERT(FALSE);
}
#endif //_DEBUG
}

Я использую WTL. Класс CMyPropertySheet унаследован от CPropertySheetImpl. Вызов EndDialog(m_hWnd, IDCANCEL) в деструкторе CMyPropertySheet не меняет ситуацию.

Подскажите, пожалуйста, как добиться обработки исключений, брошенных со страниц property sheet на верхнем уровне.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.