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

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

1

17.03.2004, 14:02

Das Fenster mit der Tribase Engine

Hi,
ich hab ein Problem bezüglich der Tribase Engine. Wenn man ein Fenster mit RegisterClass(...) registriert, muss man wenn es heruntergefahren werden soll, doch wieder mit UnregisterClass(...) gelöscht werden?

Lieg ich da richtig, aber in der Tribase Engine, gibt es kein Unregister Class, das die regsitrierte Klasse (wird in tbDirect3D registriert) löscht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

17.03.2004, 15:33

Jo, danke, hast recht.
Habs geändert.

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

17.03.2004, 18:02

Ich hab in diesem Zusammenhang mal noch eine andere Frage: Und zwar zum Minimieren und Maximieren von Fenstern durch z.B. ALT + TAB.

David hat das Problem ja so gelöst, das alles heruntergefahren wird, außer der Engine Schnittstelle. Wenn der Bildpuffer nicht angeziegt werden kann, wird alles geklöscht und neu geladen. Ich hab das gleiche Prinzip bei mir auch probiert aber es funktioniert einfach nicht. :rolleyes:

Und eigentlich find ich es auch logisch, das es nicht funktionieren kann :). Da ich ja eine Endlosschleife mit DoMessageLoop(Render(...), Move(...)) habe. Damit wird der Render Befehl ja immer angesprochen, nun wird geprüft ob der Bilpuffer angezeigt werden kann, wenn nicht soll er alles neuladen. Das macht er nun immer. Und ganau das stimmt ja nicht! Ich sehe also ein Bild das immer wieder die Graphik(en) aufbaut. ABER ICH WILL JA dAS FENSTER MINIMIERT HABEN ?!?

Kann man den nicht den MAXIMIEREN Befehl vom Fenster abfangen - WM_MAXIMIZE gibt es aber nicht!
Mit Davidsa Lösung waäre ich auch zufriegen, allerdings verstehe ich nicht warum es bei z.B. Brakeanoid funktioniert???? :crying:

4

17.03.2004, 19:31

Du kannst die Messages WM_SETFOCUS und WM_KILLFOCUS benutzen. Wenn das Fenster Minimiert wird verliert es auch den Focus.

Ich hab das Problem so gelöst, das wenn das ein Fenster den Focus verliert, keine Aktionen, außer der bearbeitung der Fensternachrichten, mehr ausgeführt werden. Frage allso einfach immer ab

Quellcode

1
2
3
4
5
if(bFocus)
{
  // Move Frame
  // Render Frame
}
Ist aber nicht die beste Lösung, aber eine mögliche ;)
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

17.03.2004, 20:24

ne das ist schon ein ganz guter Ansatz :). Vor allem weil ich den von David nicht verstehe ;D

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

18.03.2004, 07:28

Irgendwie wird meinem Fenster zwar eine WM_SETFOCUS Nachricht geschickt, aber keine WM_KILLFOCUS, weisst du warum?

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

7

18.03.2004, 08:13

ich hab das Problem jetzt etwas anders gelöst, ich fang das Minimieren per WM_ACTIVATE ab und das Maximieren mit dem WM_SETFOCUS, das funktioniert jetzt prima.

Nur eine Frage hab ich noch, wie kann ich ein Fenster z.B. durch SendMessage(...) zum Minimieren bekommen?, wenn ich eine Schaltfläche drücke

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

8

18.03.2004, 16:20

Nur so zur Vollständigkeit:

WM_SYSCOMMAND
A window receives this message when the user chooses a command from the window menu (formerly known as the system or control menu) or when the user chooses the maximize button, minimize button, restore button, or close button.

WM_SYSCOMMAND
uCmdType = wParam; // type of system command requested
xPos = LOWORD(lParam); // horizontal position, in screen coordinates
yPos = HIWORD(lParam); // vertical position, in screen coordinates

also minimiert der Befehl:

SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, MAKEWORD(0, 0))

unser Fenster :huhu:

Werbeanzeige