Basistypen char* LPCSTR



  • Hi,

    hab ein Problem mit den Typen.
    Als Programmieroberflaeche benutze ich Visual Studio.
    In meiner Mainfunktion deklariere ich

    WNDCLASS WndClass;
    WndClass.lpszClassName = "WinProg";

    dabei beschwert sich der Compiler, dass "WinProg" kein Type von LPCWSTR ist.
    Wenn ich eine Typumwandlung mit (LPCWSTR) mache funktioniert das Programm zwar, aber bekomme im Fenster bekomme ich Statt WinProg eine kryptische chinesische Zeichen.
    Das gleiche Problem hab ich mit der TextOut() funktion, wenn ich ihm einen String von Typ char* uebergebe.

    Das Programm hab ich aus einem Buch und ich kann mich daran erinnern, dass es damals ohne Probleme und ohne diese Fehler meldung korrekt funktioniert hat. Vielleicht hat sich der Standard geaendert?

    Dank euch



  • Typischerweise macht man das so:

    #include <tchar.h>
    
    // ...
    WNDCLASS WndClass; 
    WndClass.lpszClassName = _T("WinProg");
    

    Edit:
    Erklärung:
    LPCTSTR ist entweder LPCWSTR (schlussendlich const wchar_t*) oder LPCSTR (schlussendlich const char*). Ein Cast vom einen ins andere bringt zwar den Compiler zum Schweigen löst aber das Problem nicht (wie du erfahren hast). _T("Hallo") macht aus einem String Literal jenach Projekt Einstellungen (Characterset) entweder "Hallo" oder L"Hallo". Das L bewirkt das der String Literal aus wchar_t's bestehen.


Anmelden zum Antworten