Durch die vermutlich ausgelastetere Verarbeitung von PB-Events ist die CPU-Auslastung deutlich verbessert. ^^ Aber ohne diese sowie weitere Events (z.B #WM_NOTIFYPARENT) kann ich es leider nicht, oder nur teilweise nutzen.
EM_EventManager (crossplattform)
Re: EM_EventManager (crossplattform)
#PB_Event_SizeWindow wird ja nicht bei Gadgets ausgelöst. Könnte mir jetzt nur vorstellen ein benutzerdefiniertes durch ein Makro von ResizeGadget() auszulösen, aber das wäre dann für UserLibs/DLLs oder WinAPI Steuerung nicht tauglich. Wie gesagt frage ich mich, warum PB nicht auch ein #PB_EventType_Resize sendet.
Durch die vermutlich ausgelastetere Verarbeitung von PB-Events ist die CPU-Auslastung deutlich verbessert. ^^ Aber ohne diese sowie weitere Events (z.B #WM_NOTIFYPARENT) kann ich es leider nicht, oder nur teilweise nutzen.
Durch die vermutlich ausgelastetere Verarbeitung von PB-Events ist die CPU-Auslastung deutlich verbessert. ^^ Aber ohne diese sowie weitere Events (z.B #WM_NOTIFYPARENT) kann ich es leider nicht, oder nur teilweise nutzen.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: EM_EventManager (crossplattform)
Du kannst Deine eigenen EventType typen kreieren und per PostEvent weiterleiten, dann funktionieren das auch mit
meiner Include, sind dann auch GadgetEvents, oder als EM_Special, wobei das dann kein EventType ist, sondern ein Event.
Aber auch da kannste dann das Gadget ermitteln.
FindMapElement findet nur ein mal per EventLoop statt und ist schneller als die Suche in einem Array, es sei denn, dieses
Array wäre sehr klein
meiner Include, sind dann auch GadgetEvents, oder als EM_Special, wobei das dann kein EventType ist, sondern ein Event.
Aber auch da kannste dann das Gadget ermitteln.
FindMapElement findet nur ein mal per EventLoop statt und ist schneller als die Suche in einem Array, es sei denn, dieses
Array wäre sehr klein
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: EM_EventManager (crossplattform)
Maps sind doch auch mit 512 Elementen initialisiert
oder nicht? Dieses Thema stört mich ja nicht wirklich, aber wie kann dieses Event dann erstellt werden? Ein #PB_EventType_Size? - (/#PB_EventType_ExitSize)
Edit: Das von ResizeGadget() und MoveWindow_() ausgelöst wird ^^
Edit: Das von ResizeGadget() und MoveWindow_() ausgelöst wird ^^
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: EM_EventManager (crossplattform)
Hier mal ein kurzes Beispiel mit einem Rechtsclick für den Button, alles andere ist ja ähnlich umzusetzen:
Code: Alles auswählen
EnableExplicit
XIncludeFile "EM_EventManager.pbi"
Procedure Subclass_btn(hWnd, uMsg, wParam, lParam)
Protected oldproc = GetProp_(hWnd, "oldproc")
Select uMsg
Case #WM_NCDESTROY
RemoveProp_(hWnd, "oldproc")
Case #WM_RBUTTONUP
PostEvent(#PB_Event_Gadget, 0, 0, #PB_EventType_RightClick)
EndSelect
ProcedureReturn CallWindowProc_(oldproc, hWnd, uMsg, wParam, lParam)
EndProcedure
Procedure SetSubClass(ID)
Protected oldproc = SetWindowLongPtr_(GadgetID(ID), #GWL_WNDPROC, @Subclass_btn())
ProcedureReturn SetProp_(GadgetID(ID), "oldproc", oldproc)
EndProcedure
Procedure ev_btnRightClick(*ev.EM_Events)
Debug "RightClick"
EndProcedure
Define i
OpenWindow(0, 0, 0, 222, 200, "ButtonGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 10, 10, 200, 20, "Default Button")
SetSubClass(0)
EM_SetEventHandler(0, #EM_Gadget, @ev_btnRightClick(), #PB_EventType_RightClick)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: EM_EventManager (crossplattform)
So habe ich es bisher gelöst, aber es geht ja um Plattform Unabhängigkeit. ^^
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: EM_EventManager (crossplattform)
Mein Manger kann nur Events unterstützen, die im EventLoop ankommen. Das die Crossplattform dort ankommen, istcOoki3druqs hat geschrieben:So habe ich es bisher gelöst, aber es geht ja um Plattform Unabhängigkeit. ^^
Dein Problem
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: EM_EventManager (crossplattform)
Danke? Deshalb doch die Frage, ob man die Event-Typen erweitern kann, denn eigentlich empfängt schließlich jedes Element diese Ereignisse. / oder die Möglichkeit cross-platform Callbacks zu setzen *gleich mal stöber*
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: EM_EventManager (crossplattform)
Update
Von Danilo im engl. Forum vorgeschlagenen Erweiterungen sind jetzt implementiert.
Von Danilo im engl. Forum vorgeschlagenen Erweiterungen sind jetzt implementiert.
Historie hat geschrieben:; Version 1.5 (March 30, 2013) - by Danilo
; added #EM_Window for window events
; added #PB_Event_GadgetDrop to gadget event system
;
; Version 1.4 (March 30, 2013) - by Danilo
; added #EM_SysTray for SysTrayIcon events
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: EM_EventManager (crossplattform)
Stimmt mein Eindruck, dass z.B. diese Include mit PB5.20 (wegen BindEvent() etc.) mehr oder weniger überflüssig geworden ist?
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: EM_EventManager (crossplattform)
Mehr oder weniger, stimmtc4s hat geschrieben:Stimmt mein Eindruck, dass z.B. diese Include mit PB5.20 (wegen BindEvent() etc.) mehr oder weniger überflüssig geworden ist?
BindEvent ist auch vorzuziehen, wenn es auf "Echtzeit" ankommt, z.B. beim bewegen eines Fensters werden Events
nicht oder spät gemeldet, das passiert mit den neuen Funktionen nicht. Beispiel:
Code: Alles auswählen
EnableExplicit
Procedure SetTime()
SetWindowTitle(0, FormatDate("%hh:%ii:%ss", Date()))
EndProcedure
OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "")
AddWindowTimer(0, 1, 500)
BindEvent(#PB_Event_Timer, @SetTime())
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend insofern werde ich alte Projekte so lassen und in neuen BindEvents nutzen.
Es wird also auch kein Update auf Module geben!
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
