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 :

Problème de code de sortie d'application


Sujet :

MFC

Vue hybride

ambroise_petitgenet Problème de code de sortie... 18/09/2012, 09h22
TheGzD Salut ! Il faudrait voir... 18/09/2012, 10h40
ambroise_petitgenet Hello, Alors commençons... 18/09/2012, 16h18
ambroise_petitgenet Bonjour Je vais mettre un... 19/09/2012, 13h19
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut Problème de code de sortie d'application
    Bonjour,

    Je suis sur un problème qui ne devrait pas en être un.

    Je n'arrive pas à faire sortir mon application avec un code d'erreur.
    J'utilise les MFC das ExitInstance ma dernière ligne est return 3;
    Quand je teste avec un .bat récupérant le %ERROR_LEVEL% ou quand je débug avec Visual Studio 2005 j'ai le droit à 0 comme code de sortie.

    J'utilise aussi la couche graphique BCGControlBar.

    J'avoue ne plus rien y comprendre. Est ce que quelqu'un à déjà eu ce problème et si oui est ce qu'il a réussi à le corriger.

    Mon code en exemple (mais simplifié)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int CXsUiApp::ExitInstance()
    {
       int iReturn = CWinThread::ExitInstance();
       return iReturn;
    }
     
    LRESULT CMainFrame::OnStartScriptTCL(WPARAM wparam, LPARAM)
    {
       PostQuitMessage(3);
       return 3;
    }
    Merci pour votre temps.

    Ambroise

  2. #2
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Salut !

    Il faudrait voir plus de code pour être sûr ...

    Premièrement es-tu sûr que ton .bat fonctionne correctement ? L'as-tu testé sur un autre programme capable de te produire une valeur autre que 0 ?

    Ensuite si tu es sûr que le .bat est ok, tu devrais essayer d'intercepter le message WM_QUIT et vérifier que le wParam vaut bien 3.

    Si ceci ne t'aide pas il faudra, comme j'ai commencé par te le dire, nous donner plus de grain à moudre.

    Bon courage

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut
    Hello,

    Alors commençons par les réponses simples.
    Oui je l'ai testé avec autre chose que mon .bat Le débugger de visual studio qui me dit
    le programme '[515984] TetrisXPD.exe: Natif' s'est arrêté avec le code 0 (0x0).
    Toujours au débugger j'ai bien 3 dans iReturn. J'ai même réussi à remonter dans les MFC jusqu'a la fonction main. Et dedans il y a
    crtexe.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ( !managedapp )
        exit(mainret);
    et mainret= 3 (vu au débugger).


    Apres pour donner plus de code ... Je ne sais pas .. En fait pendant que je tape ces lignes mon collègue est en train de trouver une piste.

    Cela viendrait de notre interpréteur TCL qui est lancé en thread. nous avons setté la callback d'exit de tcl pour pouvoir arrêter notre code proprement.

    pour arrêter le script en cours on tue le thread avec terminateThread. Et la je n'ai pas la compréhension, mais le fait de ne pas enlever la callback fait que lors de la sortie de l'application on a toujours 0.

    Personnellement je n'y comprends rien.


    En tout cas merci pour ton temps passé.

    Ambroise

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut
    Bonjour

    Je vais mettre un complément d'information sur mon problème qui est maintenant résolu.

    Notre application embarque un interpréteur TCL.
    Pour fermer correctement notre application si le mot clef TCL exit est appelé nous avons utilisés des exitHandler qui sont mis en place à chaque lancement de script et enlever à la fin d’exécution.

    Dés qu'un script est lancé en thread et que le mot clef exit est appelé l'application se ferme (logique) mais les exitHandler sont toujours présent car le script s'arrête brutalement. Et seulement dans ce cas le code de retour de notre application est toujours 0.

    Si avant la fermeture nous désactivons le exitHandler tout remarche correctement.

    Ce qui nous a mis la puce à l'oreille et que si un objet static dans son destructeur fait un exit(0); par exemple le code de retour de l'application est toujours 0 (en tous cas avec le programme de test que j'ai fait)

    Merci pour ceux qui se sont cassé la tête dessus.

    Ambroise

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2014, 12h44
  2. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 22h50
  3. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00
  4. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 16h25
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02

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