JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=fed80edf345daca39eb901b6a33edc59Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Probleme mit Kapitel 11

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Diablo
Mini JLI'ler



Anmeldedatum: 26.04.2004
Beiträge: 3

Medaillen: Keine

BeitragVerfasst am: 26.04.2004, 10:20    Titel: Probleme mit Kapitel 11 Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Hasenfuß
Senior JLI'ler


Alter: 37
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 26.04.2004, 11:45    Titel: Antworten mit Zitat

Hast du eine Win32 Anwendung und nicht eine Konsolenanwendung erstellt? Wenn ja, was für ein Fehler wird genau angezeigt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Diablo
Mini JLI'ler



Anmeldedatum: 26.04.2004
Beiträge: 3

Medaillen: Keine

BeitragVerfasst am: 26.04.2004, 11:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 26.04.2004, 12:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Diablo
Mini JLI'ler



Anmeldedatum: 26.04.2004
Beiträge: 3

Medaillen: Keine

BeitragVerfasst am: 26.04.2004, 12:18    Titel: Antworten mit Zitat

Danke das war der Felher Very Happy , so dann kann ich mit dem Buch weitermachen und diesmal pass ich auf das ich sowas immer gleich schreibe Embarassed .
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum