
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.
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
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. ^^
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
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?
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