WaitWindowEvent()
Syntax
Ereignis = WaitWindowEvent([Timeout])Beschreibung
Wartet bis ein Ereignis auftritt. Es ist die selbe Funktion wie WindowEvent(), hält aber die Programmausführung an, was sehr wichtig in einer Multitasking Umgebung ist.
Parameter
Timeout (optional) Der Timeout (auch "Zeitlimit", in Millisekunden), welcher die Funktion nach einer bestimmten Zeit zur Rückkehr (aus der Wartestellung) veranlasst, wenn keine Ereignisse aufgetreten sind. Wenn kein Timeout angegeben wird, dann wartet sie unbegrenzt bis ein Ereignis auftritt.
Rückgabewert
Gibt das aufgetretene Ereignis zurück, siehe WindowEvent() für weitere Informationen.
Anmerkungen
Eine Applikation sollte möglichst immer diese Funktion anstelle von WindowEvent() verwenden, da sie beim Warten auf ein Ereignis keine Rechenzeit beansprucht.
Eine Fenster-Ereignisschleife sollte nicht in einem Thread verarbeitet werden, da es auf OS X und Linux einige Einschränkungen gibt. Ein Debugger-Fehler wird ausgelöst.
Pro Ereignisschleife darf nur einmal WaitWindowEvent() aufgerufen werden, da andernfalls Ereignisse "verloren" gehen (jedes Ereignis kann nur einmal ausgewertet werden und steht damit nach der ersten Verarbeitung nicht noch ein zweites Mal zur Verfügung).
Beispiel
If OpenWindow(0, 0, 0, 230, 90, "Event-Handling Beispiel...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget (1, 10, 10, 200, 20, "Klick mich")
CheckBoxGadget(2, 10, 40, 200, 20, "Markiere mich")
If CreateMenu(0, WindowID(0))
MenuTitle("Menu")
MenuItem(1, "Eintrag 1")
MenuItem(2, "Eintrag 2")
MenuItem(3, "Eintrag 3")
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1 : Debug "Schalter 1 angeklickt!"
Case 2 : Debug "Schalter 2 angeklickt!"
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 1 : Debug "Menü-Eintrag 1 angeklickt!"
Case 2 : Debug "Menü-Eintrag 2 angeklickt!"
Case 3 : Debug "Menü-Eintrag 3 angeklickt!"
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
Unterstützte OS
Alle