Как правильно закрыть приложение MFC?





AfxGetMainWnd()->PostMessage(WM_CLOSE);
В поддержку ответа @Mike причина использования этого метода состоит в том, чтобы вызвать правильную последовательность выключения. Это особенно важно для приложений MDI / SDI, поскольку это дает возможность документам запрашивать сохранение перед выходом или отмену выхода.
@Matt Noguchi, ваш метод обойдет эту последовательность (что, я полагаю, может быть желаемым эффектом, но у вас, вероятно, есть проблемы, если вы замыкаете нормальный разрыв.
PostQuitMessage( [exit code] );
Если это диалоговое приложение, вы можете сделать это, вызвав функцию EndDialog ().
Если это приложение на основе SDI / MDI, вы можете вызвать DestroyWindow. Но перед этим вам нужно будет выполнить очистку самостоятельно (закрыть документы, освободить память и ресурсы, уничтожить все созданные дополнительные окна и т. д.).
Программное завершение приложения MFC
void ExitMFCApp()
{
// same as double-clicking on main window close box
ASSERT(AfxGetMainWnd() != NULL);
AfxGetMainWnd()->SendMessage(WM_CLOSE);
}