[C++] - Fermeture d'application MFC
Bonjour,
Je sais que la FAQ existe et je l'ai consulté. Elle ne résout pas mon problème qui à l'air simple en apparence.
Si on créé par exemple un application MFC tout simple, qu'on la compile et que l'on démarre la solution. on s'apperçoit que l'on peut fermer la fenêtre de dialogue avec la croix.
Mais dans un projet que j'ai, il m'arrive de ne pas voir la fermer en cliquant sur la croix. donc je ne comprend pas d'où vient l'erreur parce que la fermeture avec la croix n'est pas explicite dans le code...
Si des personnes pouvais m'aider, je les remercie !
Contrôler la fermeture d’une application MFC
Le moyen le plus simple de contrôler la fermeture d’une application MFC est de gérer le message WM_CLOSE
void CMainFrame::OnClose()
{
if (!GetTheApp()->PromptToSaveData())
return;
CFrameWnd::OnClose();
}
où CMainFrame est votre classe de fenêtre principale, GetTheApp() un pointeur sur votre objet application et PromptToSaveData() est par exemple une fonction de votre classe CMyApp retournant TRUE si l’application peut être fermée.
• Vous pouvez aussi surcharger la fonction virtuelle
virtual BOOL SaveAllModified();
de la classe CWinApp.
Un exemple de surcharge est le suivant :
BOOL CMyApp::SaveAllModified()
{
if (PromptToSaveData())
return CWinApp::SaveAllModified();
else
return FALSE;
}
J’ai essayé de gérer le message ID_APP_EXIT mais hélas il n’est pas déclenché dans ma classe de fenêtre principale et ni même dans aucune de mes autres classes de fenêtre.
J’ai aussi essayé avec WM_QUERYENDSESSION mais sans succès.
Cependant, si vous voulez plutôt fermer votre application de n’importe où dans votre projet, il vous suffit d’appeler la fonction
PostQuitMessage(0);