WindowEvent()

Syntax

Ereignis = WindowEvent()
Beschreibung
Überprüft, ob in irgendeinem der geöffneten Fenster ein Ereignis stattfand.

WindowEvent() gibt das nächste Ereignis aus dem "Ereignis-Queue" (Warteschlange mit Ereignissen) zurück bzw. Null, wenn es keine weiteren Ereignisse gibt. Anders als WaitWindowEvent() wartet die Funktion nicht auf das nächste Ereignis - sie kehrt immer sofort zurück.

Dies macht sie nützlich für Ereignisschleifen von Fenstern, wo - ohne dass ein Ereignis auftritt (z.B. bei Network Transaktionen) - andere Prozesse ausgeführt werden müssen und daher WaitWindowEvent() nicht verwendet werden kann.

Sie muss mit Vorsicht benutzt werden, da sie bei fortlaufender Verwendung - anders als WaitWindowEvent() - anderen Programmen während des Wartens auf ein Ereignis keine Rechenzeit zur Verfügung stellt und damit alle CPU-Power verbraucht. In diesem Fall sollte innerhalb der Schleife entweder Delay() oder WaitWindowEvent() mit einem niedrigen Timeout-Wert verwendet werden.

Um die Fenster-Nummer, in dem das Ereignis stattfand, bestimmen zu können, müssen Sie die EventWindow() Funktion benutzen.

Mögliche Ereignisse sind:
  #PB_Event_Menu           : ein Menü wurde ausgewählt
  #PB_Event_Gadget         : ein Gadget wurde gedrückt
  #PB_Event_SysTray        : ein Icon im Systray wurde angeklickt
  #PB_Event_Timer          : ein Timer hat seine Zeitbeschränkung (Timeout) erreicht
  #PB_Event_CloseWindow    : das Schließgadget vom Fenster wurde gedrückt
  #PB_Event_Repaint        : der Fensterinhalt wurde zerstört und muss neu gezeichnet werden (nützlich für 2D Grafik-Operationen) 
  #PB_Event_SizeWindow     : das Fenster wurde in der Größe verändert
  #PB_Event_MoveWindow     : das Fenster wurde verschoben
  #PB_Event_MinimizeWindow : das Fenster wurde minimiert
  #PB_Event_MaximizeWindow : das Fenster wurde maximiert
  #PB_Event_RestoreWindow  : das Fenster wurde auf die normale Größe zurückgesetzt (sowohl von der minimalen als auch maximalen Größe)
  #PB_Event_ActivateWindow : das Fenster wurde aktiviert (hat den Fokus erhalten)
  #PB_Event_WindowDrop     : eine Drag & Drop Operation wurde auf einem Fenster abgeschlossen
  #PB_Event_GadgetDrop     : eine Drag & Drop Operation wurde auf einem Gadget abgeschlossen
Sie finden ein einfaches Beispiel zum Event-Handling bei WaitWindowEvent().

Nach einem #PB_Event_WindowDrop oder #PB_Event_GadgetDrop Ereignis können die Ereignis-Funktionen der Drag & Drop Library verwendet werden, um die abgelegten "dropped") Daten zu untersuchen und zu lesen.

Hinweis: 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.

Der beste Weg zum Handhaben einer WindowEvent()-Schleife sieht wie folgt aus:
  Repeat 
    Event = WindowEvent() 

    If Event    ; ein Ereignis befindet sich in der "Queue" (Warteschlange), also arbeiten wir es ab
      .... 
    Else  
      Delay(1)  ; kein Ereignis aufgetreten, lassen wir also anderen Programmen auch etwas CPU-Zeit zukommen! 
    EndIf 
  Until Event = #PB_Event_CloseWindow
Hinweis: Das 'Delay' sollte nicht nach jedem Ereignis eingefügt werden, denn wenn viele Ereignisse (wie Refresh, Gagdget Updates, etc.) auftreten, wird die Anwendung 20 ms (zumindest unter Windows) zwischen jedem Ereignis warten. Deshalb muss das Delay dann eingefügt werden, wenn keine Ereignisse empfangen werden. Eine weitere Möglichkeit besteht darin, WaitWindowEvent() mit einem niedrigen Timeout-Wert zu verwenden.

Unterstützte OS

Alle

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