La fermeture des fenêtres et PB

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

La fermeture des fenêtres et PB

Message 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:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: La fermeture des fenêtres et PB

Message 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_.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: La fermeture des fenêtres et PB

Message 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 :)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: La fermeture des fenêtres et PB

Message 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
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: La fermeture des fenêtres et PB

Message 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.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: La fermeture des fenêtres et PB

Message 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.

@++
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: La fermeture des fenêtres et PB

Message 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.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: La fermeture des fenêtres et PB

Message 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_.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: La fermeture des fenêtres et PB

Message 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é.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: La fermeture des fenêtres et PB

Message par MLD »

Encore merci a tous pour cet éclairage de lanterne.
Répondre