|
@@ -67,6 +67,9 @@
|
|
|
#ifndef WM_TOUCH
|
|
|
#define WM_TOUCH 0x0240
|
|
|
#endif
|
|
|
+#ifndef WM_MOUSEHWHEEL
|
|
|
+#define WM_MOUSEHWHEEL 0x020E
|
|
|
+#endif
|
|
|
|
|
|
static SDL_Scancode
|
|
|
WindowsScanCodeToSDLScanCode( LPARAM lParam, WPARAM wParam )
|
|
@@ -481,6 +484,25 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ case WM_MOUSEHWHEEL:
|
|
|
+ {
|
|
|
+ static short s_AccumulatedMotion;
|
|
|
+
|
|
|
+ s_AccumulatedMotion += GET_WHEEL_DELTA_WPARAM(wParam);
|
|
|
+ if (s_AccumulatedMotion > 0) {
|
|
|
+ while (s_AccumulatedMotion >= WHEEL_DELTA) {
|
|
|
+ SDL_SendMouseWheel(data->window, 0, 1, 0, timestamp);
|
|
|
+ s_AccumulatedMotion -= WHEEL_DELTA;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ while (s_AccumulatedMotion <= -WHEEL_DELTA) {
|
|
|
+ SDL_SendMouseWheel(data->window, 0, -1, 0, timestamp);
|
|
|
+ s_AccumulatedMotion += WHEEL_DELTA;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
#ifdef WM_MOUSELEAVE
|
|
|
case WM_MOUSELEAVE:
|
|
|
if (SDL_GetMouseFocus() == data->window && !SDL_GetMouse()->relative_mode) {
|