Использование windows MFC C++. У меня есть стороннее приложение, которое вызывает определяемый пользователем метод в моем производном классе CWinApp. Этот метод вызывается после InitInstance(). Если в этом методе возникает ошибка, например, выбрасывается исключение, которое перехватывается в блоке try/catch, я хотел бы выйти из приложения из блока catch. Каков канонический и правильный способ выхода?
UPDATE:
Серж, я считаю, прав, что в InitInstance() возврат false является правильным способом выхода из приложения. Однако, теперь предположим, что я хочу выйти из обработчика OnInitDialog() производного класса CDialog, как это правильно сделать.
UPDATE 2
Для меня лучшим способом выхода из немодального производного класса CDialog оказался вызов PostMessage(WM_CLOSE). Все другие методы завершения работы, которые я пробовал, при определенных обстоятельствах вызывали исключения.
Вот пример того, как я его использую:
BOOL SomeDialog::OnInitDialog()
{
CDialog::OnInitDialog();
::OleInitialize(nullptr);
try
{
// ...load settings file here
}
catch(...)
{
PostMessage(WM_CLOSE);
return TRUE;
}
// return TRUE unless you set the focus to a control
return TRUE;
}