JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Kapitel 19 (Fenster schließt sich gleich nach dem öffnen)

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



Anmeldedatum: 22.11.2003
Beiträge: 30
Wohnort: München
Medaillen: Keine

BeitragVerfasst am: 22.11.2003, 23:52    Titel: Kapitel 19 (Fenster schließt sich gleich nach dem öffnen) Antworten mit Zitat

Hallo,
ich wollte bloß fragen, ob ich hier (Kapitel 19 "Der erste Einsatz von DirectX Graphics") etwas falsch gemacht habe Embarassed , da wenn ich mein programm kompiliert habe es nur kurz erscheint und sich dann wieder schließt
Code:

#include <d3d9.h>
#include <d3dx9.h>

//Anwendungsfenster erzeugen:
HWND CreateMainWindow(HINSTANCE hInstance);

//Callbackfunktionen zur Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg,
                        WPARAM wParam,
                        LPARAM lParam);

//globale Variable für das Fenster-Handle:
HWND hWnd = 0;

LPDIRECT3D9 lpD3D = NULL;
LPDIRECT3DDEVICE9 lpD3DDevice = NULL;

//Direct3D initialisieren
BOOL InitDirect3D(HWND hWnd);

// Direct3D-Objekte wieder freigeben
void CleanUpDirect3D(void);




int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR     lpCmdLine,
                   int       nCmdShow )
{
   hWnd = CreateMainWindow(hInstance);

   //Fehler? (=0)

   if(0 == hWnd)
   {
      MessageBox(0, "Fenster konnte nicht erzeugt werden!!!", "FEHLER IN DER ANWENDUNG", MB_OK);
      return 0;
   }
   if(!InitDirect3D(hWnd))
   {
   
      MessageBox(0, "Initialisierung von DirectX fehlgeschlagen", "FEHLER IN DER ANWENDUNG", MB_OK);   
      return -1;
   }
   
   //Nachrichtenstruktur
   MSG msg;

   //Wiederholen bis WM_Quit
   while(GetMessage(&msg,NULL,0,0))
   {
      //Nachrichten an die Callback-Funktion schicken
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   return 0;
}

HWND CreateMainWindow(HINSTANCE hInstance)
{
   WNDCLASSEX wndClass = {
      sizeof(WNDCLASSEX),
         CS_DBLCLKS | CS_OWNDC |
         CS_HREDRAW | CS_VREDRAW,
         MessageHandler,
         0,
         0,
         hInstance,
         LoadIcon(NULL, IDI_WINLOGO),
         LoadCursor(NULL, IDC_ARROW),
         (HBRUSH)GetStockObject(WHITE_BRUSH),
         NULL,
         "WindowClass",
         LoadIcon(NULL, IDI_WINLOGO)
   };

RegisterClassEx(&wndClass);

return CreateWindowEx(
                 NULL,
                 "WindowClass",
                 "DirectXGraphics",
                 WS_VISIBLE | WS_OVERLAPPEDWINDOW,
                 200, 100,
                 800,
                 600,
                 NULL,
                 NULL,
                 hInstance,
                 NULL);
}

LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg,
                        WPARAM wParam, LPARAM lParam)
{
   switch(msg)
   {
   case WM_DESTROY:
            CleanUpDirect3D();
            PostQuitMessage(0);
            return 0;
         break;
   case WM_PAINT:
         break;
   }

   return (DefWindowProc(hWnd, msg, wParam, lParam));
}




BOOL InitDirect3D(HWND hWnd)
{
   lpD3D = Direct3DCreate9(D3D_SDK_VERSION);
   
   if(NULL == lpD3D)
   {
      MessageBox(0, "Initialisierung von DirectX fehlgeschlagen_1", "FEHLER IN DER ANWENDUNG", MB_OK);
      return FALSE;
   }

   D3DPRESENT_PARAMETERS PParams;
   ZeroMemory(&PParams,sizeof(PParams));

   PParams.SwapEffect         = D3DSWAPEFFECT_DISCARD;
   PParams.hDeviceWindow      = hWnd;
   PParams.Windowed         = TRUE;

   PParams.BackBufferWidth      = 800;
   PParams.BackBufferHeight   = 600;
   PParams.BackBufferFormat   = D3DFMT_A8R8G8B8;

   if(FAILED(lpD3D->CreateDevice(
      D3DADAPTER_DEFAULT,
      D3DDEVTYPE_HAL,
      hWnd,
      D3DCREATE_HARDWARE_VERTEXPROCESSING,
      &PParams,
      &lpD3DDevice)))
   {
      //MessageBox(0, "Initialisierung von DirectX fehlgeschlagen_2", "FEHLER IN DER ANWENDUNG", MB_OK);
      return FALSE;
   }

   return TRUE;

}

