Page 1 sur 1

La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 10:29
par MLD
Bonjour a tous

Je me pose une petite question. :roll:

En PB l'orsque l'on fait CloseWindow(fenêtre), la fenêtre serait'elle détruite ou simplement réduite ?
Ou pour la détruire faut'il utiliser DestroyWindow_(hWnd)?

Car la doc Window indique CloseWindow(fenêtre). Réduit la fenêtre spécifié ect
DestroyWindow: Détruit la fenêtre ect

Dans le second cas il serait utile de de disposer d'une fonction documentée
DestroyWindow(fenêtre) :lol:

Y a t'il des gents qui savent répondre a ma petite question sur ce forum :?: :wink:

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 10:48
par falsam
Deux petits codes

Code : Tout sélectionner

OpenWindow(0, 0, 0, 512, 384, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
Debug IsWindow(0)
Debug "- Utilisation de CloseWindows"
CloseWindow(0)
Debug IsWindow(0)

Code : Tout sélectionner

OpenWindow(0, 0, 0, 512, 384, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
Debug IsWindow(0)
Debug "- Utilisation de DestroyWindow_"
DestroyWindow_(hwnd)
Debug IsWindow(0)
DestroyWindow_ ne libère pas les ressources allouées par l'ouverture de la fenêtre .
Cette APi ne peut être associé (a mon avis) qu'avec l'api d'ouverture d'une fenêtre CreateWindow_.

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 10:49
par Backup
Seul Fred pourra te dire ce que fait CloseWindow(x)

car voici ce qui se passe au moment d'un CloseWindow(x)

Code : Tout sélectionner

extrn _PB_CloseWindow@4
......
........
 CALL  _PB_CloseWindow@4
bref ça fait appel a une fonction d'une librairie Externe de Purebasic ...
faudrait Désassembler la lib en question ...
le plus Simple est de demander a Fred :)

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 11:52
par graph100
En tout cas dans le cas de la création d'une fenêtre avec OpenWindow(), le CloseWindow() va libérer tout les gadgets créés sur cette fenêtre.

Pour que ta fermeture soit donc convenable il faut passer par CloseWindow(). Et puis DestroyWindow_() est une api window, et PB est fait pour fonctionner sur Mac et Linux aussi, ça doit être prévu comme il faut :D

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 12:42
par MLD
Merçi a tous

Il semble que l'utilisation en PB de CloseWindow détruise la fenêtre.
DestroyWindow_(x), aussi , mais il faut agir aussi sur les message de Window avec PostQuitMessage(0)
Si je me trompe .Fred une petite rectif STP.

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 16:29
par G-Rom
CloseWindow , va detruire la fenetre et libéré les ID & les structure alloué en interne par PB.
la détruire via l'api & son handle induirai une fuite de mémoire à long terme , les id & structures seront toujours présente.

@++

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 17:52
par nico
Je confirme que la fonction CloseWindow(fenêtre) fait appel à l'API DestroyWindow_(...) en complément de ce que G-Rom a écrit.

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 20:53
par falsam
G-Rom a écrit :CloseWindow , va detruire la fenetre et libéré les ID & les structure alloué en interne par PB.
la détruire via l'api & son handle induirai une fuite de mémoire à long terme , les id & structures seront toujours présente.

@++
Ce que démontre mes deux petits code postés un peu plus haut dans ce fil de discutions
http://www.purebasic.fr/french/viewtopi ... 48#p153248 dont la conclusion est
falsam a écrit :DestroyWindow_ ne libère pas les ressources allouées par l'ouverture de la fenêtre .
Cette APi ne peut être associé (a mon avis) qu'avec l'api d'ouverture d'une fenêtre CreateWindow_.

Re: La fermeture des fenêtres et PB

Publié : mer. 22/mai/2013 23:54
par nico
Oui mais avec tout ça, on ne répond pas à la question de départ qui est:

Code : Tout sélectionner

En PB l'orsque l'on fait CloseWindow(fenêtre), la fenêtre serait'elle détruite ou simplement réduite ?
Ou pour la détruire faut'il utiliser DestroyWindow_(hWnd)?
Effectivement, je n'avais jamais prêté attention à cette comparaison, donc le CloseWindow de PureBasic n'a rien à voir avec le CloseWindow de l'API microsoft, dans PureBasic cela va effectivement détruire la fenêtre (avec un DestroyWindow_() mais pas seulement) et tout ce qui lui est associée, c'est à dire la fenêtre et tous les gadgets ainsi que les datas associées dans les routines de PureBasic. Pour le reste, tout à déjà été expliqué.

Re: La fermeture des fenêtres et PB

Publié : jeu. 23/mai/2013 13:00
par MLD
Encore merci a tous pour cet éclairage de lanterne.