Seite 1 von 1

[Linux] PostEvent() / BindEvent() ohne OpenWindow()

Verfasst: 29.06.2014 11:18
von Sicro
Mir kam gerade die Idee, PostEvent() / BindEvent() einfach mal ohne einem vorangestelltem OpenWindow() auszuprobieren und es funktioniert - allerdings nur unter Linux (Mac kann ich nicht testen).
Das ist sehr nützlich, da man auch gerne mal Events verwenden möchte, ohne ein Fenster in Verwendung zu haben.

Unter Windows funktioniert das leider nicht - auch nicht mit SetWindowCallback().

Code: Alles auswählen

Procedure MyEvent()
  Debug "Mein Event wurde ausgelöst"
  Debug "Meine Event-Daten: " + Str(EventData())
  End  
EndProcedure

Procedure MyThread(void)
  a = ElapsedMilliseconds()
  Repeat
    Delay(1)
    e = ElapsedMilliseconds()
  Until (e - a) > 2000
  PostEvent(#PB_Event_FirstCustomValue, #PB_Ignore, #PB_Ignore, #PB_Ignore, 77)
EndProcedure

#UseBindMode = #False ; WaitWindowEvent()-Modus (funktioniert nicht ohne Window)
;#UseBindMode = #True ; BindEvent()-Modus       (funktioniert ohne Window)

CreateThread(@MyThread(), 0)

CompilerIf #UseBindMode
  BindEvent(#PB_Event_FirstCustomValue, @MyEvent())
  Repeat: Delay(1): ForEver
CompilerElse
  Repeat
    If WaitWindowEvent() = #PB_Event_FirstCustomValue
      MyEvent()
    EndIf
  ForEver
CompilerEndIf