VS05 kompiliert keine MessageBox
-
Guten Abend allesamt,
ich habe folgende Frage:
Wollte letztens mich Mal wieder ein bisschen in C++ einarbeiten und eine Schaltfläche mit einer Funktion versehen, so dass auf einen Klick auf dieser ein kleines Fenster mit einer Nachricht erscheint. Das ganze sah folgendermaßen aus:
MessageBox("Irgend eine Nachricht!");Allerdings erscheint beim Kompilieren dann immer folgende Fehlermeldung:
error C2664: 'CWnd::MessageBoxW': Konvertierung des Parameters 1 von 'const char [50]' in 'LPCTSTR' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.Mit Visual Studio 2003 Professional liess es sich kompilieren, mit Visual Studio 2005 Professional allerdings nicht mehr.
Weiss jemand, wo der Fehler liegt und was man dagegen tun kann?
Vielen Dank schon Mal!
-
Der Fehler liegt bei dir. Du hast nicht beachtet, dass alle entsprechenden Funktionsmakros der WinAPI vom verwendeten Zeichensatz ANSI/Unicode kompatibel sind. Dh, für jede Funktion gibt es sowohl ein ANSI als auch eine Unicode Version. Und da bei VC++ 2005 Projekten per default Unicode eingestellt ist, dein Stringliteral aber narrow ist, gibts diesen Fehler.
Lösung:
verwende explizit die ANSI Version der FunktionMessageBoxA("Irgend eine Nachricht!");oder mach das Stringliteral ebenfalls ANSI/Unicode kompatibel
MessageBox(TEXT("Irgend eine Nachricht!")); // bzw. MessageBox(_T("Irgend eine Nachricht!")); // <tchar.h>
-
Eigentlich ist nur noch Version 2 vertretbar

MfG SideWinder
-
Wenn du auf Unicode anspielst, dann kann er ja auch
MessageBoxW(L"Irgend eine Nachricht!");schreiben.

-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.