Convert Problem mit MessageBox

Telefisch

Mitglied
Hallo Forum,
nachdem ich wiedereinmal mit einer Frage hänge, hab ich mich entschlossen noch ein Buch durchzuackern.
Thema MFC-Anwendung.

Das Buch schreibt:

MessageBox("Hallo. Dies ist meine erste Visual C++ Anwendung!");

Visual Studio schreibt daraufhin:

error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'const char [50]' to 'LPCTSTR'

Ist das Buch falsch oder was ist hier los?

Wenn schon die Bücher nicht mehr stimmen, wie soll ich das jemals kapieren? :mad:

Hilfee, bitte.
 
Naja, das Internet hat mal wieder geholfen:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=849851&SiteID=1

Was mir aber nach wie vor schleierhaft ist...
Wie soll man das jemals begreifen?
Handelt es sich hier um Versionskonflikte zwischen verschiedenen Entwicklungsumgebungen? Kann ich meine Programme nächstes Jahr noch kompilieren?

Wie bekommt Ihr diese Tücken in den Griff?
Ich hab langsam das Gefühl, dass ich zu dämlich bin für C++, obwohl es bei VB, VBA, PHP und HTML eigentlich ganz gut geklappt hat.
 
? Es handelt sich einfach um 2 Zeichensätze die du mischt. Unicode und Multibyte.
C++:
Messagebox(TEXT("Hallo. Dies ist meine erste Visual C++ Anwendung!"));
und alle Probleme sind verschwunden!
 
Ah ja...
merkwürdigerweise wird offensichtlich auch im Buch C++ in 21 Tagen dieser Fehler gemacht.
Oder gibt es eine Möglichkeit den Zeichensatz am Projekt einzustellen?
Was müsste man denn tun um Unicode-conform zu programmieren?

Oder ist das dann schon Unicode-conform?
 
Hallo,

ja, es gibt eine Möglichkeit, den Zeichensatz im Projekt einzustellen. Die Option heisst direkt "Zeichensatz" und befindet sich in den allgemeinen Konfigurationseinstellungen bei den Projekteigenschaften.
Wenn das Projekt den Unicode-Zeichensatz verwendet, musst du an den meisten Stellen Unicode-Strings verwenden und programmierst damit zwangsläufig Unicode-conform.

Gruß
MCoder
 
Besten Dank...
nachdem ich nun einen Weg gefunden habe ein AddIn für Excel zu bauen, bin ich über clr gefallen.
Das geht offensichtlich nicht in AddIns.
Na toll und wieder alles von vorne.
Kann es sein, dass C++ nur eine Ansammlung verschiedener Sprachen ist? Das gibts doch gar nicht, dass es keine durchgängige Dokumentation zu dem Thema gibt.
Die MSDN mischt alles bunt durcheinander und die Bücher (siehe oben) erzählen auch immer nur Halbwahrheiten. :mad:
 
C++ ist schon eine einzige Sprache, für die es auch einen ISO-Standard gibt. Allerdings ist die Sprache durch Bibliotheken beliebig erweiterbar, was bei dir wohl im Moment für erwas Verwirrung sorgt.
Zum Beispiel sind die MessageBox-Funktion oder das _T()-Makro nicht Bestandteil der Sprache C++ sondern über Bibliotheken (WinAPI) hinzugefügte Funktionalitäten. Dass man übrigens nicht alles glauben kann was, irgendwo publiziert wird, trifft halt nicht nur auf die B...-Zeitung zu :-)

CLR ist ein besonderes Thema: Hier hat Microsoft tatsächlich an der Sprache herumgeschraubt, um mit dem .NET-Konzept arbeiten zu können. Das nennt sich dann "Managed C++" und hat (obwohl's recht ähnlich aussieht) mit der sonstigen C++-Programmierung eher weniger gemein.

Gruß
MCoder
 
Hmm...
etwas Verwirrung ist gut :confused:

Aber gut, so schnell gebe ich nicht auf!

Für meine weiteren Fragen mach ich mal nen neuen Threat auf.

tnx nochmal
Gruss Carsten
 
Zurück