Tobias Xy
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.03.2008
Beiträge: 5
|
Tobias Xy Mitglied
16:18:49 10.04.2008 Titel: |
Problem mit error C2440 und error C2664 |
Zitieren |
Ich verwende als Compiler Visual C++ 9.0.
Nun zum Problem: Wenn ich folgenden Quelltext eingebe (aus dem Buch "C++ für Spieleprogrammierer") erscheinen zwei Fehlermeldungen: (Am Quelltext sollte es eigentlich nicht liegen, da er ja aus dem Buch stammt)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | // 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) );
} // WindowProc | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | // 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) );
} // WindowProc | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | // 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) );
} // WindowProc | |
Die Anzeige darunter:
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | 1>------ Erstellen gestartet: Projekt: Projektmappe2, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Main.cpp
1>c:\mein c++\visual studio 2008\projects\projektmappe2\projektmappe2\main.cpp(54) : error C2440: '=': 'const char [15]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\mein c++\visual studio 2008\projects\projektmappe2\projektmappe2\main.cpp(70) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Mein C++\Visual Studio 2008\Projects\Projektmappe2\Projektmappe2\Debug\BuildLog.htm" gespeichert.
1>Projektmappe2 - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1>------ Erstellen gestartet: Projekt: Projektmappe2, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Main.cpp
1>c:\mein c++\visual studio 2008\projects\projektmappe2\projektmappe2\main.cpp(54) : error C2440: '=': 'const char [15]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\mein c++\visual studio 2008\projects\projektmappe2\projektmappe2\main.cpp(70) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Mein C++\Visual Studio 2008\Projects\Projektmappe2\Projektmappe2\Debug\BuildLog.htm" gespeichert.
1>Projektmappe2 - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1>------ Erstellen gestartet: Projekt: Projektmappe2, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Main.cpp
1>c:\mein c++\visual studio 2008\projects\projektmappe2\projektmappe2\main.cpp(54) : error C2440: '=': 'const char [15]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\mein c++\visual studio 2008\projects\projektmappe2\projektmappe2\main.cpp(70) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Mein C++\Visual Studio 2008\Projects\Projektmappe2\Projektmappe2\Debug\BuildLog.htm" gespeichert.
1>Projektmappe2 - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== | |
Wo könnte das Problem liegen? |
|
|
|