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