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] Utilisation d'une fenêtre créée sans ressource associé


Sujet :

MFC

  1. #1
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut [MFC] Utilisation d'une fenêtre créée sans ressource associé
    Bonjour,

    Suite à mon précédent message, j'utilise une fenêtre créée sans ressources comme montré dans le post-it FAQ.
    Mon problème est que je n'arrive pas à utiliser ma nouvelle classe de fenêtre comme variable membre de mon interface générale.

    En local, ça fonctionne :
    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
    /////////////////////////////////////////////////////////////////////////
    CImageBrowser.cpp
    /////////////////////////////////////////////////////////////////////////
     
    void CImageBrowser::OnRButtonDown(UINT nFlags, CPoint point) 
    {
    [...]
    	CCheckClassesDlg dlg;
    	dlg.ReadDirectory(m_ImageDirectory);
    	dlg.SetCheckClassesDlg(0,0,150,120,"Check visible classes",this);
    	dlg.DoModal();
    [...]
    	CStatic::OnRButtonDown(nFlags, point);
    [...]
    }
    En variable membre ça plante quand on essaie d'ouvrir la fenêtre pour la deuxième fois :
    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
    /////////////////////////////////////////////////////////////////////////
    CImageBrowser.h
    /////////////////////////////////////////////////////////////////////////
     
    class CImageBrowser : public CStatic
    {
    [...]
    private:
    	CCheckClassesDlg dlg;
    [...]
    }
     
    /////////////////////////////////////////////////////////////////////////
    CImageBrowser.cpp
    /////////////////////////////////////////////////////////////////////////
     
    void CImageBrowser::OnRButtonDown(UINT nFlags, CPoint point) 
    {
    [...]
    	dlg.ReadDirectory(m_ImageDirectory);
    	dlg.SetCheckClassesDlg(0,0,150,120,"Check visible classes",this);
    	dlg.DoModal();
    [...]
    	CStatic::OnRButtonDown(nFlags, point);
    [...]
    }
    Le plantage a lieu au niveau d'InitModalIndirect() dans la fonction SetCheckClassesDlg(), utilisée pour initialiser la fenêtre.

    ReadDirectory() initialise une structure interne à la classe de la fenêtre.

    Le problème me donne l'impression qu'il manque une désallocation ou quelque chose comme ça mais je n'arrive pas à trouver où.

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,
    modifie comme suit la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void CDynamicDlg::SetDynamicDlg(int x,int y,int cx,int cy,const char *szTitle,CWnd* pParent /*=NULL*/)
    {
       //
       LPDLGTEMPLATE lpdt;
       LPWORD lpw;
     
       if(m_hgbl) GlobalFree(m_hgbl);
    	m_hDialogTemplate=NULL; // rajouter cette ligne.
    /....................

  3. #3
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    Effectivement, là ça marche.

    Mais je ne comprends pas pourquoi ça résoud le problème.

    :

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    on va dire que c'est un bug des MFC .
    la fonction DoModal ne remet pas a null ce pointeur apres utilisation .

  5. #5
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    OK, merci pour ton aide
    (Du coup tu vas modifier ton code dans le Post-it ?)

  6. #6
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par nmarf
    Du coup tu vas modifier ton code dans le Post-it ?
    oui

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/10/2005, 12h41
  2. [MFC] Utilisation d'une progress bar
    Par nmarf dans le forum MFC
    Réponses: 2
    Dernier message: 12/09/2005, 10h42
  3. [MFC] Utilisation d'une palette de couleur
    Par Kevgeii dans le forum MFC
    Réponses: 2
    Dernier message: 01/06/2005, 17h35
  4. Réponses: 1
    Dernier message: 11/04/2005, 09h59
  5. [MFC] Priorité a une fentres CDialog
    Par Coubiac dans le forum MFC
    Réponses: 3
    Dernier message: 28/02/2005, 13h04

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