Fenstergröße ändern funktioniert nicht ganz

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

EPS

Betreff: Fenstergröße ändern funktioniert nicht ganz

BeitragDo, Nov 08, 2007 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, vielleicht kann mir einer der erfahrenen Win_Api Programmierer mal aushelfen. Ich hab folgende Funktion geschrieben (nutzt User32.dll Funktionen):

Code: [AUSKLAPPEN]
Function ResizeWindow( width, height, center=False )
;===========================================
; Resize actual Window with or without moving.
;===========================================

   Local SWP_NOMOVE = $2
   Local SWP_NOZORDER = $4
   Local SWP_NOACTIVATE = $10
   
   Local deskwidth  = api_GetSystemMetrics( 16 )
   Local deskheight = api_GetSystemMetrics( 17 )
   
   Local x = ( deskwidth - width - 2 * api_GetSystemMetrics( 7 ) ) / 2
   Local y = ( deskheight - height - 2 * api_GetSystemMetrics( 8 ) ) / 2
   
   If center Then SWP_NOMOVE = 0
   
   api_SetWindowPos( api_GetActiveWindow(), 0, x, y, width, height, SWP_NOMOVE Or SWP_NOZORDER Or SWP_NOACTIVATE )

End Function


Die Funktion ändert die Größe des aktuellen BB Fensters. Soweit so gut. Wenn mein Fenster, was zuvor per Graphics erstellt wurde, verkleinert wird, gibts keine Probleme. Möchte ich es jedoch vergrößern, wird das Fenster nicht mehr aktualisiert, also neue Ausgaben "verpuffen einfach im nichts".

Möglicherweise hängt das damit zusammen das BB ja auch DirectX irgendwie auf die Fenstergröße initialisiert und eine Vergrößerung da nicht so einfach möglich ist. Kann mir da jemand weiter helfen?

Hintergrund der ganzen Geschichte: Ich möchte gerne die Fenstergröße meiner Applikation OHNE Graphics ändern damit ich nicht sämtliche Ressourcen neu laden muß.

Danke schonmal.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.
 

ChristianK

BeitragDo, Nov 08, 2007 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke auch, dass es eher an DirectX liegt. Das gleiche Problem tritt zum Beispiel auch auf, wenn man versucht, mit SetWindowLong das Aussehen des Fensters zu verändern. Ich bin nicht so der Fan von DirectX 7 / DirectDraw, aber vielleicht bringt es ja was, den CooperativeLevel neu zu setzen. Ich werds morgen mal ausprobieren. Smile

PS: Was passiert, wenn man das Fenster verkleinert? Wird das Bild zusammengedrückt oder einfach nur abgeschnitten?
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

EPS

BeitragDo, Nov 08, 2007 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Exakt getestet hab ich das noch nicht, bisher hatte ich lediglich ne Textausgabe gemacht, einmal vor und einmal nach dem Resize. Beim verkleinern kommt eine Ausgabe, beim vergrößern nicht.

PS: Du hast ne Nachricht im ICQ
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.
 

ChristianK

BeitragFr, Nov 09, 2007 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich frage mich gerade, warum du das Fenster überhaupt vergrößern willst. Angenommen, du hast ein Fenster von 800x600. Auf dieser Fläche kann man natürlich irgendwas zeichnen. Aber was soll denn passieren, wenn man das Fenster größer macht? Für den neuen Bereich ist kein Speicher reserviert worden und der einzige Weg wäre, das Primary Surface mit der richtigen Größe neu zu erstellen. Es passiert also das gleiche wie bei Graphics.
Du könntest die Funktion so schreiben, dass nur eine Verkleinerung möglich ist, aber ein Vergrößern der Zeichenfläche ist imo nicht möglich.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragFr, Nov 09, 2007 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch Mal den Viewport neu zu setzen. Das könnte helfen.
Ansonsten: Winblitz 3D kann das, es muss also eine Möglichkeit geben (und sei es direkt Winblitz 3D zu nutzen Smile )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group