COleDateTimeSpan::GetDays() in Static Text ausgeben



  • Hallo Zusammen
    Neu hier, und gleich eine Frage!
    Ich bin relativ neu in der ganzen MFC Welt, hab vorher ein paar Sachen mit VC++ 6.0 gemacht. Und probiere jetzt ein paar Sachen mit Visual Studio 2005 Express.
    Es ist etwas einfaches, funktioniert unter VC++ 6.0 aber nicht in VS Express hier mal mein Code:

    void CTimeDlg::OnTimer(UINT_PTR nIDEvent)
    {
    	// TODO: Add your message handler code here and/or call default
    	COleDateTime dtevent;
    	dtevent = COleDateTime(2006, 11, 29, 0, 00, 0);
    	COleDateTimeSpan dtDiff = dtevent - COleDateTime::GetCurrentTime();
    	CString strMessage;
    
    	strMessage.Format("%d d, %d h, %d m, %d s", (int)dtDiff.GetDays(), (int)dtDiff.GetHours(), (int)dtDiff.GetMinutes(), (int)dtDiff.GetSeconds()); //<-- Zeile 99
    
    	m_lbTime = strMessage; //m_lbTime ist eine control variable
    	UpdateData(FALSE);
    
    	CDialog::OnTimer(nIDEvent);
    }
    

    So wie der code hier steht funktioniert er in VC++ 6.0 & VS 2003
    aber unter 2005 erhalte ich folgender Fehler:

    d:\projects\Time\Time\Timedlg.cpp(99) : error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [23]' to 'const wchar_t *'
            with
            [
                BaseType=wchar_t,
                StringTraits=StrTraitMFC_DLL<wchar_t>
            ]
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    

    Bevor ich den Beitrag verfasst habe hab ich noch was intressantes in der FAQ gesehen:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39135.html
    aber das hat mich auch nicht zum Erfolg gebracht.

    Nun was mir die Fehlermeldung sagt ist, das ich vorher etwas casten muss, nur wie und was?

    wäre froh wenn mir da jemand helfen könnte

    Danke im Voraus
    lena



  • Per default ist in VC2005 UNICODE aktiviert (was gut ist)... somit musst Du am besten alles mit TCHAR machen =>

    strMessage.Format(_T("%d d, %d h,..."), ...)
    


  • Tatsächlich! Vielen Dank Jochen

    gruss Lena


Anmelden zum Antworten