|
|
C/C++ Quellcode |
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[] = "First Window"; // 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, "First Window!", 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 |
Quoted
------ Erstellen gestartet: Projekt: lernen021, Konfiguration: Debug Win32 ------
Fenster.cpp
q:\projekte c++\lernen021\lernen021\fenster.cpp(54): error C2440: '=': 'const char [13]' kann nicht in 'LPCWSTR' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
q:\projekte c++\lernen021\lernen021\fenster.cpp(70): error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [13]' 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.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
|
|
C/C++ Quellcode |
1 2 3 4 5 6 7 8 9 10 |
hWnd = CreateWindowEx (WS_EX_LEFT, szClassName, "First Window!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 300, 250, NULL, NULL, hInst, NULL); |
This post has been edited 2 times, last edit by "bcc-fan" (Nov 22nd 2010, 8:05pm) with the following reason: Ergänzung anhand MSDN
Quoted
------ Erstellen gestartet: Projekt: Lernen021, Konfiguration: Debug Win32 ------
Fenster.cpp
q:\projekte c++\lernen021\lernen021\fenster.cpp(12: fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "StdAfx.h"" einzufügen?
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Quoted
------ Erstellen gestartet: Projekt: Fenster, Konfiguration: Debug Win32 ------
Fenster.cpp
q:\projekte c++\fenster\fenster\fenster.cpp(50): error C2440: '=': 'const char [13]' kann nicht in 'LPCWSTR' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
q:\projekte c++\fenster\fenster\fenster.cpp(66): error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [13]' 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.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
This post has been edited 1 times, last edit by "bcc-fan" (Nov 22nd 2010, 8:40pm)
Quoted
------ Erstellen gestartet: Projekt: Fenster, Konfiguration: Debug Win32 ------
Fenster.cpp
q:\projekte c++\fenster\fenster\fenster.cpp(34): error C2065: 'szWindowClass': nichtdeklarierter Bezeichner
q:\projekte c++\fenster\fenster\fenster.cpp(69): error C2065: 'szWindowClass': nichtdeklarierter Bezeichner
q:\projekte c++\fenster\fenster\fenster.cpp(69): error C2065: 'szTitle': nichtdeklarierter Bezeichner
q:\projekte c++\fenster\fenster\fenster.cpp(121): error C2059: Syntaxfehler: ')'
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



Selbst da gibt es Fehler!
Quoted
------ Erstellen gestartet: Projekt: Fenster, Konfiguration: Debug Win32 ------
Fenster.cpp
q:\projekte c++\fenster\fenster\fenster.cpp(34): error C2065: 'szWindowClass': nichtdeklarierter Bezeichner
q:\projekte c++\fenster\fenster\fenster.cpp(69): error C2065: 'szWindowClass': nichtdeklarierter Bezeichner
q:\projekte c++\fenster\fenster\fenster.cpp(69): error C2065: 'szTitle': nichtdeklarierter Bezeichner
q:\projekte c++\fenster\fenster\fenster.cpp(121): error C2059: Syntaxfehler: ')'
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
|
|
C/C++ Quellcode |
1 2 |
static TCHAR szWindowClass[] = _T("win32app"); static TCHAR szTitle[] = _T("Win32 Guided Tour Application"); |
|
|
C/C++ Quellcode |
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[] = "First Window"; // 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 (WS_EX_LEFT, szClassName, "First Window!", 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 |
Ich denke Vince hat es bei sich getestet.
Sag mir bitte wo da szWindowClass und szTitle sind...
Ehrlich, ich finde es nicht.
|
|
C/C++ Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
static TCHAR szWindowClass[] = _T("win32app"); static TCHAR szTitle[] = _T("Win32 Guided Tour Application"); // The parameters to CreateWindow explained: // szWindowClass: the name of the application // szTitle: the text that appears in the title bar // WS_OVERLAPPEDWINDOW: the type of window to create // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) // 500, 100: initial size (width, length) // NULL: the parent of this window // NULL: this application dows not have a menu bar // hInstance: the first parameter from WinMain // NULL: not used in this application HWND hWnd = CreateWindow( |
|
|
C/C++ Quellcode |
1 2 |
static TCHAR szWindowClass[] = _T("win32app"); static TCHAR szTitle[] = _T("Win32 Guided Tour Application"); |
Das bekommt doch fast jeder Anfänger hin, selbst, wenn er keinen Plan hat was er kopiert.