[Win32] Multi-Window
Übersicht

![]() |
Der EisvogelBetreff: [Win32] Multi-Window |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo liebe Community
Hiermit stelle ich mein erstes Modul "Multi-Window" vor. Was ist Multi-Window? Mutli-Window simuliert verschiede Grafikbereiche auf dem Bildschirm, die unterschiedlich genutzt werden können. z.B.: Um mehrere Fenster zu verwenden. Diese muss dann man allerdings selber malen z.B.: mit einer Grafik-GUI. Wie funktioniert Multi-Window? Die Anwendung von Multi-Window ist relativ einfach. Als erstes muss man Multi-Window natürlich in seinen Code einbinden: BlitzMax: [AUSKLAPPEN] Import Eisvogel.MultiWindow
Als nächstes muss man Multi-Window initialisieren. Dazu dient folgender Befehl: BlitzMax: [AUSKLAPPEN] InitMultiWindow(title:String)
Der Befehl ersetzt auch gleichzeitig den Graphics-Befehl. Dieser Befehl erstellt ein Grafik-Fenster mit der Größe des Bildschirms und dem angegebenen Titel und blendet sofort den gesammten Bildbereich aus. Deswegen kann man das Fenster nach diesem Befehl auch nicht sehen. Nun fügt man seine Grafikbereiche zu Multi-Window hinzu. Dies geschiet mit folgendem Befehl: BlitzMax: [AUSKLAPPEN] AddMultiWindow:TMWindow(x:Int, y:Int, width:Int, height:Int) Dieser Befehl erstellt einen Bereich an dere Stelle "x,y" mit der Größe "width*height" und liefert ein TMWindow-Handle auf den erstellten Grafikbereich zurück. Will man diesen Bereich nun ändern, wenn man z.B.: darin ein Fenster malt und dieses verschiebt, dann kann man dies mit diesem Befehl bewerkstelligen: BlitzMax: [AUSKLAPPEN] ChangeMultiWindow(mwnd:TMWindow, x:Int, y:Int, width:Int, height:Int) Der Parameter "mwnd" erwartet ein TMWindow-Handle auf den zu ändernden Grafikbereich. Die restlichen Parameter verhalten sich wie bei "AddMultiWindow". Möchte man nun einen Grafikbereich wieder löschen, so benutzt man folgenden Befehl: BlitzMax: [AUSKLAPPEN] RemoveMultiWindow(mwnd:TMWindow) Der Parameter "mwnd" erwartet ebenfalls ein TMWindow-Handle auf den zu löschenden Grafikbereich. Damit die Änderungen der letzten 3 Befehle wirksam werden ruft man diesen Befehl auf: BlitzMax: [AUSKLAPPEN] UpdateMultiWindow(redraw:Byte = False) Wenn der Parameter "redraw" gleich False ist, so werden die Änderungen erst bei einem Fenster-Redraw-Befehl wie Flip wirksam. Andernfalls werden die Änderungen sofort sichtbar. Ersteres ist allerdings zu bevorzugen. Um die Breite und Höhe von Multi-MultiWindow zu ermitteln weren folgende Befehle verwendet: BlitzMax: [AUSKLAPPEN] MultiWindowWidth:Int() Beispiel BlitzMax: [AUSKLAPPEN] SuperStrict Download Einmal ein Download, der schon die kompilierte Version enthält: Download - Multi-Window Und hier einmal der Code zum selber Kompilieren, falsl der Link mal Down sein sollte: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mir den Text jetzt 3 mal durchgelesen, und nicht verstanden, was das ding tut oder wozu es gut sein soll. | ||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
funktioniert bei mir unter xp nicht richtig, das weiße rechteck wird nicht gelöscht und zieht so einen schweif von weißen rechtecken hinter sich her, die nicht verschwinden wenn das programm beendet wird und erst von einem anderen windowsfenster wieder übermalt werden müssen | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Goodjee: Versuch mal UpdateMultiWindow(True), dann wird das Fenster sofort neu gemalt. Bei ging es auf XP-Rechner.
@BtbN: Dieses Modul gibt dir die Möglichkeit verschiedene rechteckige Bereiche auf dem Bildschirm zu benutzten, und den Rest durchsichtig zu machen. Für mal das Sample aus sofern du Windows hat. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe was es macht, aber den Zweck dahinter sehe ich immer noch nicht. Nenn doch mal ein paar Einsatzbeispiele für die Du es nehmen würdest. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
z.B.: Bei einer GUI um mit mehreren Fenstern effektiver zu sein. Oder man einfach so mehrere Eingabeflächen braucht. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich mehrere Eingabefenster benötige wäre mein Mittel der Wahl mehrere Fenster zu erstellen ![]() Das wäre dann nämlich auch eine schön sauber gekapselte Geschichte. Wenn ich alles auf eine Fläche haue wird das ja ein Riesenkuddelmuddel - ich erlaube ja quasi jeder Ausgabe aufzutauchen wo sie grade will, und wenn ich da bei den Koordinaten einen Fehler mache provoziere ich abstruse Bugs. Versteh mich nicht falsch, ich will dir das Teil nicht kleinreden, aber ich finde einfach keine Anwendung bei der es mir nützlich erschiene. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group