Anfängerfrage zu WinAPI Datentypen



  • Hey,

    könnte mich bitte Jemand in das gehütete Geheimnis bzgl. der WinAPI Datentypen einweihen?

    Man stolpert geradezu auf Datentypen wie LPCTSTR, via Internet bin ich dann auf die richtige Typdef Konvention gestossen

    typedef const unsigned char FAR * LPCTSTR;
    

    Wie gehe ich damit um wenn ich z.B. den Konstruktur mit Membervariabeln bestücken möchte die die IP beeinhalten?

    server(LPCTSRT ip[15]="127.0.0.1", int port=9090);
    

    Das das nicht funktionieren wird ist klar, da es bei dem WinAPI Typ um einen konstanten Zeiger auf einen Char handelt....

    Gut ich hab ein Char Array und möchte die konvertieren in ein LPCTSRT....

    Was ich gerne haben möchte sind Hintergrundinformationen bzgl. der WinAPI Datentypen und mit wie diese assoiziert werden mit richtigen C++ Datentypen...

    Des weiteren ein kleines Beispiel wie das konvertieren kann oder gleich als LPCTSRT deklarieren kann....

    Vielen Dank



  • LPCTSTR ist ein Zeiger auf "const TCHAR" ("const TCHAR*").
    Nicht ein konstanter Zeiger auf TCHAR ("TCHAR* const"). Das ist ein Unterschied.

    Wenn du einen String speichern möchtest kannst du natürlich nicht einfach einen Zeiger nehmen, das sollte klar sein. Das hat aber mit WinAPI nix zu tun.
    Um einen String aus TCHARs zu speichern kannst du entweder ein TCHAR Array nehmen oder CString oder std::basic_string<TCHAR> oder ...

    Die WinAPI Datentypen kannst du in den entsprechenden Windows Headers nachgucken, da brauchst du kein Internet oder sontwas dafür, einfach nur das SDK.
    Mit einer guten IDE (wie z.B. Visual C++ 2005 Express) kannst du auch einfach in ein Source File "LPCTSTR" reinschreiben, mit der Rechten Maustaste draufklicken und "go to definition" auswählen. Dann springt er dir in das File und die Zeile wo das definiert wird, dann siehst du was es ist.



  • sagt ja schon der name

    LPCTSTR

    Long Pointer to Const T String

    ist die transforme variante des LPCSTR und LPCWSTR

    an der stelle des LPCTSTR kann man auch ein tstring nehmen

    std::basic_string<TCHAR> tstring;
    tstring.c_str();

    verwenden


Anmelden zum Antworten