Tutorial von win-api.de
-
Hallo erstmal ich wollte euch mal von einem Fehler berichten, der bei mir aufgetreten ist.
Zuerst: Ich nutze Microsoft Visual C++ 2008 Express Edition und das Tut von win - api .de / das erste WinAPI Programm.
Ich erhalte folgenden Fehler :error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [137]' in 'LPCWSTR' nicht möglichbei folgendem Code:
#define STRICT #include <iostream> #include <windows.h> const char szWitz[] = "\"Ich steh' schwer auf Umweltschutz\", sagt Peter.\n" "\"Ich werfe zum Beispiel alte U-Bahn-Fahrscheine nie weg,\n" "sondern benutze sie mehrmals.\""; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { int iAntwort = MessageBox(NULL, szWitz, "Ha, ha, ha, ha...", MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1); if (IDOK == iAntwort) { MessageBox(NULL, "Ja, ich finde den Witz auch Ok...", "Sie haben auf Ok gedrückt", MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1); } else if (IDCANCEL == iAntwort) { MessageBox(NULL, "Ja, warum haben sie denn auf Abbrechen gedrückt?\n" "Hat ihnen der Witz etwa nicht gefallen?", "Sie haben auf Abbrechen gedrückt", MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1); } return 0; }Der Fehler tritt drei mal in den Zeilen : 15, 22, 31 auf.
Ich hoffe ihr könnt mir sagen was ich falsch gemacht habe.
Euer Hihi
-
die neuen VCs kompilieren standardmäßig mit UNICODE an. das musste in den optionen mal ausstellen.
-
Kannst bitte noch erläutern wo genau ich das einstellen muss?
Hihi
-
-
Boah Danke.
Hihi
-
Der Vollständigkeit halber...
Wenn du mit Unicode arbeiten willst, musst du deinen Strings ein L voranstellen, also z.B. so:
L"Mein Unicode-String"Dann handelt es sich nicht um 8-Bit chars, sondern um 16-Bit w_chars.
-
Wenn man mit VS arbeitet, sollte man immer TCHAR verwenden...
Also für String-Literale:_T("String Literal")Dann geht es sowohl mit ANSI als auch UNICODE.