Event = WaitWindowEvent(1) im Thread.
Re: Event = WaitWindowEvent(1) im Thread.
@xXRobo_CubeXx
Du kannst das von WaitWindowEvent() zurückgegebene Event problemlos in eine Variable speichern. Diese Variable kannst du beliebig oft auswerten.
Wenn du das nicht machst und die WaitWindowEvent-Funktion trotzdem mehrfach aufrufst, dann kann es passieren, dass bestimmte Events verschluckt werden bzw. verloren gehen, weil das gerade ausgelöste Event in einer falschen Zeile ausgewertet wurde, das aber in der anderen Zeile ausgewertet werden sollte.
Du kannst das von WaitWindowEvent() zurückgegebene Event problemlos in eine Variable speichern. Diese Variable kannst du beliebig oft auswerten.
Wenn du das nicht machst und die WaitWindowEvent-Funktion trotzdem mehrfach aufrufst, dann kann es passieren, dass bestimmte Events verschluckt werden bzw. verloren gehen, weil das gerade ausgelöste Event in einer falschen Zeile ausgewertet wurde, das aber in der anderen Zeile ausgewertet werden sollte.
- xXRobo_CubeXx
- Beiträge: 120
- Registriert: 12.06.2015 16:08
- Computerausstattung: Version 5.41 LTS
- Wohnort: Wohnort
- Kontaktdaten:
Re: Event = WaitWindowEvent(1) im Thread.
Ja so kann man das auch machen, thx Nick und RS 
Frage zu Postevent hab ich auch noch...
Kann ich auch mehrere Postevent im Threat hintereinander gleichzeitig abfeuern? In meinen Beispiel geht es zwar aber ist das zuverlässig oder muss man vorsichthalber Delays zwischendrin einbauen das alle Events ankommen?
Frage zu Postevent hab ich auch noch...
Version 5.41 LTS 
Re: Event = WaitWindowEvent(1) im Thread.
Es ist kein Problem, mehrere Events manuell auf einmal auszulösen. Delay() brauchst du nicht.
- xXRobo_CubeXx
- Beiträge: 120
- Registriert: 12.06.2015 16:08
- Computerausstattung: Version 5.41 LTS
- Wohnort: Wohnort
- Kontaktdaten:
Re: Event = WaitWindowEvent(1) im Thread.
Und wen ich wie funheld ein Timeout Wert bei WaitWindowEvent einsetze, welche Zahl ist sinnvoll? Was nimmt ihr immer? 
Version 5.41 LTS 
Re: Event = WaitWindowEvent(1) im Thread.
Kommt drauf an, wie oft deine Schleife in einer Sekunde abgearbeitet werden soll und wie wichtig die Auswertung deiner Events sind. Wenn du Timeout brauchst, kannst du z.B. 100 nehmen. Das sollte ausreichen.
Wenn du aber beispielsweise während der Laufzeit was zeichnen möchtest, dann nimm 10, falls 100 Millisekunden zu lang sind.
Wenn du aber beispielsweise während der Laufzeit was zeichnen möchtest, dann nimm 10, falls 100 Millisekunden zu lang sind.
- xXRobo_CubeXx
- Beiträge: 120
- Registriert: 12.06.2015 16:08
- Computerausstattung: Version 5.41 LTS
- Wohnort: Wohnort
- Kontaktdaten:
Re: Event = WaitWindowEvent(1) im Thread.
Aso, ich probiers mal aus... thx 
Ich hab irgend wo gelesen das man im Loop kein Delay nutzen sollte. Warum eigentlich nicht?
Ich hab irgend wo gelesen das man im Loop kein Delay nutzen sollte. Warum eigentlich nicht?
Version 5.41 LTS 
Re: Event = WaitWindowEvent(1) im Thread.
Weil das nicht notwendig ist. Dafür hast du WaitWindowEvent(), um auf das nächste Event zu warten.
- xXRobo_CubeXx
- Beiträge: 120
- Registriert: 12.06.2015 16:08
- Computerausstattung: Version 5.41 LTS
- Wohnort: Wohnort
- Kontaktdaten:
Re: Event = WaitWindowEvent(1) im Thread.
Was is wen ich bei WaitWindowEvent 10000 eingebe? Werden die Button Klicks erst nach 10000 Miliseks abgefragt? Also verzögert? 
Version 5.41 LTS 
Re: Event = WaitWindowEvent(1) im Thread.
Wenn du bei WaitWindowEvent ein Timeout angibst, wird gewartet bis ein Event auftritt oder das Timeout abgelaufen ist. D.h. wenn du einen Button drückst, wird sofort das Event abgearbeitet und das Timeout ist hinfällig.
Michael Hack
Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Re: Event = WaitWindowEvent(1) im Thread.
Nein, wie der Parametername schon sagt, ist das nur ein Timeout. Die Funktion wartet maximal x Millisekunden.
Wenn in der Zwischenzeit bereits ein Event ausgelöst wurde, dann wird die Schleife sofort fortgesetzt. Der Timeout-Wert ist nur dazu da, wenn überhaupt keine Events stattfinden.
Du kannst das ganz leicht selber testen:
Am Anfang gibt es gleich mehrere Events. Das ist normal, aber wenn du innerhalb deines Fensters die Maus nicht bewegst, dann gibt es immer erst nach 3 Sekunden einen Durchlauf.
Wenn du die Maus bewegst oder was anderes mit dem Fenster machst, dann gibt es automatisch neue Events und die Funktion "WaitWindowEvent()" hört auf zu warten und es gibt einen Durchlauf.
Wenn in der Zwischenzeit bereits ein Event ausgelöst wurde, dann wird die Schleife sofort fortgesetzt. Der Timeout-Wert ist nur dazu da, wenn überhaupt keine Events stattfinden.
Du kannst das ganz leicht selber testen:
Code: Alles auswählen
EnableExplicit
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Repeat
Select WaitWindowEvent(3000)
Case #PB_Event_CloseWindow
End
EndSelect
Debug "Durchlauf..."
ForEver
EndIf
Wenn du die Maus bewegst oder was anderes mit dem Fenster machst, dann gibt es automatisch neue Events und die Funktion "WaitWindowEvent()" hört auf zu warten und es gibt einen Durchlauf.

