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.
Ein optionaler Timeout-Wert (in Millisekunden) kann angegeben werden. Dies veranlasst die Funktion nach einer bestimmten Zeit zur Rückkehr (aus der Wartestellung), wenn keine Ereignisse aufgetreten sind.
Eine Applikation sollte möglichst immer diesen Befehl anstelle von WindowEvent() benutzen. Für weitere Informationen, sehen Sie die Dokumentation zu WindowEvent()
Hinweise:
Wenn ein Fenster von einem Thread geöffnet wird, dann muss der Thread auch WindowEvent() oder WaitWindowEvent() in einer Schleife aufrufen, um die Ereignisse für dieses Fenster zu verarbeiten, da Window-Ereignisse nicht zwischen verschiedenen Threads gesendet werden.
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: Einfaches 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