Kann keine Variablen DIREKT an eine Funktion übergeben
-
Ich arbeite mit Visual Studio 2005 mit MFC.
Also hier mal folgendes Beispiel um mein Problem zu erläutern.Kompiliere ich folgenden Code:
MessageBox("Test");dann erhalte ich beim kompilieren diese Fehlermeldung:
...PFAD\desktop\test1\test1\test1dlg.cpp(97) : error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'const char [5]' to 'LPCTSTR'wenn ich dann diesen Code kompiliere:
CString temp; temp = "Test"; MessageBox(temp);dann gibts keine Probleme beim kompilieren und es erscheint eine Messagebox mit dem Inhalt "test".
Wenn ich einer Variable beim Deklarieren einen Wert zuweisen möchte:
CString temp = "Test";bekomme ich diese Fehlermeldung (Muss die Werte nach dem deklarieren in einer neuen befehlszeile zuweisen, dann geht es)
...PFAD\test1\test1\test1dlg.cpp(97) : error C2440: 'initializing' : cannot convert from 'const char [5]' to 'ATL::CStringT<BaseType,StringTraits>'
VS2005 ist gerade frisch installiert. Sonst funktioniert damit alles einwandfrei.
Habe nicht die geringste Ahnung woran es liegen könnte
-
Du verwendest hier ein String-Literal in ANSI-Kodierung.
VS2005 ist per Default aber UNICODE... also verwende bitte das TEXT oder _T Macro:#include <tchar.h> MessageBox(_T("Test"));
-
UNICODE aktiviert und ANSI-String geschrieben ... nutz einfahc das TEXT-Makro(_T geht auch) oder wenn du immer bei UNICODE bleiben willst setz ein L vor den String
=>#ifdef _UNICODE #define MessageBox MessageBoxW #else // ANSI #define MessageBox MessageBoxA #endif // _UNICODE #ifdef _UNICODE #define TEXT(#) L# #else // ANSI #define TEXT(#) # #endif // _UNICODE=>
MessageBox(TEXT("Test"));
-
danke das mit dem _T funktioniert.
Gibt es eventuell noch eine Möglichkeit Unicode bei VS2005 zu deaktivieren ? Habe bis vor kurzem nur mit dem alten VS5 gearbeitet.
-
Musst du bei der Erstellung des Projektes entscheiden. da kann man das einstellen. Ich empfehle aber die Unicode-Variante. Man gewöhnt sich schnell dran

-
Ich empfehle die TCHAR-Variante, da kannst Du es einstellen wie Du willst, es passt immer

Siehe Projekteinstellungen|Allgemein
-
danke für die schnellen hilfreichen Antworten !