Je ne sais pas si 2 fenêtres et leurs gadgets respectifs peuvent cohabiter dans la même boucle
- Il ne doit de toute façon y avoir qu'une seule boucle d’événement par programme.
- Chaque événement retourné par WaitWindowEvent() ou WindowEvent() contient deux informations:
- L’événement
- La fenêtre qui a retourné l’événement
- On peut séparer soit au niveau fenêtre, soit au niveau Gadget()
- Sans séparation, ce sont tous les événements identiques qui sont groupés
Code : Tout sélectionner
; Cas 1 n'importe quelle case de fermeture ferme toutes les fenêtres
EnableExplicit
Enumeration
#Win_0
#Win_1
#Win_2
EndEnumeration
OpenWindow(#Win_0, 100, 100, 100, 100, "")
OpenWindow(#Win_1, 200, 200, 100, 100, "")
OpenWindow(#Win_2, 300, 300, 100, 100, "")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
Code : Tout sélectionner
; Cas 2: Seule la fenête 0 ferme le programme, les autres ferment la fenêtre appelante
EnableExplicit
Enumeration
#Win_0
#Win_1
#Win_2
EndEnumeration
OpenWindow(#Win_0, 100, 100, 100, 100, "")
OpenWindow(#Win_1, 200, 200, 100, 100, "")
OpenWindow(#Win_2, 300, 300, 100, 100, "")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Win_0 : Break
Case #Win_1 : CloseWindow(#Win_1)
Case #Win_2 : CloseWindow(#Win_2)
EndSelect
EndSelect
ForEver
Pour éviter les erreurs, une technique simple est de préfixer tous les gadgets en fonction de leur fenêtre. Ainsi pas de doublon possible. Ex #Win_0_Btn_Quit #Win_0_Btn_Save ...