[maxGUI] Eventhooks

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

maximilian

Betreff: [maxGUI] Eventhooks

BeitragMi, Apr 26, 2006 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Da Hooks anscheinend die einzige Möglichkeit sind ein Canvas fließend zu resizen, gibt es keine Möglichkeit für mich auf sie zu verzichten. Mit ihnen tauchen für mich allerdings ganz neue Probleme auf. Wink

1.) Ist es sinnvoll (oder Muss), für jedes Fenster eine eigene Hook- und Eventhandler-Funktion zu haben, oder kann man das eleganter lösen? Sobald ein neues Fenster z.B. geöffnet werden muss deaktiviere ich das alte (soll derweil nichts machen), entferne die alte Hook-Funktion und füge die vom neuen Fenster hinzu.

2.) Ist es sinnvoll Fenster schon von vorn herein zu erstellen, und dann zu verstecken (hidden)? Normalerweise hätte der Source so für mich ausgesehen:

Code: [AUSKLAPPEN]

Case EVENT_MENUACTION
...
NewWindow()

...


Function NewWindow

 Local win:TGadget = CreateWindow...

 Repeat
  WaitEvent()
 Forever

End Function


Stattdessen sieht sie ungefähr so aus:

Code: [AUSKLAPPEN]

Global win:TGadget

...

Case EVENT_MENUACTION
...
win = CreateWindow(...
RemoveHook EmitEventHook, MainWindowHook
AddHook EmitEventHook, NewWindowHook
NewWindow()

...

Function NewWindow(event:TEvent)

 Select event.id
 End Select

End Function


Ich bezweifle zwar, dass das verständlich rübergekommen ist, hoffe trotzdem aber auf Antworten. Smile[/code]
Variety is the spice of life. One day ignore people, next day annoy them.
 

Dreamora

BeitragMi, Apr 26, 2006 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Fenster würde ich vorab erstellen und jeweils verstecken und anzeigen auf Bedarf.

Dann kannst du im Hauptcode auf einfache weise garantieren, dass weder fenster erzeugt noch gefreet werden.

Sonst passiert es nämlich durchaus mal das man irgendwo eine referenz falsch setzt und aus versehen etwas freet was man noch gebraucht hätte und dann auf schier un-debug-bare Fehler stösst.


Was den Hook betrifft, so gibts dafür so viele verschiedene Ansätze wie Programierstile.
Eine der einfacheren und sauberen Varianten scheint ein MasterEventhook zu sein. Der kann dann zb den namen des fensters nehmen und es direkt in einer TMap suchen und anzeigen.

Ein Beispiel eines Master Eventhandlers ist im englischen Codearchiv.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

maximilian

BeitragDo, Apr 27, 2006 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, das beantwortet meine Fragen schon mal so weit. Da mir diese MasterEventHooks allerdings auch umständlich vorkommen bleibe ich erstmal bei einzelnen Funktionen. Danke!
Variety is the spice of life. One day ignore people, next day annoy them.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group