1 Minute == 1Minute ?



  • n'Abend zusammen.
    Ich progge zur Übung gerade n kleines Spielchen indem ich unter anderem die bisherige Spielzeit seit Programmstart ausgeben möchte. Ich war mir nicht sicher wie ich dies am besten Bewerkstelligen sollte und dachte mir ich könnte dies mit GetTickCount bewerkstelligen.

    Ich habe in WM_CREATE eine Variable fPrgStartTime=GetTickCount() belegt um die Startzeit des Programms festzuhalten für den in WM_PAINT folgenden vergleich festzustellen.
    Dort habe ich dann fTempTime=GetTickCount() gesetzt und dann fAktTime=fTemPTime-fPrgStartTime gerechnet. FAktTime stellt die aktuell vergangene Zeit dar seit Programmstart. Um die Zeit Sekündlich zu aktualisieren habe ich SetTimer auf 1000 ms gesetzt. In WM_TIMER rufe ich dann InvalidateRect auf, so wird WM_PAINT gesendet und der Bildschirm aktualisiert.

    Mein Prob an der Sache: Wenn ich mit meiner Stoppuhr vergleiche, springt meine Spielzeit immer bei 2 Sekunden zu früh auf die Minute um. Sprich bei 1 ist bei der stoppuhr 58sec (ca) bei 2 sinds 1.58 (ca).
    Wodurch kommt das ?
    Und gibt es eine bessere (schnellere) Methode als meine ?



  • Ist das auch schon nach 3 oder 4 Sekunden so? Vielleicht stoppst du die Zeit nicht im richtigen Augenblick. 🙄



  • Zeigt er denn die 59. Sekunde gar nicht an, oder ist nur einfach alles gegenüber deiner Stoppuhr um 2 Sekunden verschoben? Das spräche dann dafür, dass du einfach eine andere Startzeit verwendest als deine Stoppuhr 🤡



  • also ich denke es liegt sogar daran dass ich eine andere Startzeit verwende. Nur sollte denke ich doch das Prg meine Startzeit verwenden. Mit dem aufbauen des Fensters soll die Zeitrechnung beginnen. So ist es ja eigentlich Programmiert (WM_CREATE) und so fange ich an zu stoppen. Übersprungen wird nichts, er is immer ca 2 sec schneller als die stoppuhr



  • 100% genau ist WM_TIMER eh nicht. Es werden ja Nachrichten geschickt, und die müssen erstmal in der Queue nach vorne kommen. 2 Sekunden sollte das aber nicht ausmachen.
    Stopp die Zeit mal mit einem anderen Programm, anstelle mit einer manuellen Stoppuhr. Ich vermute den Fehler auch eher bei deiner Messmethode.



  • okay. danke an alle. Ich denke ich werde es vorerst einmal so lassen wie es ist. Da sich die 2 sekunden ja tatsächlich durchziehen egal wie lange der timer läuft. Ist wohl tatsächlich einfach n Unterschied der Startzeit, was zu verschmerzen ist 🙂


Anmelden zum Antworten