есть известная функция, но она использует устаревшую функцию EventwParam()
в любой момент её могут убрать
Procedure.w MouseWheelDelta() Protected x.w=(EventwParam()>>16)&$FFFF ProcedureReturn -(x/120) EndProcedure
в справке сказано
Эта функция больше не поддерживается и не должна использоваться в новом проекте. Чтобы получить полный контроль над событиями Окон - используйте процедуры обратного вызова, с помощью SetWindowCallback().
сделал вот так, но не могу понять как получить результат, тогда когда он мне нужен
;{
; #WM_MouseActivate = 33
; #WM_MouseFirst = 512
; #WM_MouseHover = 673
; #WM_MouseHWheel = 526
; #WM_MouseLast = 521
; #WM_MouseLeave = 675
; #WM_MouseMove = 512
; #WM_MouseWheel = 522
;}
Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
Protected x.w, ret=#PB_ProcessPureBasicEvents
If IsWindow(21)
Select Message
Case #WM_MOUSEWHEEL
Debug "#WM_MouseWheel "+Message+" : WParam="+wParam+" , LParam="+lParam
x=wParam>>16&$FFFF
Debug Str(-(x/120))
;ProcedureReturn -(x/120)
EndSelect
ProcedureReturn ret
EndIf
EndProcedure
Procedure senior()
Protected ev, eg, em, et
If OpenWindow(21, 870, 640, 400, 300, "")
AddKeyboardShortcut(21, #PB_Shortcut_Escape, 0); ESC
SetWindowCallback(@MyWindowCallback())
Repeat
ev=WaitWindowEvent():eg=EventGadget():et=EventType():em=EventMenu()
If ev=#PB_Event_Menu And em=0:Break:EndIf; ESC
If ev=#PB_Event_Gadget
EndIf
Until ev=#PB_Event_CloseWindow
EndIf
EndProcedure
senior()