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 fermeture boite de dialogue


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut problème fermeture boite de dialogue
    bonjour,

    J'ai une exception lorsque je ferme ma boite de dialogue. La boite de dialogue est toute simple. Elle utilise un static text et un gif animé. J'ai vérifié que cela ne venait pas de mon gif animé.

    voici le code pour afficher ma boite à l'écran:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    m_toto = new toto_dlg();
    m_toto->DoModal();
    dans cette classe, je lance mon gif et modifie la valeur du static text dans la methode OnInitDialog():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    BOOL toto_dlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    	m_animate.Load("../animation.gif");
    	m_animate.ShowWindow(SW_SHOWNORMAL);
    	m_animate.Start();
    	this->SetWindowTextA(_T("test"));
     
     
    	return TRUE;
    }


    J'ai egalement une méthode dans ma classe qui permet de ne pas fermer la fenêtre si l'on tape sur les touche entrée ou echap:

    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
     
     
    BOOL toto_dlg::OnCommand(WPARAM wParam, LPARAM lParam)
    {
       CWnd *pWnd = GetFocus();
        switch(wParam)
        {
          case IDOK: if(pWnd!=GetDlgItem(IDOK))
             {
                  return FALSE;
             }
             break;
     
          case IDCANCEL:if(pWnd!=GetDlgItem(IDCANCEL))
    		{
    			return FALSE;
    		}
    		break;
        }
     
    return CDialog::OnCommand(wParam, lParam);
     
    }
    et enfin ma méthode de fermeture de ma fenêtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void ARCInit_dlg::OnClose()
    {
    	m_animate.Stop();
    	CDialog:OnOK();
    }
    J'ai essayé avec les méthode OnOK() et OnCancel() mais toujours pareil.

    Pour appeler cette méthode je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    m_toto->OnClose();
    Après cela, ma fenêtre se ferme correctement mais j'ai une exception.


    Quelqu'un aurait il une idée pour resoudre mon problème?

    Merci.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void ARCInit_dlg::OnClose()
    {
    	m_animate.Stop();
    	EndDialog(<code de retour de ton dialogue>);
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void ARCInit_dlg::OnClose()
    {
    	m_animate.Stop();
    	EndDialog(<code de retour de ton dialogue>);
    }

    Merci, je vais tester cela. Mais pourquoi la méthode OnClose() de CDialog me renoi une exception?

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par totoscill Voir le message
    Merci, je vais tester cela. Mais pourquoi la méthode OnClose() de CDialog me renoi une exception?
    Je pense (mais je ne suis pas sûr) que OnClose() doit uniquement être appelée par le framework MFC mais pas par toi (par contre, tu as le droit de la surcharger)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Je pense (mais je ne suis pas sûr) que OnClose() doit uniquement être appelée par le framework MFC mais pas par toi (par contre, tu as le droit de la surcharger)

    OK, il en est de même pour OnCancel() et OnOk()?

  6. #6
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Citation Envoyé par totoscill Voir le message
    OK, il en est de même pour OnCancel() et OnOk()?
    Non. Normalement, on peut appeler ces méthodes sans que cela ne cause de problème.

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut
    Toujours le même probleme avec EndMessage. Je ne comprend plus du tout.

    Je lance ma fenetre avec un DoModal(), elle se lance très bien mais dès que je veux l'arrêter, j'ai une exception.

  8. #8
    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 la ligne de code qui cause l'exception ?
    Remontes la pile des appels jusqu'à ton code pour voir la portion de code responsable.
    il est possible que le plantage vienne de ton objet animate qui ne se ferme pas correctement ..

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Tu crée ton objet dialog avec new
    je ne vois pas la nécessité
    Tu devrais donc appeler un delete après la fermeture de ta boite de dialogue

  10. #10
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Citation Envoyé par David Fouejio Voir le message
    Tu crée ton objet dialog avec new
    je ne vois pas la nécessité
    Tu devrais donc appeler un delete après la fermeture de ta boite de dialogue
    Certes, mais à part s'il détruit son pointeur avant la fermeture de sa boîte de dialogue, ce n'est sans doute pas la cause de l'exception.

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Il faut donc qu'il procède comme farscape l'a dit

  12. #12
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Citation Envoyé par totoscill
    J'ai egalement une méthode dans ma classe qui permet de ne pas fermer la fenêtre si l'on tape sur les touche entrée ou echap:
    Pourquoi donc

    Essaie de fermer ton gif dans OnCancel() et/ou OnOk() que tu surcharges et de supprimer ton OnCommand(). Et de faire aussi un delete sur ta boite.
    Le OnClose() est bon pour les frames.

  13. #13
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Citation Envoyé par Gabrielly Voir le message
    Essaie de fermer ton gif dans OnCancel() et/ou OnOk() que tu surcharges
    Je chipote : il ne s'agit pas de surcharge mais de redéfinition...

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par défaut
    Désolée de ne pas avoir donnée de nouvelle.
    J'étais sur un autre projet.
    Je recommence à travailler dessus aujourd hui.
    Je vous tiens au courant.

  15. #15
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par PetitPapaNoël Voir le message
    Je chipote : il ne s'agit pas de surcharge mais de redéfinition...
    spécialisation

  16. #16
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    spécialisation
    La spécialisation se fait par redéfinition.
    Mais de toute façon, la redéfinition ne sert qu'à la spécialisation, non ?

Discussions similaires

  1. Probleme fermeture boite de dialogue
    Par dark0502 dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 09/04/2013, 09h43
  2. Problème avec boite de dialogue enregistrer sous
    Par biddal dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/08/2011, 10h58
  3. Evènement ouverture/fermeture boite de dialogue
    Par daronmaster dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/04/2009, 12h04
  4. Problème avec boite de dialogue pour fermer JFrame
    Par adn013 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/09/2007, 15h37
  5. Problème MAJ boite de dialogue
    Par Nemesis007 dans le forum MFC
    Réponses: 2
    Dernier message: 07/04/2007, 00h24

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