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

<- StickyWindow() - Window Inhaltsverzeichnis - WindowBounds() ->