voici un petit exemple tout simple de gestion de plusieurs fenêtres. Il y a d'autres méthodes, mais celle-ci est facile à comprendre. L'avantage est que tu n'as qu'une seule boucle d'évènements à gérer. Tu peux ensuite ajouter les actions/évènements que tu veux.
Code : Tout sélectionner
;-Constantes
Enumeration Fenetres
#WINMAIN
#WIN_1
#WIN_2
EndEnumeration
Enumeration Gadgets
;-Gadgets #WINMAIN
#BTN_WIN1
#BTN_WIN2
#BTN_1
#BTN_2
#BTN_Close_WINMAIN
#EDITOR_WINMAIN
;-Gadgets #WIN_1
#BTN_3
#BTN_4
#BTN_Close_WIN_1
#EDITOR_WIN_1
;-Gadgets #WIN_2
#BTN_5
#BTN_6
#BTN_Close_WIN_2
#EDITOR_WIN_2
EndEnumeration
Procedure Window_N1()
If OpenWindow(#WIN_1, 0, 0, 500, 300, "Fenêtre #WIN_1", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_TitleBar) <> 0
ButtonGadget(#BTN_3, 10, 20, 100,30, "Transférer") : GadgetToolTip(#BTN_3, "Transférer texte dans éditeur principal")
ButtonGadget(#BTN_4, 10, 60, 100,30, "Effacer tout") : GadgetToolTip(#BTN_4, "Effacer le contenu de l'éditeur")
ButtonGadget(#BTN_Close_WIN_1, 10, 100, 100,30, "Fermer") : GadgetToolTip(#BTN_Close_WIN_1, "Fermer cette fenêtre")
EditorGadget(#EDITOR_WIN_1, 120, 20, 360, 260, #PB_Editor_WordWrap)
EndIf
EndProcedure
Procedure Window_N2()
If OpenWindow(#WIN_2, 0, 0, 500, 300, "Fenêtre #WIN_2", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_TitleBar) <> 0
ButtonGadget(#BTN_5, 10, 20, 100,30, "Transférer") : GadgetToolTip(#BTN_5, "Transférer texte dans éditeur principal")
ButtonGadget(#BTN_6, 10, 60, 100,30, "Effacer tout") : GadgetToolTip(#BTN_6, "Effacer le contenu de l'éditeur")
ButtonGadget(#BTN_Close_WIN_2, 10, 100, 100,30, "Fermer") : GadgetToolTip(#BTN_Close_WIN_2, "Fermer cette fenêtre")
EditorGadget(#EDITOR_WIN_2, 120, 20, 360, 260, #PB_Editor_WordWrap)
EndIf
EndProcedure
If OpenWindow(#WINMAIN, 0, 0, 500, 300, "Fenêtre principale", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_TitleBar) <> 0
ButtonGadget(#BTN_WIN1, 10, 20, 100,30, "Open WIN_1") : GadgetToolTip(#BTN_WIN1, "Ouvrir fenêtre #WIN_1")
ButtonGadget(#BTN_WIN2, 10, 60, 100,30, "Open WIN_2") : GadgetToolTip(#BTN_WIN2, "Ouvrir fenêtre #WIN_2")
ButtonGadget(#BTN_1, 10, 100, 100,30, "Mon texte à moi") : GadgetToolTip(#BTN_1, "Ajouter un texte pré-établi")
ButtonGadget(#BTN_2, 10, 140, 100,30, "Effacer tout") : GadgetToolTip(#BTN_2, "Effacer le contenu de l'éditeur")
ButtonGadget(#BTN_Close_WINMAIN, 10, 180, 100,30, "Quitter") : GadgetToolTip(#BTN_Close_WINMAIN, "Quitter ce programme")
EditorGadget(#EDITOR_WINMAIN, 120, 20, 360, 260, #PB_Editor_ReadOnly|#PB_Editor_WordWrap)
;-===========================
;-PROGRAMME
;-===========================
Repeat
Event = WaitWindowEvent()
;-Event Gadgets
If Event = #PB_Event_Gadget
Select EventGadget()
;-Gadgets #WINMAIN
Case #BTN_WIN1 : Window_N1()
Case #BTN_WIN2 : Window_N2()
Case #BTN_1 : AddGadgetItem(#EDITOR_WINMAIN, -1, "Je suis une phrase toute prête du style : Veuillez agréer, M. Patate, toute mon admiration pour les frites que j'ai pu manger grâce à vous ;)")
Case #BTN_2 : ClearGadgetItems(#EDITOR_WINMAIN)
Case #BTN_Close_WINMAIN : Quit = 1
;-Gadgets #WIN_1
Case #BTN_3 : AddGadgetItem(#EDITOR_WINMAIN, -1, GetGadgetText(#EDITOR_WIN_1)) : CloseWindow(#WIN_1)
Case #BTN_4 : ClearGadgetItems(#EDITOR_WIN_1)
Case #BTN_Close_WIN_1 : CloseWindow(#WIN_1)
;-Gadgets #WIN_2
Case #BTN_5 : AddGadgetItem(#EDITOR_WINMAIN, -1, GetGadgetText(#EDITOR_WIN_2)) : CloseWindow(#WIN_2)
Case #BTN_6 : ClearGadgetItems(#EDITOR_WIN_2)
Case #BTN_Close_WIN_2 : CloseWindow(#WIN_2)
EndSelect
EndIf
;-Fin
If Event = #PB_Event_CloseWindow
Select EventWindow()
Case #WINMAIN : Quit = 1
Case #WIN_1 : CloseWindow(#WIN_1)
Case #WIN_2 : CloseWindow(#WIN_2)
EndSelect
EndIf
Until Quit = 1
End
EndIf