Fermeture fenêtre secondaire

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pasbel
Messages : 38
Inscription : mer. 10/avr./2019 17:36

Fermeture fenêtre secondaire

Message par pasbel »

Bonjour à tous

Je suis en train de faire un petit programme fenêtré.
J'ouvre bien ma fenêtre avec menu, quelques gadgets, tout est OK.
J'ouvre une nouvelle fenêtre, (fenêtre de configuration du logiciel), sans menu, avec pour le moment un seul gadget, un simple bouton pour valider les options et fermer cette fenêtre. Tout ça fonctionne sans soucis.

Mais... je ne vois pas comment supprimer le bouton de fermeture de la fenêtre (en haut à droite de la fenêtre), soit rediriger sa commande pour ne fermer que cette fenêtre, car actuellement, il ferme directement le programme comme le fait celui de la fenêtre principale.

J'ai essayé d'utiliser "EventGadget(fenetre1)" pour ma sortie de la fenêtre principale en espérant que ça ne sortirait pas avec la fenêtre 2, mais ça ne fonctionne pas... syntac error ;-)
Fait des tests aussi avec des "WaitWindowEvent(fenêtre1) et WaitWindowEvent(fenêtre2) pour différencier les 2 fenêtres, mais ça ne semble pas non plus fonctionner... pas d'erreur de compilation, mais ça ne semble rien faire.

Des idées ?
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fermeture fenêtre secondaire

Message par falsam »

pasbel a écrit : lun. 14/juil./2025 7:52Des idées ?
Oui ! Tester la fenêtre en cours de fermeture.

Code : Tout sélectionner

EnableExplicit

Enumeration window
  #window0
  #window1
EndEnumeration

Enumeration gadgets
  #btnClose
EndEnumeration

Global Event

; ouverture de la fenetre principale
OpenWindow(#window0, 0, 0, 800, 600, "Fenetre principale", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
ButtonGadget(#btnClose, 750, 550, 50, 30, "Close")

; ouverture de la fenetre fille (Le parent n'est pas obligatoire)
OpenWindow(#window1, 0, 0, 400, 300, "Fenetre fille", #PB_Window_ScreenCentered | #PB_Window_SystemMenu, WindowID(#window0))


; Boucle evenementielle (Tester les evenements)
Repeat
  Event = WaitWindowEvent()
  
  Select Event
      
    Case #PB_Event_Gadget ;Evenements gadgets
      Select EventGadget()
        Case #btnClose 
          CloseWindow(#window0)
          End  
      EndSelect
      
    Case #PB_Event_CloseWindow ;Evenement fenetres
      Select EventWindow()
        Case #window0
          CloseWindow(#window0)
          End
          
        Case #window1
          CloseWindow(#window1)
          
      EndSelect
      
  EndSelect
ForEver

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

Re: Fermeture fenêtre secondaire

Message par falsam »

Petite erreur de flag window dans mon code précédent. C'est corrigé.
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%
pasbel
Messages : 38
Inscription : mer. 10/avr./2019 17:36

Re: Fermeture fenêtre secondaire

Message par pasbel »

Cool, merci

Je n'avais pas trouvé l'info sur #PB_Event_CloseWindow()

Je vais essayer l'option WindowID() aussi car j'ai un peu bidouillé... mais ça marche.
Quand j'ouvre ma fenêtre fille, je dois désactiver manuellement la fenêtre mère car je ne veux pas qu'on y accède tant que la fille est ouverte, et quand je ferme cette dernière, je dois réactiver la fenêtre mère et ensuite la faire passé au premier plan car elle a tendance à passer à l'arrière à sa réactivation. Peut être que ça règle ça, je testerai en même temps.

Encore merci

Le liens de la version actuelle du logiciel, un petit utilitaires pour Reaper, logiciel de musique :
http://www.dr-midik.fr/site/dr-midik_re ... xport.html
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fermeture fenêtre secondaire

Message par falsam »

pasbel a écrit : lun. 14/juil./2025 10:54 Quand j'ouvre ma fenêtre fille, je dois désactiver manuellement la fenêtre mère car je ne veux pas qu'on y accède tant que la fille est ouverte, et quand je ferme cette dernière, je dois réactiver la fenêtre mère et ensuite la faire passé au premier plan car elle a tendance à passer à l'arrière à sa réactivation. Peut être que ça règle ça, je testerai en même temps.
Modification de mon code précédent. De cette manière, il n'est pas possible d'interagir avec la fenêtre principale, sans fermer la fenêtre fille.

Code : Tout sélectionner

EnableExplicit

Enumeration window
  #window0
  #window1
EndEnumeration

Enumeration gadgets
  #callWindow1
  #window0Close
  #window1Close
EndEnumeration

Global Event

; ouverture de la fenetre principale
OpenWindow(#window0, 0, 0, 800, 600, "Fenetre principale", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)

ButtonGadget(#callWindow1, 700, 510, 80, 30, "Ouvre fille")
ButtonGadget(#window0Close, 700, 550, 80, 30, "Ferme moi")


; Boucle evenementielle (Tester les evenements)
Repeat
  Event = WaitWindowEvent()
  
  Select Event
      
    Case #PB_Event_Gadget ;Evenements gadgets
      Select EventGadget()
        Case #callWindow1
          DisableWindow(#window0, #True)
          OpenWindow(#window1, 0, 0, 400, 300, "Fenetre fille", #PB_Window_ScreenCentered | #PB_Window_SystemMenu, WindowID(#window0))
                    
        Case #window0Close 
          CloseWindow(#window0)
          End  
      EndSelect
      
      
    Case #PB_Event_CloseWindow ;Evenement fenetres
      Select EventWindow()
        Case #window0
          CloseWindow(#window0)
          End
          
        Case #window1
          CloseWindow(#window1)
          DisableWindow(#window0, #False)
      EndSelect
      
  EndSelect
ForEver

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%
pasbel
Messages : 38
Inscription : mer. 10/avr./2019 17:36

Re: Fermeture fenêtre secondaire

Message par pasbel »

Merci ;-)
Répondre