Bisonte hat geschrieben:Es geht ja eigentlich darum, dass hier so viele meinen, daß WindowEvent falsch wäre...
jain. du wirfst hier zwei dinge durcheinander.
werden ja alle "Events" gefressen....
definitiv nein!
ein eventfresser ist
oder dementsprechend
denn hier werden die Events aus der Queue geholt,
ohne verarbeitet zu werden.
das ist ein schmutziger trick, um alle Events aus der Queue zu "spülen",
die z.B. während eines Fensteraufbaus auflaufen mit vielen Gadgets mit Vorgabewerten.
bei deinem Beispiel verarbeitest du sie, denn du reagierst ja z.B. auf #PB_Event_CloseWindow
jetzt die zweite sache die du hineinmixt:
in einer Schleife nur WindowEvent() zu verwenden, führt natürlich dazu,
dass die Schleife ständig durchrödelt, auch wenn es keine Events zu verarbeiten gibt.
Alleine durch dein Delay(1) hast du aber schon dafür gesorgt, dass deine CPU nicht zur Bratpfanne wird.
ein WindowEvent() : Delay(X) war die übliche Lösung, bevor es für WaitWindowEvent() ein Timeout gab.
das Timeout hat natürlich den Vorteil, dass bei mehr als einem auflaufenden Event nicht sinnlos gewartet wird,
weshalb die Timeout-Methode eindeutig vorzuziehen ist.
was für einen TimeOut man wählen sollte.
das hängt auch davon ab,
was du in der schleife alles machen willst und welche Framerate du am Ende erreichen willst.
dein Timeout sollte so hoch wie möglich sein, dass es zusammen mit allen
Berechnungen die du noch durchführst in einen Frame deines Games passt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.