Seite 2 von 2
Re: Ein smarter Eventhandler für Gadgets/Menuitems und Toolb
Verfasst: 29.05.2010 17:33
von Kurzer
Hallo PureLust,
auch wenn ich selbst das feature bislang nicht gebraucht habe... ich hab es jetzt trotzdem eingebaut.
Es war dafür auch keine größere Änderung nötig.
Viel Erfolg damit (falls das Include jemand nutzt).
Re: Ein smarter Eventhandler für Gadgets/Menuitems und Toolb
Verfasst: 20.07.2012 23:44
von Kurzer
Ups, ich hatte den Eventhandler seinerzeit noch zweimal erweitert, aber vergessen diesen Thread hier anzupassen. Das wird hiermit nachgeholt. Sorry an alle die meinen Code benutzen und somit nicht in den Genuss der neuen Funktionalität gekommen sind.
Änderungen:
Alle evh_SetxyzEvent() Befehle enthalten nun zusätzlich den Parameter WindowNr.
Dieser ist für den neuen Befehl evh_RemoveEvent() nötig.
Den neuen Befehl evh_RemoveEvent(WindowNr, ItemNr, EventType) zugefügt.
Hiermit können während der Programmlaufzeit einzelne Eventzuordnungen wieder entfernt werden oder alle Eventzuordnungen eines Fensters auf einen Schlag entfernt werden.
Der Befehl evh_Init() muss nicht mehr aufgerufen werden. Der Handler initialisiert sich bei der ersten Eventzuordnung selbst.
Die evh_EventArgsstruct wurde um iEventTimer erweitert.
\iEvent
\iEventType
\iEventWindow
\iEventGadget
\iEventMenu
\iEventTimer
\iEventwParam
\iEventlParam
Hiermit wird einer Eventprozedur, die einem WindowTimer-Event zugeordnet wurde, die Nummer des Timers übermittelt. Näheres siehe Beispielquellcode im Downloadpaket.
Das Downloadpaket und der Infotext im ersten Beitrag wurde erweitert.
Gruß Kurzer
Re: Ein smarter Eventhandler für Gadgets/Menuitems und Toolb
Verfasst: 21.07.2012 19:00
von ts-soft
Ich habe da gleich einen Verbesserungsvorschlag, weil in der jetzigen Form klappt es es nicht mit dem Nachbarn
Code: Alles auswählen
Structure evh_EventArgsstruct ; Parameter-Struktur die den Eventprozeduren mittels Pointer übergeben wird.
iEvent.i
iEventType.i
iEventWindow.i
iEventGadget.i
iEventMenu.i
iEventTimer.i
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
iEventwParam.i
iEventlParam.i
CompilerEndIf
EndStructure
Procedure.i evh_ProcessEvents(...)
...
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
evh_stEventArgs\iEventwParam = *stEvents\iEventwParam
evh_stEventArgs\iEventlParam = *stEvents\iEventlParam
CompilerEndIf
...
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
evh_stEventArgs\iEventwParam = EventwParam()
evh_stEventArgs\iEventlParam = EventlParam()
CompilerEndIf
...
Schon funktioniert es auch beim Nachbarn
Gruß
Thomas
Re: Ein smarter Eventhandler für Gadgets/Menuitems und Toolb
Verfasst: 22.07.2012 14:09
von Kurzer
Hallo ts-soft,
danke für den Hinweis bzgl. der Windows-only Parameter.
Wäre es nicht schlauer nur die beiden Event[w/l]Param() Aufrufe per Compilerif zu kapseln und auf allen non-windows Plattformen die beiden Strukturfelder iEventwParam.i und iEventlParam.i mit 0 zu initialisieren statt sie komplett wegzulassen?
Kommt mir konsistenter vor und dann muss auch der erklärende Text nicht angepasst werden.

Re: Ein smarter Eventhandler für Gadgets/Menuitems und Toolb
Verfasst: 22.07.2012 14:15
von ts-soft
Was machen die Parameter denn noch für einen Sinn?
Musst Du entscheiden, so genau hab ich mir den Code nicht angeschaut, aber
Elemente die keinen Sinn machen, würde ich immer weglassen. Die Frage ist
ja auch, sollten diese beiden undokumentierten Funktionen überhaupt implementiert
werde? Ich hab die noch nie genutzt, Callbacks halte ich da für zweckmässiger, weil
die auch zuverlässiger funktionieren.
Mach wie Du denkst, ich würde das komplett entfernen.
Gruß
Thomas