Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Lpctstr (oder so ähnlich)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.09.2003, 12:56 Uhr
~Einsteiger
Gast


Hallo!

Was ist dieses LPCTSTR eigentlich? ein Datentyp?
Viele Funktionen der MFC erwarten als Parameter einen String in Forum von LPCTSTR, ich habe aber immer nur Char-Arrays oder CStrings. Habe es mit einem Cast probiert: (LPCTSTR)CString, das geht aber nicht.

Danke!

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.09.2003, 13:13 Uhr
ao

(Operator)


LPCTSTR wird in irgendwelchen Windows-Headern auf etwas umständliche Weise definiert. Letzten Endes kommt etwas in dieser Art heraus:


C++:
#ifdef _UNICODE
typedef const short int * LPCTSTR;
#else
typedef const char * LPCTSTR;
#endif



Das mit dem Casten sollte aber funktionieren. Probier mal das:


C++:
CString s = "Hallo";
char x [128] = (LPCTSTR) s;



ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.09.2003, 13:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
CString heißt beim neuen VC.Net CStringT (natürlich noch per CString ... ansprechbar aber trotzdem)

das LPCTSTR ist nichts anderes als LongPointerConstantTString (Pointer auf TString) also const char *
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.09.2003, 17:59 Uhr
~Einsteiger
Gast


Hallo!

Habe mit folgendem Code eine Double-Zahl festgelegt, diese in ein Char-Array konvertiert und schließlich in einer MessageBox ausgegeben:


C++:
double zahl = 3;
char s_zahl[10];
_gcvt(zahl, 10, s_zahl);

MessageBox((LPCTSTR)s_zahl, "Eingegebene Zahl", 0);




Der Code funktioniert jetzt (weiß nicht was ich vorher falsch gemacht hatte), was mich aber wundert, ist dass es mit folgendem Code ebenfalls geht:


C++:
MessageBox(LPCTSTR(s_zahl), "Eingegebene Zahl", 0);



(Unterschied ist die Klammer bei LPCTSTR)
Im ersten Beispiel ist es eindeutig ein Cast auf den Datentyp LPCTSTR.
Im zweiten Fall ist es aber anscheinend ein Funktionsaufruf. Gibt es LPCTSTR zufällig als Funktion auch oder hab ich da was falsch verstanden?

Danke!

mfg


Bearbeitung von loddab:
cpp-Tags gesetzt

Dieser Post wurde am 02.09.2003 um 18:06 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.09.2003, 18:49 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


normalerweiße musst du bei MessageBox nicht casten, da langt einfach


C++:
MessageBox(s_zahl, "Eingegebene Zahl", 0);


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.09.2003, 20:38 Uhr
Tommix




Zitat:
~Einsteiger postete
Im zweiten Fall ist es aber anscheinend ein Funktionsaufruf. Gibt es LPCTSTR zufällig als Funktion auch oder hab ich da was falsch verstanden?



Hallo,
es ist ein Konstruktor. So wie

C++:
int a = int(4);



Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.09.2003, 12:11 Uhr
0xdeadbeef
Gott
(Operator)


Bei den Basistypen läuft das allerdings auf einen Cast hinaus, er macht also keine Tiefenkopie oder sowas. Übrigens hat diese Notation den Vorteil, dass man genau sieht, was eigentlich gecastet wird. Nimm zum Beispiel:

C++:
(double) 2 / 3


Es ist nicht sofort ersichtlich, was gecastet wird - im Gegensatz zu

C++:
double(2) / 3


was dasselbe bedeutet. Für Anfänger sieht das obere oft aus wie

C++:
double(2/3)


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: