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 :

[MFC] Plantage au deuxieme DoModal() avec TIMER


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut [MFC] Plantage au deuxieme DoModal() avec TIMER
    Bonjour

    J'ai un projet VC6.0 avec MFC dialog based sur lequel un bouton lance une fenetre de configuration modal puis au retour de cette fenetre de config lance un timer et traite une tache durant une durée X.
    Si je rappuis de nouveau sur le meme bouton l'application plante sans message d'erreur et il faut tuer le processus pour en sortir.
    J'ai le même phénoméne avec une autre fenetre et un autre bouton.
    Par contre si je ne lance pas le timer ( je peux sortir de la fenetre de configuration sans le lancer) je peux la réouvrir sans problème et quitter sans probleme.

    En debuggant, le programme plante en pas a pas dans dlgcore.cpp dans la fonction DoModal a la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	VERIFY(RunModalLoop(dwFlags) == m_nModalResult);
    Je ne comprends pas comment le timer influence le fonctionnement.Dans la fonction du timer il se sert des variables de cette fenetre mais pas de celle de la deuxième et de toute façon celui ci et killer a la fin de la duree X.

    Si vous avez des pistes!!!

    Cordialement

  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,
    on peut voir un peu de code ?
    la boite de dialogue qui est lancée, est un objet local a la fonction ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut
    Bonjour

    La boite de dialogue est un objet globale definie sous les include.
    Code de l'endroit de l'appel sur le bouton.
    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
    21
    22
    23
    24
    25
    26
     
    void CSpace43Dlg::OnButtonIdent() 
    {
    	// TODO: Add your control notification handler code here
     
    nb_ident = 0;
    nbfile = 1;
    baseok = FALSE;
    float k;
    CString str;
    char  *stopstring;
    int mid;
     
    dlg.DoModal();
    start = dlg.Start;
     
     
    if ( start)
    {
    /..../
    	SetTimer(1,temps,NULL);
     
    /..../
    }
    }
    {
    cordialement

  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 bien ce qui me semblait ...
    il ne faut pas réutiliser un objet boite de dialogue .
    ton objet doit être local ou detruit (pointeur) à chaque appel.
    si tu as un probleme de persistance des données (données à reproposer au prochain appel)
    il faudra stocker les valeurs en sortie et les réaffecter en entrée...

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

Discussions similaires

  1. [MFC] Plantage sur LoadFrame
    Par thieum74 dans le forum MFC
    Réponses: 11
    Dernier message: 06/09/2007, 13h15
  2. [MFC] étrange comportement de DoModal()
    Par r0d dans le forum MFC
    Réponses: 11
    Dernier message: 15/06/2005, 19h53
  3. [MFC] Acquisition du port midi avec visual c++ 6.0
    Par spirit_1999 dans le forum MFC
    Réponses: 2
    Dernier message: 16/05/2005, 19h26
  4. Réponses: 4
    Dernier message: 06/05/2005, 13h37
  5. Réponses: 3
    Dernier message: 09/02/2005, 16h43

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