Comment une application MFC peut-elle se terminer d’elle-même ?
-
08-06-2019 - |
Question
Quelle est la manière appropriée pour qu’une application MFC se ferme proprement ?
La solution
Terminer par programmation une application MFC
void ExitMFCApp()
{
// same as double-clicking on main window close box
ASSERT(AfxGetMainWnd() != NULL);
AfxGetMainWnd()->SendMessage(WM_CLOSE);
}
Autres conseils
AfxGetMainWnd()->PostMessage(WM_CLOSE);
À l'appui de la réponse de @Mike, la raison d'utiliser cette méthode est de déclencher la séquence d'arrêt correcte.Particulièrement important pour les applications MDI/SDI car cela donne la possibilité aux documents de demander une sauvegarde avant la sortie ou d'annuler la sortie.
@Matt Noguchi, votre méthode contournera cette séquence (ce qui peut être l'effet souhaité, je suppose, mais vous avez probablement problèmes si vous court-circuitez le démontage normal.
PostQuitMessage( [exit code] );
S'il s'agit d'une application basée sur une boîte de dialogue, vous pouvez le faire en appelant la fonction EndDialog().
S'il s'agit d'une application basée sur SDI/MDI, vous pouvez appeler DestroyWindow.Mais avant cela, vous devrez effectuer le nettoyage vous-même (fermer les documents, désallouer la mémoire et les ressources, détruire les fenêtres supplémentaires créées, etc.).