CTime::GetCurrentTime(): in ner Schleife???



  • Hallo!

    Ich lasse bei meinem Proggy die Aktuelle Zeit und das Datum anzeigen. Diese Funktion ist natürlich in der OnPaint() funktion drin. Der Code;

    CPaintDC dc(this);
    CTime AktuelleZeit;
    AktuelleZeit = CTime::GetCurrentTime();
    dc.TextOut(( 120, 320, AktuelleZeit.Format("%A, %d %B, %H:%M:%S") );
    

    Klappt alles wunderbar!!
    Doch wie lasse ich die Zeit laufen?? Auch die Sekunden sollten laufen, ja wie eine richtige digitaluhr!
    Ich habs schon mit While(TRUE) und for versucht, es ging zwar, aber nur das! Jedes andere Detail wurde wegen der WHILE schleife blockiert und die ANwendung reagierte nicht mehr!!

    Wie muss ich denn das machen, dass alles paletti läuft und die Zeit immer wieder aktualisiert wird? (Wie ne Digitaluhr...)

    mfg
    Pro



  • -> Einen Timer nehmen
    diesen alle ~1 Sekunden aufrufen lassen und InvalidateRect() aufrufen damit das fenster neugezeichnet wird.

    Oder du packst das Zeitanzeigen in eine Funktion und rufst diese in OnPaint und in OnTimer auf.



  • Original erstellt von Nemesyzz:
    **-> Einen Timer nehmen
    diesen alle ~1 Sekunden aufrufen lassen und InvalidateRect() aufrufen damit das fenster neugezeichnet wird.

    Oder du packst das Zeitanzeigen in eine Funktion und rufst diese in OnPaint und in OnTimer auf.**

    Und wie mach ich dat?? Von Timern hab ich leider *schade....* keine Ahnung! *traurig* Aber wenn du mir den...... *freu!*, dann wär ich froh...
    mfg
    Pro



  • das sieht aus als ob du mit der WinAPI arbeitest....

    Ich würde die Zeiterfassung in einen thread packen, und dort übergibts du den wert dann immer an ein STATIC CONTROL...



  • Original erstellt von C-O-M-M-A-N-D-E-R:
    **das sieht aus als ob du mit der WinAPI arbeitest....

    Ich würde die Zeiterfassung in einen thread packen, und dort übergibts du den wert dann immer an ein STATIC CONTROL...**

    ????? 😕 😕 😕

    Ich arbeite in MFC, sonst hätt ich's ja net hier gepostet! 😃 *lol*



  • @Nemesyz: IMHO enstehen nach einer langen Zeit abweichungen bei einem Timer, d.h.: 1 Sekunde ist nachehr nicht merh wirklich eine Sekunde 😉

    Und wenn er das wie du sagst in eine Funktion schreibt und die dann aufruft, muss er doch wieder eine Schleife verwenden, und die blockiert dann wieder alles...



  • Original erstellt von C-O-M-M-A-N-D-E-R:
    **@Nemesyz: IMHO enstehen nach einer langen Zeit abweichungen bei einem Timer, d.h.: 1 Sekunde ist nachehr nicht merh wirklich eine Sekunde 😉

    Und wenn er das wie du sagst in eine Funktion schreibt und die dann aufruft, muss er doch wieder eine Schleife verwenden, und die blockiert dann wieder alles...**

    Jo, ne schleife blockiert alles. Sonst würde eine WHILE oder FOR Schleife ja ausreichen. Ich hab's auch schon mit
    goto versucht, hat keinen Zweck!



  • Lasse den Timer alle 500 ms laufen.

    Message WM_TIMER
    Der Assi erstellt eine Funktion namens OnTimer(xxxx)

    Starten
    SetTimer(1,550,NULL);
    Stoppen
    KillTimer(1);

    Die Ziffer 1 bezieht sich auf den Timer um ihn zu Identifizieren.

    Du kannsz hier auch
    SetTimer(500,500,NULL);
    KillTimer(500);

    schreiben

    u.s.w.



  • Original erstellt von Unix-Tom:
    **Lasse den Timer alle 500 ms laufen.

    Message WM_TIMER
    Der Assi erstellt eine Funktion namens OnTimer(xxxx)

    Starten
    SetTimer(1,550,NULL);
    Stoppen
    KillTimer(1);

    Die Ziffer 1 bezieht sich auf den Timer um ihn zu Identifizieren.

    Du kannsz hier auch
    SetTimer(500,500,NULL);
    KillTimer(500);

    schreiben

    u.s.w.**

    😕 *sorryestutmirleidscheisseichcheckeidieseseinfachezeugseinfachnetschade!* 😕



  • Okay.. ich hab jetzt unter OnTimer(XXXXX)
    folgendes:

    SetTimer(1, 550, NULL);
    //HIER HAB ICH MEIN AKTUELLEZEIT CODE
    KillTimer(1);
    

    Das Problem: Datum und Uhrzeit werden erst gar net angezeigt!!!!!!
    Aber der rest funzt....
    warum das??



  • ...also muss es doch in OnPaint geschehen...
    Wenn aber soll die Funktion OnTimer(xxx) aufgerufen werden??

    PS: Im Thema CFILEDLG::Speichern hat jemand geschrieben "Wann gibts endlich ne Antwort"... UNTER MEINEM!!! Namen. Das war ich aber net, erhlich!!



  • stimmt - das war ich! Registrier dich doch :p



  • Ne, ich hab mich jetzt angemeldet!
    Aber das Problem besteht leider immer noch.....
    Und bis 15:15Uhr muss mein Proggy diese funktion besitzen.... aaahhh!!! denn da muss ich mein fortschritt zeigen! (Der Post).


Log in to reply