есть известная функция, но она использует устаревшую функцию 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()