GELÖSCHT
Re: Mehrere Callbacks für ein Fenster?
nimm doch die normale PB-Eventschleife. Dann musst Du
Dich auch nicht mit Callbacks herumquälen.
Grüße ... Kiffi
Dich auch nicht mit Callbacks herumquälen.
Grüße ... Kiffi
a²+b²=mc²
Re: Mehrere Callbacks für ein Fenster?
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)
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)
Re: Mehrere Callbacks für ein Fenster?
Das hier sollte auch funktionieren:
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.
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
Beim ersten mal wird dann auch der echte Callback erstellt, in dem wird dann einfach die Liste aller deiner Callbacks duchgegangen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Mehrere Callbacks für ein Fenster?
@mirca
"Wenn" Prozeduren allgemein langsamer sind, die sowieso in deiner extra Include-Datei definiert sind, dann inkludiere sie direkt und zwar mit XIncludeFile.
"Wenn" Prozeduren allgemein langsamer sind, die sowieso in deiner extra Include-Datei definiert sind, dann inkludiere sie direkt und zwar mit XIncludeFile.
Re: Mehrere Callbacks für ein Fenster?
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...mirca hat geschrieben:Ah cool und das klappt? Teste ich gleich ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- NicTheQuick
- Ein Admin
- Beiträge: 8838
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Mehrere Callbacks für ein Fenster?
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".
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".

