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

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

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

Beitrag 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
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version