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 !


Anmelden zum Antworten