Moin,
ich habe seit langer Zeit nichts mehr mit PureBasic gemacht und schaue mir gerade die BindEvent-Funktionalität an. Ich möchte nun erreichen, dass ich über einen simplen Aufruf alle Ereignisse eines Fensters an einen Callback binden kann. Damit möchte ich quasi #PB_Event_SizeWindow, #PB_Event_MoveWindow etc. im Callback abfragen.
Ist dies ohne mehrmaligen Aufruf von BindEvent möglich?
BindEvent - alle Ereignisse bequem binden
Re: BindEvent - alle Ereignisse bequem binden
Hatte ich auch schon gesucht. Geht leider nicht...
Schon mal grob vorbereitet
Schon mal grob vorbereitet
Code: Alles auswählen
;-TOP
Enumeration Windows
#Main
EndEnumeration
Enumeration Gadgets
EndEnumeration
Enumeration Status
#MainStatusBar
EndEnumeration
Procedure BindWindowEvents(Callback, Window)
BindEvent(#PB_Event_CloseWindow, Callback, Window)
BindEvent(#PB_Event_MoveWindow, Callback, Window)
BindEvent(#PB_Event_SizeWindow, Callback, Window)
BindEvent(#PB_Event_ActivateWindow, Callback, Window)
BindEvent(#PB_Event_DeactivateWindow, Callback, Window)
BindEvent(#PB_Event_MaximizeWindow, Callback, Window)
BindEvent(#PB_Event_MinimizeWindow, Callback, Window)
EndProcedure
Procedure UnbindWindowEvents(Callback, Window)
UnbindEvent(#PB_Event_CloseWindow, Callback, Window)
UnbindEvent(#PB_Event_MoveWindow, Callback, Window)
UnbindEvent(#PB_Event_SizeWindow, Callback, Window)
UnbindEvent(#PB_Event_ActivateWindow, Callback, Window)
UnbindEvent(#PB_Event_DeactivateWindow, Callback, Window)
UnbindEvent(#PB_Event_MaximizeWindow, Callback, Window)
UnbindEvent(#PB_Event_MinimizeWindow, Callback, Window)
EndProcedure
Procedure DoEventWindow()
Select Event()
Case #PB_Event_CloseWindow
Debug "Close Window"
Case #PB_Event_SizeWindow
Debug "Size Window"
EndSelect
EndProcedure
Procedure Main()
#MainStyle = #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, "Window" , #MainStyle)
BindWindowEvents(@DoEventWindow(), #Main)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
EndProcedure : Main()
Zuletzt geändert von mk-soft am 11.04.2020 18:17, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: BindEvent - alle Ereignisse bequem binden
Vielen Dank, mk-soft.
Ist etwas unschön, dass PureBasic dies von Haus aus nicht untersützt.
Ist etwas unschön, dass PureBasic dies von Haus aus nicht untersützt.
- HeX0R
- Beiträge: 2960
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: BindEvent - alle Ereignisse bequem binden
Na ja, der große Vorteil von BindEvent ist ja, dass Du versch. Prozeduren für versch. Ereignisse anlegen kannst.
z.B. "OnButton_Click()", oder "OnComboBox_Change()".
Das was Du da möchtest, lässt sich doch viel einfacher erledigen, z.B. so:
z.B. "OnButton_Click()", oder "OnComboBox_Change()".
Das was Du da möchtest, lässt sich doch viel einfacher erledigen, z.B. so:
Code: Alles auswählen
Procedure MyEventHandling(Event)
Select Event
Case #PB_Event_MoveWindow
Case #PB_Event_SizeWindow
Case #PB_Event_ActivateWindow
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
...
EndSelect
EndProcedure
Repeat
Event = WaitWindowEvent()
Select EventWindow()
Case #DasWindowInteressiertMich
MyEventHandling(Event)
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
Re: BindEvent - alle Ereignisse bequem binden
Noch eine Möglichkeit: SetWindowCallback
Windows 10
PB Last Final / (Sometimes testing Beta versions)
PB Last Final / (Sometimes testing Beta versions)