Ja, kann man so nehmen, obwohl in der Praxis wirds bei mir nie so aussehen

Code: Alles auswählen
; Windows
Enumeration
#Window_0
EndEnumeration
; Menu bars
Enumeration
#Menu_Window_0
EndEnumeration
; Menu items
Enumeration
#Menu_Window_0_Datei_Oeffnen
EndEnumeration
; Gadgets
Enumeration
#Button_0
#Button_1
#Button_2
EndEnumeration
Prototype GadgetEvent(Event.l)
; Gadgetevents
Procedure Event_Button_0(Event.l)
Debug "#Button_0"
EndProcedure
Procedure Event_Button_1(Event.l)
Debug "#Button_1"
EndProcedure
Procedure Event_Button_2(Event.l)
Debug "#Button_2"
EndProcedure
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, #PB_Ignore, #PB_Ignore, 142, 137, "Window_0", #PB_Window_SystemMenu|#PB_Window_Invisible|#PB_Window_TitleBar)
If CreateMenu(#Menu_Window_0, WindowID(#Window_0))
MenuTitle("&Datei")
MenuItem(#Menu_Window_0_Datei_Oeffnen, "Oeffnen")
EndIf
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 10, 5, 120, 30, "Gadget_0")
SetGadgetData(#Button_0, @Event_Button_0())
ButtonGadget(#Button_1, 10, 40, 120, 30, "Gadget_1")
SetGadgetData(#Button_1, @Event_Button_1())
ButtonGadget(#Button_2, 10, 75, 120, 30, "Gadget_2")
SetGadgetData(#Button_2, @Event_Button_2())
EndIf
ProcedureReturn WindowID(#Window_0)
EndIf
EndProcedure
If OpenWindow_Window_0()
; Initstuff
HideWindow(#Window_0, #False)
;- Event loop
Define.l Event, EventGadget, EventType, EventMenu, EventWindow
Define.GadgetEvent GadgetEvent
Repeat
Event = WaitWindowEvent()
EventGadget = EventGadget()
EventType = EventType()
EventMenu = EventMenu()
EventWindow = EventWindow()
Select Event
Case #PB_Event_Gadget
GadgetEvent = GetGadgetData(EventGadget)
GadgetEvent(EventType)
Case #PB_Event_Menu
Case #PB_Event_CloseWindow
Select EventWindow
Case #Window_0
Break
EndSelect
EndSelect
ForEver
EndIf