Bekomme Fehlermeldung bei Erstellung eines Windows-Fenster
-
Hi,
habe mir letzens ein Buch gekauft (über spieleprogrammierung) und unter dem Kapitel: Windows-Programmierung sollte ich folgenden Code ausführen:
(is von der CD übernommen worden, also Tippfehler meinerseits sind ausgeschlossen: )// C++ für Spieleprogrammierer // Listing 10.1 // Ein Windows-Grundgerüst // #include <windows.h> // Prototyp der Callback-Funktion LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // Hauptprogramm // int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpcmdline, int ncmdshow) { WNDCLASSEX windowclass; // Struktur für Fenstereigenschaften HWND hWnd; // Fenster-Handle MSG message; // Nachricht // Der Klassen-Name des Fensters ist frei wählbar const char szClassName[] = "Erstes Fenster"; // Struktur mit gewünschten Eigenschaften füllen // // Größe der Struktur zwischenspeichern windowclass.cbSize = sizeof (WNDCLASSEX); // Fenster soll beim Verschieben neu gezeichnet werden windowclass.style = CS_HREDRAW | CS_VREDRAW; // Zeiger auf Callback-Funktion windowclass.lpfnWndProc = WindowProc; // Keine erweiterten Einstellungen windowclass.cbClsExtra = 0; windowclass.cbWndExtra = 0; // Instanz speichern windowclass.hInstance = hInst; // Icons und Cursor festlegen windowclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION); windowclass.hCursor = LoadCursor (NULL, IDC_ARROW); // Hintergrundfarbe festlegen windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1; // Ein Menü brauchen wir nicht windowclass.lpszMenuName = NULL; // Klassenname angeben windowclass.lpszClassName = szClassName; // Fensterklasse registrieren if (!RegisterClassEx (&windowclass) ) return (0); // Das Fenster erzeugen hWnd = CreateWindowEx (NULL, szClassName, "Das erste Fenster!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 300, 250, NULL, NULL, hInst, NULL); // Prüfen, ob alles glatt ging if (hWnd == NULL) return (0); // Der "Herzschlag" des Programms. // Hier werden alle Nachrichten abgeholt, // übersetzt und weitergeleitet. while (GetMessage (&message, NULL, 0, 0) ) { TranslateMessage (&message); DispatchMessage (&message); } // Programm beenden return (int)(message.wParam); } // WinMain // Callback-Funktion zur Nachrichtenverarbeitung // LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { // Messages auswerten switch (message) { // Fenster schließen? (Auch Alt-F4) case WM_DESTROY: { // Nachricht zum Beenden schicken PostQuitMessage (0); return (0); } // Wurde eine Taste gedrückt? case WM_KEYDOWN: { // Ja, also je nach Taste verzweigen switch (wParam) { // Wurde "Escape" gedrückt? case VK_ESCAPE: { // Ja, also Nachricht zum Beenden schicken PostQuitMessage (0); return (0); } } } break; } // Die Nachricht wurde nicht von uns verarbeitet, also // von Windows verarbeiten lassen. return (DefWindowProc (hWnd, message, wParam, lParam) ); } // WindowProcWenn ich diesen Code nun starte (mit Visual Studio) kommen folgende
Fehlermeldungen:**Fehler 1 error C2440: '=': 'const char [15]' kann nicht in 'LPCWSTR' konvertiert werden c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 54
Fehler 2 error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 70
Fehler 3 IntelliSense: Ein Wert vom Typ ""const char *"" kann keiner Entität vom Typ ""LPCWSTR"" zugewiesen werden. c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 54
Fehler 4 IntelliSense: Das Argument vom Typ ""const char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 62
Fehler 5 IntelliSense: Das Argument vom Typ ""const char "" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. c:\users\admin\documents\c++ für spieleprogrammierung\projekte\test\test\test.cpp 63*
Nun habe ich auch leider nicht das Wissen, die Fehler zu entfernen, geschweige denn zu sehen
-wisst ihr, was da falsch ist ??
Gruß
-
hallo,
das liegt an den projekteinstellungen.
stell doch mal unter projekt/eigenschaften/konfigurationseigenschaften/allgemeinvom unicode zeichensatz zu multibyte zeichensatz um.
dann sollte das hinhauen.
-
Super, hat funktioniert.
Vielen Dank

-
Besser wäre es dein Programm für Unicode-Support umzuschreiben!
MfG SideWinder
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole 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.
-
Oder ein aktuelles Buch zu kaufen
