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

Anonymous

unregistriert

11

15.02.2004, 12:18

Hallo Maxi,

wo muss ich die denn aufrufen? evtl in meiner GetMessage Schleife?

Ich habe sie erstmal genau nach dem Erstellen des Fensters geschrieben, dies hat keine Auswirkungen, das Fenster wird immer noch nicht richtig angezeigt.

12

15.02.2004, 16:32

Zitat von »"Maxi"«

du hast vergessen ShowWindow() und UpdateWindow aufzurufen:

Quellcode

1
2
ShowWindow(g_hWnd, SW_SHOW);
UpdateWindow(g_hwdn);
Wenn man WS_VISIBLE benutzt brauch man diese Funktionen nicht aufrufen.
Hast du WS_OVERLAPPEDWINDOW zu WS_VISIBLE dazugepackt? Sonst weis Windows nicht wie das Fenster ausehen soll und was für Grundfunktionen das Fenster haben soll.

Ich hab mir auch noch mal deine Fensterfunktion angesehen. Du hast vergessen di DefWindowProc Funktion aufzurufen. Ganz böse ;D

Hier mal die Änderungen. Mit denen sollte es klappen.
a) CreateWindow Funktion:

Quellcode

1
2
3
4
5
6
7
8
9
10
g_hWindow = CreateWindowEx(   NULL, 
      "WinClass01", 
      "DirectX9", 
      WS_VISIBLE | WS_OVERLAPPEDWINDOW, 
      10,10, 
      200,200, 
      NULL, 
      NULL, 
      hInstance, 
      NULL );

b) Fensterfunktion:

Quellcode

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
LRESULT CALLBACK WindowProc2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) 
{ 
   PAINTSTRUCT ps; // used in WM_PAINT 
   HDC hdc; // handle to a device context 
    
   switch(msg) 
   { 
      case WM_CREATE:      { 
                        return(0); 
                     } 
                     break; 
       
      case WM_PAINT:      { 
                        hdc = BeginPaint(hwnd,&ps); 
                        EndPaint(hwnd,&ps); 
                        return(0); 
                     } 
                     break; 
       
      case WM_DESTROY:   { 
                        PostQuitMessage(0); 
                        return(0); 
                     } 
                     break; 
    
      default:         break; // kein break aufrufen, sondern DefWindowProc
                   return DefWindowProc(hwnd, msg, wparam, lparam);
   } 
  return 0; // Dummy, sonst meckert der Compiler :)
}
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

13

15.02.2004, 20:33

Hallo,

endlich funktioniert es, ich habe nun tatsächlich ein Fenster zu stande gebracht :-)

Ich danke allen hier, die mir geholfen haben!

Beste Grüsse,
Timo

Werbeanzeige