[sans MFC] detruire fenetre fille

sacksith Messages postés 13 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 25 avril 2004 - 25 avril 2004 à 05:15
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 27 avril 2004 à 20:56
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

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

ciao...
BruNews, Admin CS, MVP Visual C++
0
sacksith Messages postés 13 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 25 avril 2004
25 avril 2004 à 16:32
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 avril 2004 à 16:43
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++
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
27 avril 2004 à 20:56
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().
0
Rejoignez-nous