Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.05.2009, 16:09

Fullscreen anwendung lässt sich nicht minimieren

ne ganz dumme frage:

warum lässt sich meine fullscreen d3d anwendung nicht minieren?
wenn ich win+d drücke flackert kurz die startleiste, wird dann aber sofort wieder überdeckt. Ich initialisiere D3D ganz normal und rufe dann in der Spielschleife die BeginScene und EndScene funktionen auf. muss ich vielleicht was in der nachrichtenbehandlung des fensters ändern?

2

19.05.2009, 16:34

Siehe Lost- und ResetDevice...
fka tm

3

19.05.2009, 16:50

das ist das problem, ich wollte das fenster minimieren, nicht maximieren um meine neuen reset funktionen zu testen ;)

4

19.05.2009, 19:08

Sollte kein Problem darstellen, oder?
Minimize, Maximize, Fenstergröße wird geändert!?
fka tm

5

19.05.2009, 21:40

ich glaube du verstehst mein problem nicht :? Früher hatte ich immer das Problem das ich es nicht geschafft habe das Device zu resetten, wenn ich das Spiel minimiert habe, z.B. wegen ICQ oder sowas. Jetzt schaff ich es nichtmal mehr das Spiel zu minimieren, nichtmal mit dem Taskmanager.

6

19.05.2009, 21:44

Zeig mal den relevanten Code.
Besonders den, wo du das Fenster erstellst.
fka tm

7

19.05.2009, 21:48

Überprüfe doch, ob fullscreen = FALSE und wenn ja, dann zeigst du den
Desktop und den Cursor an.
Glaube das geht ungefähr so:

C-/C++-Quelltext

1
2
ChangeDisplaySettings(NULL,0);      // Wechsle zum Desktop

ShowCursor(TRUE);               // Zeige den Cursor


Dann müssen die Devices mein ich noch auf NULL gesetzt werden.
MfG Shiver!

„Ideen sind nur Ausgangspunkte. Um zu wissen, was man zeichnen will, muss man zu zeichnen anfangen.“ Pablo Picasso

Ibot Development - Mein Weg zum eigenen 2D RPG

8

19.05.2009, 21:52

Autsch, Shiver! :?
fka tm

9

19.05.2009, 21:55

Ich kenn mich mit DX nicht aus und bin auch erst bei den Anfängen
von OGL, hab mir bloß gedacht, dass es vielleicht richtig sein könnte. :lol:
MfG Shiver!

„Ideen sind nur Ausgangspunkte. Um zu wissen, was man zeichnen will, muss man zu zeichnen anfangen.“ Pablo Picasso

Ibot Development - Mein Weg zum eigenen 2D RPG

10

19.05.2009, 22:08

fenster wird so erstellt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    return DefWindowProc(hwnd, msg, wParam, lParam);
}
HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass =
    {
        sizeof(WNDCLASSEX),
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,
        MessageHandler,
        0,
        0,
        hInstance,
        0,
        0,
        (HBRUSH)GetStockObject(WHITE_BRUSH),
        NULL,
        "WindowClass",
        0
    };

    RegisterClassEx(&wndClass);

    return CreateWindowEx(      NULL,
                                "WindowClass",
                                "Test Project",
                                WS_POPUP |
                                WS_VISIBLE,
                                0, 0,
                                800, 600,
                                NULL,
                                NULL,
                                hInstance,
                                NULL);
}


spielschleife sieht so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
while(true)
    {
        Keyboard->Update();
        if(Keyboard->IsDown("ESC")) break;
        if(Keyboard->Pressed("F1")) Animation->Start();
        if(Keyboard->Pressed("F2")) Animation->Stop();
        if(Keyboard->Pressed("F3")) Animation->Reset();

        D3D->StartScene();
        Font->Print("this is a test", CENTER, CENTER, 0, 0);
        D3D->EndScene();
        Sleep(1);

    }

Werbeanzeige