IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[C++] - Fermeture d'application MFC


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut [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 !

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    la fermeture d'une application peut se faire par l'envoi d'un message WM_CLOSE à la fenêtre principale (la mainframe).

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    Bonjour,

    Je suis d'accord, mais comment la mainframe sait que je clique sur la croix ? Il faut bien que je récupère le moment, ou l'action de cliquer quelque part pour pouvoir commander la fermeture ?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    c'est un programme que tu as ecris toi même ?
    tu peux toujours chercher les éléments suivants:
    ID_APP_EXIT
    SC_CLOSE
    WM_CLOSE
    ce sont les 3 moyens possibles pour sortir de l'application.
    sinon il se peut que tu provoques une erreur qui ferme aussi sec le programme ....

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut 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);

Discussions similaires

  1. Portage d'une application MFC sous Linux/Unix
    Par farscape dans le forum MFC
    Réponses: 29
    Dernier message: 20/02/2006, 17h47
  2. Gestion d’Un Msgbox dans la Fermeture d’une application
    Par hoummass dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/11/2005, 16h44
  3. Réponses: 1
    Dernier message: 03/05/2005, 09h12
  4. Réponses: 3
    Dernier message: 08/02/2005, 11h34
  5. Application MFC contre pure Win32
    Par albertl dans le forum MFC
    Réponses: 15
    Dernier message: 01/02/2005, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo