komischer Fehler / Hilfe gesucht
-
Habe ein Problem
Ich versuche C++ zu lernen, habe mir ein Tutorial gesucht schreibe das erste Beispiel ab... und bekomme einen dämlichen Fehler der wie folgt lautet:
c:\dokumente und einstellungen\matt\desktop\game_01\game_01\game_01.cpp(7) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [6]' in 'LPCWSTR' 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.das dazugehörige Programm:
#define WIN32_LEAN_AND_MEAN #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { MessageBox(0,"Hallo Welt","Mein erstes Programm",MB_OK|MB_ICONEXCLAMATION); return 0; }Mein Frage: Was zum ... bedeutet der Fehler und was kann ich dagegen tun?
mfg NightElb
-
http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=9030
EDIT:
Im übrigen, wenn du erst anfängst die Sprache zu lernen, würde ich die empfehlen zuerst mit der Konsole zu arbeiten. Bringt nicht viel jetzt schon mit WinAPI sich rumzuschlagen..
-
Fang doch erstmal mit ISO C++ an, und nicht gleich WinAPI. Das ist der falsche Weg...
-
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.
-
du kompilierst unicode
-
Ich kenn mich mit den Grundsätzen der Programmierung aus.
Kann Java ganz gut und C eig auch, hab halt nur mit C++ jetzt angefangen.
Also
haterskater schrieb:
du kompilierst unicode
??? sagt mir nicht viel (und ja ich weiß was Unicode und ASCII ist)
-
In den Projekteigenschaften in Visual Studio kannst du festlegen, welcher Zeichensatz verwendet werden soll. Für die meisten Funktionen der Win32 API gibt es jeweils eine ANSI (zB
MessageBoxA( )) und eine UNICODE (zBMessageBoxW( )) Version. Der von Dir verwendete BezeichnerMessageBoxist ein#defineauf eine der beiden, je nach dem, welchen Zeichensatz du in den Projekteigenschaften auswählst.In deinem Fall ist offensichtlich UNICODE ausgewählt. Somit erwartet
MessageBoxWide-Character-Zeichenketten, bzw in WinAPI-Speak: einen LPCWSTR (Long Pointer to Constant Wide String). Somit:MessageBox( 0, L"Hallo Welt", L"Mein erstes Programm", MB_OK | MB_ICONEXCLAMATION );Will man ein Programm sowohl mit ANSI- als auch UNICODE-Zeichensatz kompilieren können, so bietet sich die Verwendung des Headers
<tchar.h>an. Je nach Zeichensatz setzt das darin enthaltene Makro_T( x )einLvor die Zeichenkettexoder eben nicht:#include <tchar.h> // ... MessageBox( 0, _T( "Hallo Welt" ), _T( "Mein erstes Programm" ), MB_OK | MB_ICONEXCLAMATION );cheers, Swordfish
-
das nenne ich Hilfe
Danke!