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 :

liberation de memoire d une fenetre modale


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut liberation de memoire d une fenetre modale
    Bonjour,
    J'ai une fenetre modale principale qui appelle une seconde fenetre principale dans une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		C2Dlg dechDlg(mcsPathIni,csLogin);
    		dechDlg.DoModal();
    Donc lorsque le 2eme dlg se ferme, on retrouve la premiere qui etait restee dessous inactive.
    Mon probleme, c'est que lorsqu'on sort de la fonction, la memoire n'est pas liberee (en regardant dans le taskmgr).
    Pourtant, on passe bien dans le destroywindow de la 2eme fenetre.

    Je pense que dechDlg n'est pas detruit.
    Une idée?
    Merci.

  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 ,le probleme ne doit pas etre representatif du code que tu indiques.
    une boite de dialogue modal est bien detruite graphiquement a la sortie de domodal.
    et l'objet est detruit quand il sort de sa portée ..
    la verité est ailleurs...


  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta reponse.
    Alors quand est ce que la fenetre est réellement détruite?
    EDIT > Lorsque je controle la taille memoire du programme, l'objet est sorti de la portee, et destroywindow executé.

  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
    la fenetre est detruite graphiquement a la fin de CDialogoModal
    par l'appel a DestroyWindow();

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Pardon, je me suis mal exprimé.
    Ma fenetre est bien detruite.
    Par contre, les ressources memoires ne le sont pas.
    Par exemple, cette fenetre utilise un objet qui contient un thread. Ce thread se ferme automatiquement lorsque l'objet qui le contient est detruit.
    Apres destroywindow, le thread tourne toujours...
    Je cherche donc a savoir quand l objet fenetre2 est detruit, c est a dire toutes les variables membres sont detruites.
    Merci.

  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
    si ton thread se detruit sur la destruction de l'objet .
    et ci celui ci correspond à une donnée membre de la classe .
    il sera detruit sur le destructeur de la classe fenetre .
    donc quand l'objet fenetre sortira de sa portée ;
    si c'est une fonction ça sera donc a la sortit de la fonction.

    maintenant tout dépend de la methode de fermeture du thread .
    voir ce post de la faq:
    http://c.developpez.com/faq/vc/?page...opWorkerThread
    et la note liée à TerminateThread si c'est la méthode utilisée par ton objet gérant le thread.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci pour ton aide.
    En fait, la fenetre est bien supprimée, par contre, une autre thread lancée par ma 2eme fenetre ne l'est pas... ce qui provoque mon problème de memoire. Vu que cette thread est encapsulée dans un SDK, j'attend la reponse du fournisseur du SDK.
    Encore merci.

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

Discussions similaires

  1. comment rendre une fenetre modal
    Par inter_amine dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 14h06
  2. comment rendre une fenetre modale ?
    Par inter_amine dans le forum Interfaces Graphiques en Java
    Réponses: 12
    Dernier message: 23/03/2007, 11h04
  3. Comment savoir si une fenetre modale est ouverte
    Par franckcl dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/12/2006, 15h11
  4. Réponses: 4
    Dernier message: 24/11/2005, 09h34
  5. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17

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