Counter (MFC) programmieren...



  • Hi Guys,

    hat jemand von Euch schon mal einen Countdown programmiert ?

    Der Benutzer soll einen beliebigen Zeitpunkt eingeben können, wobei das Programm den "Countdown" (z.B. in Tagen, Stunden, Minuten und Sekunden) anzeigt, d.h. die verbleibende Zeit zwischen eingegebenen Zeitpunkt und akt. Systemzeit...

    Ich würde diesen "Countdown" gerne mittels schöner, grosser Digitalziffern darstellen... - weiss jemand vielleicht einen Link o.ä., der mir weiterhilft ???

    Danke Leute,
    -Jackler





  • und für die Berechnung nimmst du am einfachsten die Klassen

    CTime
    

    und

    CTimeSpan
    


  • Vielen Dank... - werd' mir die Beispiele gleich mal ansehen... 🙂



  • Hallo,

    folgendes Problem... - habe 2 Steuerelemente vom Typ DateTimePicker (CDateTimeCtrl). In das eine kann der Benutzer die Uhrzeit, in das andere das Datum einstellen.
    Dazu ein bisschen Code:

    void CUrlaubsCountdownDlg::OnButtonCountdown() 
    {
        // Aktuelle Systemzeit (Datum + Uhrzeit) besorgen
        m_tLocalTime = CTime::GetCurrentTime();
    
        AfxMessageBox(m_tLocalTime.Format("Local Time: %#c"));
    
        /**
         * Destination Systemzeit besorgen
         */
        DWORD dwResult; 
        // Datum
        dwResult = m_cDatePicker.GetTime(m_tDestinationTime);
        // Uhrzeit
        dwResult = m_cTimePicker.GetTime(m_tDestinationTime);
    
        AfxMessageBox(m_tDestinationTime.Format("Destination Time: %#c"));
    }
    

    Zunächst möchte Ich (wenn der Benutzer auf den Button "Countdown" drückt), dass seine Eingaben bzw. Einstellungen (also in den beiden DateTimePicker-Controls) gesammelt und in der Variablen m_tDestinationTime (vom Typ CTime) gespeichert werden. Die MessageBox ist nur zum Testen... - jedoch wird mir (siehe Quellcode) von dem m_cTimePicker-Control (das mir lediglich die Uhrzeit besorgen sollte) stets auch das Datum (dafür sollte eigentlich das m_cDatePicker-Control zuständig sein) wieder überschrieben.

    Hoffe, Ich hab' mich einigermassen verständlich ausgedrückt... 😉

    Kann mir jemand weiterhelfen ???

    Danke
    -Jackler



  • Hat keiner eine Idee ???



  • mhhh vieleicht klappt es ja wenn du noch mal liebt fragst...
    dein "smilie" (in dem fall lacht er nicht) ist irgendwie nicht ganz korrekt...

    P.S: Nein ich hab jetzt keine Lösung..



  • O.K. - wäre Euch sehr dankbar, wenn mir jemand weiterhelfen könnte (verzweifle allmählich)...

    MfG
    -Jackler



  • Schau dier mal COleDateTime (COleTime) an.



  • Danke... - hab's nun selbst hinbekommen (Du hast recht, mit COleDateTime klappt's wesentlich besser) 😃

    Hier mein Code:

    // Aktuelle Systemzeit (Datum + Uhrzeit) besorgen
        m_tLocalTime = COleDateTime::GetCurrentTime();  
    
        // Destination Systemzeit (Datum + Uhrzeit) besorgen
        DWORD dwResult; 
        dwResult = m_cDatePicker.GetTime(m_tDestinationTime);
    
        int nYear = m_tDestinationTime.GetYear();
        int nMonth = m_tDestinationTime.GetMonth();
        int nDay = m_tDestinationTime.GetDay();
    
        dwResult = m_cTimePicker.GetTime(m_tDestinationTime);
    
        int nHour = m_tDestinationTime.GetHour();
        int nMin = m_tDestinationTime.GetMinute();
        int nSec = m_tDestinationTime.GetSecond();
    
        m_tDestinationTime.SetDateTime(nYear, nMonth, nDay, nHour, nMin, nSec);
    
        m_tDateTimeSpan = m_tDestinationTime - m_tLocalTime;
    

Anmelden zum Antworten