Bonjour
je cherche a detruire une fenetre dans l'initDialog, mais le programme me renvoi une memory leack.
Y aurai t il un moyen de contourner ce probleme ?
Avez vous des idées pour me sortir de cette galere.
merci
@+++
Bonjour
je cherche a detruire une fenetre dans l'initDialog, mais le programme me renvoi une memory leack.
Y aurai t il un moyen de contourner ce probleme ?
Avez vous des idées pour me sortir de cette galere.
merci
@+++
salut comment tu fait pour la detruire ?
si c'est un fenetre allouee dynamiquement :
soit plus precis sur le contexte .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 pWnd->DestroyWindow(); delete pWnd;
Bonjour
dans la premiere fenetre :
et dans le initDialog de IDD_DIALOG2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void CEssaiWindowDlg::OnOK() { CWnd * pWnd; pWnd = new CDialog2; pWnd->Create(_T("STATIC"),"IDD_DIALOG2",WS_VISIBLE,CRect(0, 0, 100, 100),this,NULL); CDialog::OnOK(); }
voila comment je fait, et dans ce cas la, j'ai toujours une fuite sur le new ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 BOOL CDialog2::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); this->DestroyWindow(); delete (this); return TRUE; }
des idées ?
merci bcp
@+++
Non !!! placer l'instruction dans la méthode OnDestroy plutôt que dans OnInitDialog !!this->DestroyWindow();
delete (this);
Que veux-tu faire exactement ?
Tout cela semble compliqué ; j'ai un exemple pour afficher des dialog modeless et avec communications de messages
quand tu fais une allocation dynamique il faut stocker le pointeur en tant que donnee membre et faire delete sur le destructeur de la classe .
sinon fuite memoire l'objet windows est bien detruit par la classe parent mais le new fait la classe pwnd couic !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CEssaiWindowDlg::~CEssaiWindowDlg() { if(m_pWnd ) delete m_pWnd ; } void CEssaiWindowDlg::OnOK() { m_pWnd = new CDialog2; }
et comme le fait remarquer Mat.M la sequence :
est un peu bizarre tu te coupes l'herbe sous le pied ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 BOOL CDialog2::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); this->DestroyWindow(); delete (this); return TRUE; }
salut
en fait, il manque des bouts, mais en gros :
s'il se presente un autre message, on ne doit pas afficher un ecran mais un autre, et le test se fait dans ne fonction qui est appelé dans le InitDialog en fait.
enfin, c'etais pour savoir si quelqu'un avais deja fait....
c'est pas grave
@+++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager