Seite 1 von 2
GELÖSCHT
Verfasst: 16.01.2013 22:04
von mirca
GELÖSCHT
Re: Mehrere Callbacks für ein Fenster?
Verfasst: 16.01.2013 22:18
von Kiffi
nimm doch die normale PB-Eventschleife. Dann musst Du
Dich auch nicht mit Callbacks herumquälen.
Grüße ... Kiffi
GELÖSCHT
Verfasst: 16.01.2013 22:25
von mirca
GELÖSCHT
Re: Mehrere Callbacks für ein Fenster?
Verfasst: 16.01.2013 22:37
von edel
Natuerlich kannst du das machen, wobei es wohl eher unuebersichtlich wird, wenn du fuer jedes Event eine 'Include' benutzt.
Als Alternative kannst du dir EasyVENT anschauen,
http://www.purebasic.fr/english/viewtop ... 14&t=28810
Das ist auch noch ein Blick wert :
http://msdn.microsoft.com/en-us/library ... 2(v=vs.85)
GELÖSCHT
Verfasst: 16.01.2013 22:46
von mirca
GELÖSCHT
Re: Mehrere Callbacks für ein Fenster?
Verfasst: 16.01.2013 22:47
von STARGÅTE
Das hier sollte auch funktionieren:
Code: Alles auswählen
Prototype.i WindowCallback(WindowID.i, Message.i, wParam.i, lParam.i)
Structure WindowCallbackElement
Callback.WindowCallback
EndStructure
Global NewList WindowCallbackElement.WindowCallbackElement()
Procedure MainWindowCallback(WindowID.i, Message.i, wParam.i, lParam.i)
ForEach WindowCallbackElement()
WindowCallbackElement()\Callback(WindowID, Message, wParam, lParam)
Next
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure AddWindowCallback(Callback.WindowCallback)
If ListSize(WindowCallbackElement()) = 0
SetWindowCallback(@MainWindowCallback())
EndIf
AddElement(WindowCallbackElement())
WindowCallbackElement()\Callback = Callback
EndProcedure
Mit
AddWindowCallback() kannst du dann verschiedene Callbacks "hinzufügen".
Beim ersten mal wird dann auch der echte Callback erstellt, in dem wird dann einfach die Liste aller deiner Callbacks duchgegangen.
Re: Mehrere Callbacks für ein Fenster?
Verfasst: 16.01.2013 23:04
von RSBasic
@mirca
"Wenn" Prozeduren allgemein langsamer sind, die sowieso in deiner extra Include-Datei definiert sind, dann inkludiere sie direkt und zwar mit XIncludeFile.
GELÖSCHT
Verfasst: 16.01.2013 23:14
von mirca
GELÖSCHT
Re: Mehrere Callbacks für ein Fenster?
Verfasst: 16.01.2013 23:28
von STARGÅTE
mirca hat geschrieben:Ah cool und das klappt? Teste ich gleich ...
Wird vermutlich funktionieren, diese Vorgehensweise ist jedoch nicht effizient, da ja mit jedem Event alle Prozeduren aufgerufen werden, und in ihnen dann erst getestet wird, ob das Event zur Prozedur gehört...
Re: Mehrere Callbacks für ein Fenster?
Verfasst: 17.01.2013 14:42
von NicTheQuick
Man könnte auch Rückgabewerte für die Callbacks definieren und nur dann in den nächsten aus der Liste springen, wenn der Rückgabewert des vorherigen sagt, dass er nichts getan hat. So kann man immerhin durchschnittlich 50% der Zeit sparen.
Aber selbst ohne diese Optimierung kann ich mir nicht vorstellen, dass diese Vorgehensweise sonderlich langsam sein wird. Wenn ich sehe, was andere allein schon alles in ihre Hauptschleife werfen und dann noch im Callback ganze Fensterbereiche manuell "ausmalen".