// Direct3D Objekte freigeben
void CleanUpDirect3D(void)
{
    // testen, ob die Objekt angelegt
    // wurden und ggf. freigeben
    if(NULL != lpD3DDevice)
    {
        lpD3DDevice->Release();
        lpD3DDevice = NULL;
    }

    if(NULL != lpD3D)
    {
        lpD3D->Release();
        lpD3D = NULL;
    }
}


Ich habe schon 2 MessageBoxen eingebaut um den Ort des Fehlers zu lokalisieren.
Dabei ist herausgekommen, dass er hier irgendwo sein müsste:
Code:

...

   D3DPRESENT_PARAMETERS PParams;
   ZeroMemory(&PParams,sizeof(PParams));

   PParams.SwapEffect         = D3DSWAPEFFECT_DISCARD;
   PParams.hDeviceWindow      = hWnd;
   PParams.Windowed         = TRUE;

   PParams.BackBufferWidth      = 800;
   PParams.BackBufferHeight   = 600;
   PParams.BackBufferFormat   = D3DFMT_A8R8G8B8;

   if(FAILED(lpD3D->CreateDevice(
      D3DADAPTER_DEFAULT,
      D3DDEVTYPE_HAL,
      hWnd,
      D3DCREATE_HARDWARE_VERTEXPROCESSING,
      &PParams,
      &lpD3DDevice)))
   {
      //MessageBox(0, "Initialisierung von DirectX fehlgeschlagen_2", "FEHLER IN DER ANWENDUNG", MB_OK);
      return FALSE;
   }
...


kann mir irgendjemand helfen Question
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 23.11.2003, 07:34    Titel: Re: Kapitel 19 (Fenster schließt sich gleich nach dem öffnen Antworten mit Zitat

da-harry hat Folgendes geschrieben:
Code:
...

   D3DPRESENT_PARAMETERS PParams;
   ZeroMemory(&PParams,sizeof(PParams));

   PParams.SwapEffect         = D3DSWAPEFFECT_DISCARD;
   PParams.hDeviceWindow      = hWnd;
   PParams.Windowed         = true; [b]<-- das hier ist eine bool und keine BOOL Variable.[/b]

   PParams.BackBufferWidth      = 800;
   PParams.BackBufferHeight   = 600;
   PParams.BackBufferFormat   = D3DFMT_A8R8G8B8;

   if(FAILED(lpD3D->CreateDevice(
      D3DADAPTER_DEFAULT,
      D3DDEVTYPE_HAL,
      hWnd,
      D3DCREATE_HARDWARE_VERTEXPROCESSING,
      &PParams,
      &lpD3DDevice)))
   {
      //MessageBox(0, "Initialisierung von DirectX fehlgeschlagen_2", "FEHLER IN DER ANWENDUNG", MB_OK);
      return FALSE;
   }
...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
da-harry
Mini JLI'ler



Anmeldedatum: 22.11.2003
Beiträge: 30
Wohnort: München
Medaillen: Keine

BeitragVerfasst am: 24.11.2003, 12:43    Titel: Danke Antworten mit Zitat

Danke Very Happy ,
bin noob, hab gerade erst zum programmieren angefangen! Embarassed Embarassed
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
City Hunter
Super JLI'ler


Alter: 39
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 20.04.2004, 18:35    Titel: Hi Antworten mit Zitat

Hi ne frage haste dir denn Text ausem Buch abgeschrieben oder aus der Cd mit denn Beispielen Question
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Kronos
Senior JLI'ler



Anmeldedatum: 19.03.2004
Beiträge: 290

Medaillen: Keine

BeitragVerfasst am: 20.04.2004, 18:56    Titel: Antworten mit Zitat

Detektiv City Hunter! Is gut nun, Hunter, wir kennen alle dein Problem
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
City Hunter
Super JLI'ler


Alter: 39
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 20.04.2004, 19:03    Titel: Antworten mit Zitat

Kronos hat Folgendes geschrieben:
Detektiv City Hunter! Is gut nun, Hunter, wir kennen alle dein Problem


Ne ich habe das Problem wenn ich die Codes ausem Buch nehme kommen bei mir 27 Fehler und wenn ich mir die Beispiel cd anschaue sind da code drin die ich im Buch nicht finede Crying or Very sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
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