@@ -9,8 +9,8 @@ use winapi::um::winuser::{
99 DestroyWindow , SetProcessDpiAwarenessContext , SetWindowPos ,
1010 GetDpiForWindow ,
1111 CS_OWNDC , GWLP_USERDATA , IDC_ARROW ,
12- MSG , WM_CLOSE , WM_CREATE , WM_MOUSEMOVE , WM_SHOWWINDOW , WM_TIMER , WM_NCDESTROY ,
13- WNDCLASSW , WS_CAPTION , WS_CHILD , WS_CLIPSIBLINGS , WS_MAXIMIZEBOX , WS_MINIMIZEBOX ,
12+ MSG , WM_CLOSE , WM_CREATE , WM_MOUSEMOVE , WM_MOUSEWHEEL , WHEEL_DELTA , WM_SHOWWINDOW , WM_TIMER ,
13+ WM_NCDESTROY , WNDCLASSW , WS_CAPTION , WS_CHILD , WS_CLIPSIBLINGS , WS_MAXIMIZEBOX , WS_MINIMIZEBOX ,
1414 WS_POPUPWINDOW , WS_SIZEBOX , WS_VISIBLE , WM_DPICHANGED , WM_CHAR , WM_SYSCHAR , WM_KEYDOWN ,
1515 WM_SYSKEYDOWN , WM_KEYUP , WM_SYSKEYUP , WM_INPUTLANGCHANGE , WM_SIZE ,
1616 GET_XBUTTON_WPARAM , WM_LBUTTONDOWN , WM_LBUTTONUP , WM_MBUTTONDOWN , WM_MBUTTONUP ,
@@ -30,7 +30,7 @@ use raw_window_handle::{
3030} ;
3131
3232use crate :: {
33- Event , MouseButton , MouseEvent , WindowEvent ,
33+ Event , MouseButton , MouseEvent , ScrollDelta , WindowEvent ,
3434 WindowHandler , WindowInfo , WindowOpenOptions , WindowScalePolicy , PhyPoint , PhySize
3535} ;
3636
@@ -89,6 +89,22 @@ unsafe extern "system" fn wnd_proc(
8989 ) ;
9090 return 0 ;
9191 }
92+ WM_MOUSEWHEEL => {
93+ let value = ( wparam >> 16 ) as i16 ;
94+ let value = value as i32 ;
95+ let value = value as f32 / WHEEL_DELTA as f32 ;
96+
97+ let mut window_state = ( & * window_state_ptr) . borrow_mut ( ) ;
98+
99+ window_state. handler . on_event (
100+ & mut window,
101+ Event :: Mouse ( MouseEvent :: WheelScrolled ( ScrollDelta :: Lines {
102+ x : 0.0 ,
103+ y : value,
104+ } ) ) ,
105+ ) ;
106+ return 0 ;
107+ }
92108 WM_LBUTTONDOWN | WM_LBUTTONUP | WM_MBUTTONDOWN | WM_MBUTTONUP |
93109 WM_RBUTTONDOWN | WM_RBUTTONUP | WM_XBUTTONDOWN | WM_XBUTTONUP => {
94110
0 commit comments