TCHAR, char, strings, Win-API .....hilfe



  • Ich lese mich derzeit durch das Win-API Buch von Petzold und mir ist der Unterschied zwischen TCHAR gegenüber normalen char bzw string variablen.

    So hab ich z.b. folgenden Code um einen Satz in meinem fenster auszugeben:

    TextOut(hdc, 40,50, text,  5);
    

    Als vierter Paramter wird dort eine Variable vom typ LPCWSTR erwartet, wieso kann ich dort kein char angeben? klappt nur mit TCHAR.

    (TCHAR text ist wie folgt deklariert:

    TCHAR text[] = TEXT("Hallo");
    

    )

    TCHAR hat z.b. den nachteil das strlen nicht mehr funktioniert......

    Kann mir also jemand mal einen groben überlick über die Eigenschaften der einzelnen char-Typen geben? bin etwas am verzweifeln.



  • Hallo

    Als vierter Paramter wird dort eine Variable vom typ LPCWSTR erwartet, wieso kann ich dort kein char angeben? klappt nur mit TCHAR.

    Warum sollte char nicht gehen? Bei mir gehts jedenfalls :

    char test[] = "Test";
    TextOut(hdc, 40,50, test,  5);
    

    Im allgemeinen sind die WinAPI-Typen in C/C++ nur typedefs auf Buildin-Typen.
    bis bald
    akari



  • tztztz, TCHAR ist wichtig und sollte man auch verwenden.

    TCHAR ist abhängig der Projekteinstellung als CHAR (Multibyte-Strings eingestellt) oder als WCHAR (Unicode-Strings eingestellt) definiert.

    TCHAR* cString = _T("bla bla bla");
    

    Das _T-Makro fügt dem String ein L voran, wenn Unicode aktiviert ist.

    CHAR entspricht char und WCHAR müsste wchar_t entsprechen.



  • Souljumper schrieb:

    TCHAR hat z.b. den nachteil das strlen nicht mehr funktioniert......

    Es gibt für praktisch fast alle String Funktionen TCHAR Versionen. Dazu schaust du dir am besten mal den Header <tchar.h> an. Für strlen wäre das zB _tcslen.

    Dein Thema hat übrigens nicht viel mit ISO C++ zu tun und gehört eher in den WinAPI Bereich.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Die entsprechenden Funktionen für TCHAR findest du auch in der MSDN. Z.B. wird bei der strlen-Dokumentation auf _tcslen hingewiesen.



  • Siehe: Generic-Text Mappings in Tchar.h
    http://msdn2.microsoft.com/c426s321


Log in to reply