|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Diablo Mini JLI'ler
Anmeldedatum: 26.04.2004 Beiträge: 3
Medaillen: Keine
|
Verfasst am: 26.04.2004, 10:20 Titel: Probleme mit Kapitel 11 |
|
|
Ich habe mir vor einem Jahr oder so das Buch Jetzt lerne ich Spieleprogrammierung mit DirectX und Visual C++ gekauft, hatte aber einige Probleme damit gehabt das ich es erstmal weggelegt hatte, vor nen paar Wochen hab ich wieder damit angefangen und bin jetzt bei Kapitel 11, mein Problem ist das wenn ich den gesamten Code ausm Buch abschreibe, Der PC wenn ich das Programm kompiliere und es starte mir das Fehler Fenster zeigt wo drinsteht das er das Fenster nicht erzeugend konnte. Könnte mir bitte jemand helfen?
Edit: Ich würd mir ja den Code von der CD anschauen aber die find ich leider nicht mehr.
Hier ist noch der Code
Code: | #include <windows.h>
//Anwendungfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);
//Callback Funktion zur Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg,
WPARAM wParam,
LPARAM lParam);
//globale Variable für Fensterhandle
HWND hWnd = 0;
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
//Fenster erzeugen und Handle speichern
hWnd = CreateMainWindow(hInstance);
//Wenn der Rüchgabewert 0 ist, ist ein Fehler aufgetreten
if (0 == hWnd)
{
MessageBox(0,"Fenster konnte nicht erzeugt werden",
"Fehler",MB_OK);
return 0;
}
//Struktur, in der Informationen zur Nachrichten pespeichert werden
MSG msg;
//Diese Schleife läuft bis die Nachricht WM_Quit empfangen wird
while(GetMessage(&msg,NULL,0,0))
{
//Nachricht an die Callbackfunktion senden
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//Rückgabewert an Windows
return 0;
}
//Anwendungfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance)
{
WNDCLASSEX wndClass; //WNDCLASSEX Struktur
//Struktur initialisieren
wndClass.cbSize = sizeof(WNDCLASSEX); //Größe angeben
wndClass.style = CS_DBLCLKS | CS_OWNDC | //Standart
CS_HREDRAW | CS_VREDRAW; //Stile
wndClass.lpfnWndProc = MessageHandler; //CALLback-Funktion angeben
wndClass.cbClsExtra = 0; //Zusätzliche Angaben
wndClass.cbWndExtra = 0; //werden nicht benötigt
wndClass.hInstance = hInstance; //Anwendungsinstance
//Weisser Pinsel, zum füllen des Fensterhintergrundes
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
//Standart-Mauscursor verwenden
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
//Das Fenster soll kein Menü haben
wndClass.lpszMenuName = NULL;
//Der Name der Fensterklasse, wird noch beim Aufruf von CreateWindowEx benötigt
wndClass.lpszClassName = "WindowClass";
//Icon für das Fenster festlegen
wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
//Fensterklasse regestrieren, damit sie von CreateWindowEx verwendet werden kann
RegisterClassEx(&wndClass);
//Der Rückgabewert von CreateWindowEx ist auch der Rückgabewert der Funktion
return CreateWindowEx(
NULL, //Ohne erweiterte Stile
"WindowsClass", //Klassenname
"Mein erstes Fenster", //Fenstername
WS_OVERLAPPEDWINDOW | //Fenster
WS_VISIBLE, //Eigenschaften
0, 0, //Anfangsposition
400, 300, //Größe
NULL, //Handle der Elternfenster
NULL, //Handle des Menüs
hInstance, //Anwendungs-instance
NULL); //nicht benötigt
}
//Callback Funktion zur Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg,
WPARAM wParam,
LPARAM lParam)
{
//testen, um welche Nachricht es sich handelt
switch(msg)
{
//wenn das Fenster geschlossen wird, wird WM_QUIT gesendet, um das Programm zu beenden
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
}
//Wenn wir uns nicht um die Nachricht gekümmert haben,
//wird sie an die Standartnachrichtenverarbeitung von
//Windows weitergeleitet
return (DefWindowProc(hwnd, msg, wParam, lParam));
} |
|
|
Nach oben |
|
|
Hasenfuß Senior JLI'ler
Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 26.04.2004, 11:45 Titel: |
|
|
Hast du eine Win32 Anwendung und nicht eine Konsolenanwendung erstellt? Wenn ja, was für ein Fehler wird genau angezeigt? |
|
Nach oben |
|
|
Diablo Mini JLI'ler
Anmeldedatum: 26.04.2004 Beiträge: 3
Medaillen: Keine
|
Verfasst am: 26.04.2004, 11:57 Titel: |
|
|
Ja es ist eine Win32 Anwendung und er erstellt das Fehlerfenster mit dem text das Fenster konnte nicht erstellt werden, was hier auch im Code steht: Code: |
//Wenn der Rüchgabewert 0 ist, ist ein Fehler aufgetreten
if (0 == hWnd)
{
MessageBox(0,"Fenster konnte nicht erzeugt werden",
"Fehler",MB_OK);
return 0;
} |
|
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 26.04.2004, 12:14 Titel: |
|
|
Der Klassenname ist einmal WindowClass und weiter unten WindowsClass. Daran kann es schon liegen. Ansonsten kannst du dir den Quellcode auch runterladen, link gibt es unter News.
C. |
|
Nach oben |
|
|
Diablo Mini JLI'ler
Anmeldedatum: 26.04.2004 Beiträge: 3
Medaillen: Keine
|
Verfasst am: 26.04.2004, 12:18 Titel: |
|
|
Danke das war der Felher , so dann kann ich mit dem Buch weitermachen und diesmal pass ich auf das ich sowas immer gleich schreibe . |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|