Problem mit Unicode



  • Hallo,

    ich habe mein Projekt nun auf Unicode umgestellt, und bekomme nun folgenden Compilerfehler:

    "LpDoc: nicht deklarierter Bezeichner"

    pDC->TextOut((Uint32_t)(1500/fDiffX), (Uint32_t)(1000/fDiffY), _T(pDoc->GetTitle()));
    

    GetTitle() gibt einen CString zurück.

    Warum meldet mir der Compiler einen Fehler?

    Wenn ich den Adressoperator & verwende, bekomme ich den Fehler: "L: nicht deklarierter Bezeichner"

    pDC->TextOut((Uint32_t)(1500/fDiffX), (Uint32_t)(1000/fDiffY), _T(&pDoc->GetTitle()));
    

    Was soll das?



  • ich glaub

    _T(&

    kann man so nicht verwenden, _T ist ja nu n makro

    #if Unicode
    #define _T("x") L"X"
    #else
    #define _T("x") "x"

    dein code vorher war also von anfang an so schon kaese
    das _T("") nur verwenden wenn du auch text angibst und keine variable

    CString text(_T("abba"));
    //_T(text) == _T("text") != _T("abba")

    mach doch einfach ohne das _T()



  • Das _T verwendet man *nur* bei String-Literalen!
    Also z.B.

    pDC->TextOut((Uint32_t)(1500/fDiffX), (Uint32_t)(1000/fDiffY), _T("Hello world"));
    

    Aber wenn Du schon ein CString/LPCTSTR zurückbekommst, dann ohne!

    pDC->TextOut((Uint32_t)(1500/fDiffX), (Uint32_t)(1000/fDiffY), pDoc->GetTitle());
    

Anmelden zum Antworten