diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index f795b27..a31e14b 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -652,6 +652,13 @@ BOOL WINAPI fake_PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT w //return FALSE; } + if (lpMsg->message == WM_MOUSEWHEEL) + { + POINT pt = { GET_X_LPARAM(lpMsg->lParam), GET_Y_LPARAM(lpMsg->lParam) }; + real_ScreenToClient(g_ddraw->hwnd, &pt); + lpMsg->lParam = MAKELPARAM(pt.x, pt.y); + } + int x = max(GET_X_LPARAM(lpMsg->lParam) - g_ddraw->mouse.x_adjust, 0); int y = max(GET_Y_LPARAM(lpMsg->lParam) - g_ddraw->mouse.y_adjust, 0); diff --git a/src/wndproc.c b/src/wndproc.c index a64b2cb..5ff00c2 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -789,6 +789,13 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam return 0; } + if (uMsg == WM_MOUSEWHEEL) + { + POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; + real_ScreenToClient(g_ddraw->hwnd, &pt); + lParam = MAKELPARAM(pt.x, pt.y); + } + int x = max(GET_X_LPARAM(lParam) - g_ddraw->mouse.x_adjust, 0); int y = max(GET_Y_LPARAM(lParam) - g_ddraw->mouse.y_adjust, 0);