C'est parceque vous restez bloqué dans votre fonction "fenetreFille" à cause de votre while 1.
Il ne faut jamais mettre de boucle infinie dans une fonction, sinon, toute la gestion des évènements est mise en attente.
Et d'une manière plus générale, je vous conseille d'utiliser le mode évènementiel des GUIs -> Opt("GUIOnEventMode", 1)
Cela permettra d'utiliser les fonctions GUISetOnEvent (évènements de fenêtre) et GUICtrlSetOnEvent (évènements de controls) qui permettent d'associer une fonction à un événement précis : quand l’événement arrive, votre fonction est automatiquement lancée (sauf si vous avec bloqué le programme dans une boucle infini)
Dernier conseil, créez toutes vos fenêtre en début de script et affichez / cachez les sur demande au lieu de les recréer / détruire.
#include <GUIConstantsEx.au3>#include <Misc.au3>Opt("GUIOnEventMode", 1)Global $guiGlobal $gui2$gui = GUICreate("test", 400, 100)GUISetOnEvent($GUI_EVENT_CLOSE, quit
, $gui)GUISetState()$gui2 = GUICreate("fille", 200, 200, 200, 200)GUISetOnEvent($GUI_EVENT_CLOSE, fermerFenetreFille
, $gui2)fenetreFille
()While 1 Sleep(10)WEndFunc fenetreFille
() GUISetState(@SW_SHOW, $gui2)EndFuncFunc fermerFenetreFille
() GUISetState(@SW_HIDE, $gui2)EndFuncFunc quit
() ExitEndFunc
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679