Какой правильный способ программного выхода из приложения MFC?

Использование 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;
}
19
задан User 13 December 2011 в 22:09
поделиться