[sans MFC] detruire fenetre fille

Signaler
Messages postés
13
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
25 avril 2004
-
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
-
Bonjour,
Après avoir déclaré une nouvelle classe, WINDCLASSEX, je crée une fenêtre HWND FentreFille=CreateWindowEx(avec la nouvelle classe)

ok tout va bien.
Maintenant, je voudrais détruire FenetreFille sans détruire Le fenetre principale.
Un bouton dans FenetreMere DestroyWindow(FenetreFille) mais :
dans la procédure de FenetreFille, il y a un PostQuitMessage(0) qui me ferme _tout_ le programme et pas uniquement FenetreFille.

Comment dois-je m'y prendre ?
Merci
dom

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Puisque tu sais d'ou vient le probleme, enleve ce PostQuitMessage(0) de la fenetre fille.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
13
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
25 avril 2004

Si j'enlève le PostQuitMessage(0) de FenetreFille, cette dernière est bien effacée de l'écran mais pas détruite. En effet, je fais un test derrière if(!FenetreFille) et je n'entre pas dans la boucle.

Par contre, j'ai trouvé un autre moyen à partir d'un source mais je ne comprend pas le fonctionement. Si qq peut m'expliquer :
je détruit FentreFille et je met tout de suite derrière un FentreFille=NULL;

Comment fonctionne cette dernière instruction ?
dom
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
FentreFille=NULL; // met un ZERO et basta
Doit y avoir une embrouille, soit dans ton explication soit dans ta comprehension des fenetres.

Petzold est ici, la reference:
http://brunews.free.fr/brunews/download/CP5.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
quand tu détruit ta fenêtre, il faut mettre aussi la variable à NULL car sinon tu auras un handle non valide. C'est un peu comme avec les pointeurs, après l'avoir détruit, tu le met à NULL pour être sûr qu'il pointe pas vers une adresse bibon.

pour tester la validité d'un handle tu as IsWindow().