JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

ALT+TAB problem

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



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 06.09.2006, 15:09    Titel: ALT+TAB problem Antworten mit Zitat

Hallo ,
ich habe das gut ALT+ TAB Problem.
ich hab folgenden code geschrieben,was fehlt mir denn noch:
Code:

   while(msg.message != WM_QUIT) 
   { 
      //Windows message 
      if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) 
      { 
         TranslateMessage(&msg); 
         DispatchMessage(&msg); 
      } 
        else
        {     
         if(pDevice.TestCooperativeLevel()) 
         { 
            while(pDevice.TestCooperativeLevel() != 1) 
            {  //hWnd
               while(PeekMessage(&msg,hWnd,0,0,PM_REMOVE)) 
               { 
                  TranslateMessage(&msg); 
                  DispatchMessage(&msg); 
               } 

               Sleep(100); 
            } 
            bWinActive = false;

            
            pDevice.Reset();
                       m_lpGraphic->OnLostDevice();
         m_lpGraphic->OnResetDevice();
         pDevice.Restore(); // alle texturen laden
         } 

         Render();
         
        }
    }



kann mir jemand helfen ??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 06.09.2006, 15:18    Titel: Antworten mit Zitat

Was passiert denn wenn du alt+tab betätigst?

Helfen können wir dir schon wenn genügend Infos vorliegen Wink
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 06.09.2006, 15:32    Titel: Antworten mit Zitat

Die Schelife ist voll komisch, erklär mir die mal bitte.Eignetlihc brauchste doch nur eine ganz normale Mainloop und in die eine Abfrage OnReset oder was weiß ich was, wo du alles wiederherstellst.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 06.09.2006, 15:38    Titel: Antworten mit Zitat

Daran bin wohl ich irgendwie schuld.

Hier der Code: http://www.online-tutorials.net/faq/directx-was-mache-ich-bei-onlostdevice-alt+strg+entf-minimieren/tutorials-t-51-87.html

Hast du alle Objekte reseted wie ich es geschrieben habe? Eine andere Möglichkeit wäre das löschen von allen Objekten (und neuinitialisierung, Patrick meint das das notwendig ist, allerdings machen die DX-Beispiele das auch so wie ich)
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 06.09.2006, 16:12    Titel: Antworten mit Zitat

-stimmt den die reihen folge bei mir ?

- an welcher stelle soll ich die Objekt reseten oder loschen?

- was meinst du mit DX-Beispiele wo finde ich sie ?

Very Happy

danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 06.09.2006, 16:20    Titel: Antworten mit Zitat

Ein Reset funktioniert wohl nicht immer bzw. mit allen Ressourcen, weshalb Löschen und Neuinitialisieren wohl die bessere Möglichkeit ist. Ich teste immer direkt am Anfang der Mainloop, ob meine Ressourcen nocht gültig sind und führe dann gegebenenfalls den Reset durch.

BLOD meinte sicher die Samples im DX-SDK.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 06.09.2006, 17:02    Titel: Antworten mit Zitat

ich muss zugeben ich habe nur ein paar wenige aus dx-sdk gesehen ,die fullscreen benutzen und diese benutzen DXUT.

das kann ich für mich nicht einbauen. Crying or Very sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 06.09.2006, 19:13    Titel: Antworten mit Zitat

hier nochmal der gesamte code,allerdings vereinfacht.

ich weiss nicht was ich da falsch mache aber ALT+TAB geht einfach nicht

kann mir das jemand richtig stellen wäre echt toll

Code:


 while(msg.message != WM_QUIT)
    {
        if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            
         if(Direct3D.TestCooperativeLevel()) 
         { 
            //while(pDXWin.CheckDevice())
            while(Direct3D.TestCooperativeLevel() != 1) 
            {  //hWnd
               while(PeekMessage(&msg,hWnd,0,0,PM_REMOVE)) 
               { 
                  TranslateMessage(&msg); 
                  DispatchMessage(&msg); 
               } 

               Sleep(100); 
            } 
            
            
               lpSprite->OnLostDevice();
            
               Direct3D.Reset();// einfach nur in der Dx Classe m_lpD3DDevice->Reset(&PParams);

               lpSprite->OnResetDevice();
               
            
            
         } 
            Direct3D.BeginScene();

            // Zeichnen des Sprites

            lpSprite->Begin(D3DXSPRITE_ALPHABLEND);

            // Mittelpunkt des Sprite
            D3DXVECTOR3 vCenter(32.0f, 32.0f, 0.0f);

            // Sprite an Position 100, 100 zeichnen
            D3DXVECTOR3 vPosition(100.0f, 100.0f, 0.0f);

            // Farben der Textur sollen nicht veraendert werden
            D3DCOLOR ModulateColor = 0xFFFFFFFF;

            // Sprite zeichnen
            lpSprite->Draw(lpSpriteTexture,
                           NULL,
                           &vCenter,
                           &vPosition,
                           ModulateColor);

            lpSprite->End();

            Direct3D.EndScene();
        }
    }



wie wäre es denn richtig
danke Laughing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
peterbub
JLI'ler



Anmeldedatum: 24.07.2005
Beiträge: 109

Medaillen: Keine

BeitragVerfasst am: 07.09.2006, 17:05    Titel: Antworten mit Zitat

ich habe festgestellt, das mein Reset nicht geht.

Code:

ZeroMemory(&PParams,sizeof(PParams));

   PParams.BackBufferCount = 1;
   PParams.MultiSampleType = D3DMULTISAMPLE_NONE;
   PParams.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
   PParams.EnableAutoDepthStencil = TRUE;
   PParams.AutoDepthStencilFormat = D3DFMT_D16;


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

    PParams.BackBufferWidth  = SCR_WIDTH;
    PParams.BackBufferHeight = SCR_HEIGHT;
    PParams.BackBufferFormat = D3DFMT_X8R8G8B8;

   
   PParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE;

    HRESULT hr;
   
    // Direct3D-Gerät anlegen
    if(FAILED(hr = m_lpD3D->CreateDevice(
                                 D3DADAPTER_DEFAULT,
                                 D3DDEVTYPE_HAL,
                                 hWnd,
                                 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                 &PParams,
                                 &m_lpD3DDevice)))
    {
        // Fehler, Gerät kann nicht angelegt werden
        const char* Err = DXGetErrorDescription9(hr);
 
        DXTRACE_MSG(Err);

        return FALSE;
    }


und wenn ich das resette mit

Code:

 if(FAILED(m_lpD3DDevice->Reset(&PParams)))
        return FALSE;

return true;


bekomme ich false zurück ?

was mach ich denn falsch Crying or Very sad
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