JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Vollbildmodus stürzt bei Randklick ab

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 06.04.2006, 18:07    Titel: Vollbildmodus stürzt bei Randklick ab Antworten mit Zitat

Hi,

habe folgendes Problem:

Wenn ich mein Programm im Vollbildmodus starte funktioniert das zwar tadellos aber die windowsfenster funktionen scheinen noch nicht unterbunden zu sein. so kann ich an den rand klicken und auf einmal die fenstergröße verändern, kann auch sein das das prog dann ganz auf den normalen windows desktop umspringt. danach habe ich keine change mehr ins prog zurück zu kommen, oder sehe dann nur schwarz bzw weiß.

Möchte irgendwie erreichen das mein prog wirklich exklusive im
vollbildmodus läuft ganz gleich was ich mit der maus anstelle.
Ihr versteht sicher was ich meine. wie kann ich das erreichen? gibt
denke ich einen simplen parameter den ich nur noch zu übergeben habe.
verwende folgenden aufbau:

wahrscheinlich ist der parameter bereits irgendwo falsch deklariert,
bin für jeden tip dankbar. könnt das ja auch selber recht einfach
mit jedem blankoprogramm austesten

Code:



HWND CreateMainWindow(HINSTANCE hInstance)  // Fenster erzeugen
{
    WNDCLASSEX wndClass =
    {
        sizeof(WNDCLASSEX),                                 // Größe angeben
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,    // Standardstile       
        MessageHandler,                                     // Callback-Funktion
        0,                                                  // Zusätzliche Angaben
        0,                                                  // nicht benötigt
        hInstance,                                          // Anwendungsinstanz
        LoadIcon(NULL, IDI_WINLOGO),                        // Windows-Logo
        LoadCursor(NULL, IDC_ARROW),                        // Normaler Cursor
        (HBRUSH)GetStockObject(WHITE_BRUSH),                // Weißer Pinsel
        NULL,                                               // kein Menü
        "WindowClass",                                      // Der Name der Klasse
        LoadIcon(NULL, IDI_WINLOGO)                         // Windows Logo
    };


    RegisterClassEx(&wndClass); // Klasse registrieren

    return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                          "WindowClass",          // Klassenname
                          "M.Geiger´s FREAKWAVE",              // Fenstertitel
                          WS_OVERLAPPEDWINDOW |   // Fenster
                          WS_VISIBLE,             // Eigenschaften
                          0, 0,                   // Anfangsposition
                          SCREENX, SCREENY,       // und Größe des Fensters
                          NULL,                   // Handle des Elternfensters
                          NULL,                   // Handle des Menüs
                          hInstance,              // Anwendungsinstanz
                          NULL);                  // wird nicht benötigt
}

............................

BOOL CDirect3D::Init(HWND hWnd, BOOL bWindowed) // Direct 3D initialisieren
{

    m_D3D = Direct3DCreate9(D3D_SDK_VERSION); // Direct3D-Objekt erzeugen
 
    D3DPRESENT_PARAMETERS PParams;   // Parameter für den Modus festlegen
    ZeroMemory(&PParams,sizeof(PParams));
    PParams.SwapEffect       = D3DSWAPEFFECT_DISCARD;
    PParams.hDeviceWindow    = hWnd;
    PParams.Windowed         = bWindowed;//TRUE;//bWindowed; // Hier umschalten Zwischen Vollbild oder Fenster
    PParams.BackBufferWidth  = SCREENX;
    PParams.BackBufferHeight = SCREENY;
    PParams.BackBufferFormat = D3DFMT_A8R8G8B8;

    HRESULT hr;
   
    if(FAILED(hr = m_D3D->CreateDevice(    // Direct3D-Gerät anlegen
                                 D3DADAPTER_DEFAULT,
                                 D3DDEVTYPE_HAL,
                                 hWnd,
                                 D3DCREATE_HARDWARE_VERTEXPROCESSING,//D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                 &PParams,
                                 &m_3DDevice)))
    {
      // Fehler !
    }


    CreateFont();    // Schrift erzeugen
 
    // Zeiger auf dem Hintergrundpuffer holen
    m_3DDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO, &m_BackBuffer);

    return TRUE;
}




_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 06.04.2006, 18:11    Titel: Antworten mit Zitat

Hallo

Bei einer Vollbild-Anwendung würde ich den Windowsstyle auf WS_POPUP stellen:
CPP:
return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                          "WindowClass",          // Klassenname
                          "M.Geiger´s FREAKWAVE",              // Fenstertitel
                          WS_POPUP,
                          0, 0,                   // Anfangsposition
                          SCREENX, SCREENY,       // und Größe des Fensters
                          NULL,                   // Handle des Elternfensters
                          NULL,                   // Handle des Menüs
                          hInstance,              // Anwendungsinstanz
                          NULL);


MfG 51m0n
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 06.04.2006, 18:26    Titel: vielen dank! Antworten mit Zitat

bin immer wieder positiv überrascht wie schnell man hier geholfen wird Wink
jetzt funktioniert mein vollbildmodi genauso wie ich mir vorgestellt habe.
egal wohin ich klicke. vielen dank!

grüße,
Laughing
Rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 07.04.2006, 14:09    Titel: Antworten mit Zitat

Aber weisst du denn nun auch weshalb er abschmiert? 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
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 07.04.2006, 14:27    Titel: tut er nicht mehr Antworten mit Zitat

tut er jetzt auch nicht mehr, insofern ich nur einen bildschirm aktiv habe,
früher oder wenn ich den zweiten bildschirm nicht deaktiviert habe, geht er aus dem programm sobald ich daneben klicke. es läuft dann auch stabil weiter aber die grafikdarstellung fährt nicht mehr hoch wenn ich es wieder aktiv mache. irgend ein direct x problem vielleicht, aber juckt mich jetzt ja nicht mehr, das programm bleibt tuschur im vollbildmodus bis es beendet wird, so soll es ja auch sein.
grüße und danke nochmal
rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 07.04.2006, 14:38    Titel: Antworten mit Zitat

Sowas nennt man DeviceLost Wink
Das ist genau das gleiche wie das berüchtigte Alt+Tab Problem, du solltest es also trotzdem beheben. Falls du mit DirectDraw arbeitest solltest du dich ma auf www.germangamedev.de umschauen da gibts ein Tutorial dazu Smile
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
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 -> Entwicklung 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