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

C++/CLI Discussion :

Fermeture d'une application


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut Fermeture d'une application
    Bonjour,

    J'ai écrit un programme qui doit exécuter quelques actions quand on l'arrête.

    Cela marche si on fait "Fichier", puis "Quitter".

    Mais je ne trouve pas comment intercepter la croix pour faire la même chose si on clique sur la croix ...

    Si quelqu'un peut me renseigner ce serait sympa.

    Bonne journée
    Jean-Louis.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Entre autres, tu peux traiter l'événement FormClosing. Mais il doit y avoir d'autres événements un peu plus tôt qui seraient peut-être plus appropriés...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Entre autres, tu peux traiter l'événement FormClosing. Mais il doit y avoir d'autres événements un peu plus tôt qui seraient peut-être plus appropriés...

    Merci Médinoc,

    J'ai déjà essayé, cela ne marche pas car j'envoie des ordres sur un port COM pour arrêter des appareils et j'utilise un timer pour séquencer les ordres et la séquence ne marche pas alors que cela fonctionne très bien en faisant "Fichier" "Quitter". J'ai l'impression que le timer se fait tuer avant d'avoir commencer à travailler.

    Bonne journée

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 38
    Par défaut
    Tu le fais bien avant le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( components )
       delete components ;
    de la fonction "~Form1()".

    Dès que le soft va passer sur "delete components", plus rien ne fonctionnera. Donc il faut tout finir avant, quite à mettre un "while( pasfini )" juste avant le "delete components".

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    De plus, le if ne sert à rien: delete sur nullptr est garanti ne rien faire par le standard.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par sepullayer Voir le message
    Tu le fais bien avant le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( components )
       delete components ;
    de la fonction "~Form1()".

    Dès que le soft va passer sur "delete components", plus rien ne fonctionnera. Donc il faut tout finir avant, quite à mettre un "while( pasfini )" juste avant le "delete components".

    Ben oui, je le mets bien avant. On dirait qu'il se passe des choses, mais je ne sais pas quoi et en tous cas mes trucs ne s'arrêtent pas

    Bonne soirée

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 38
    Par défaut
    Et quand tu mets des points d'arrêts, ton soft passe aux mêmes endroits en cliquant sur le croix ?


    Essaye de mettre le contenu de ta fonction QuitterClicEvent(...), dans une fonction FermerMesCOM(), et de mettre Form1->Close(); dans QuitterClicEvent(...), genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // Destructeur de ta Form
    ~Form1()
    {
      FermerMesCOM(); // Ta fonction, qui doit être bloquante
     
      if( components )
        delete components;
    }
     
    // Fonction bloquante qui communique avec tes appareils
    void FermerMesCOM( void )
    {
      ...
    }
     
    // L'événement généré par Fichier->Quitter
    void QuitterClicEvent( ... ) // Les ... c'est pas significatif hein.
    {
      Form1->Close();
    }
    Met des points d'arrêt de partout, regarde ce qu'il se passe. Mais si ta fonction FermerMesCOM est vraiment bloquante il n'y a pas de raison que ça ne fonctionne pas.
    Tu peux aussi vérifier que tu n'as pas déjà arrêté ton timer ou détruis je ne sais quoi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fermeture d'une application éxterne
    Par Matt2094 dans le forum Langage
    Réponses: 8
    Dernier message: 22/03/2006, 15h11
  2. Forcer la fermeture d'une application
    Par Bissada dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2005, 21h42
  3. fermeture d'une application après un temp d'inactivité?
    Par sitdown dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 24/08/2005, 15h44
  4. Détection de la fermeture d'une application
    Par vanitom dans le forum MFC
    Réponses: 6
    Dernier message: 19/08/2005, 18h11
  5. [Event]Annuler la fermeture d'une application
    Par willowII dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 16/11/2004, 09h28

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