Fenstergröße ändern funktioniert nicht ganz
Übersicht

![]() |
EPSBetreff: Fenstergröße ändern funktioniert nicht ganz |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group