diff --git a/example/Vulkan/VulkanAppFramework.h b/example/Vulkan/VulkanAppFramework.h index da64ac54..e0fe9d4c 100644 --- a/example/Vulkan/VulkanAppFramework.h +++ b/example/Vulkan/VulkanAppFramework.h @@ -46,6 +46,7 @@ protected: void OnMouseDown(int,int,uint mk){mouse_key=mk;MouseDown(mk);} void OnMouseUp (int,int,uint mk){mouse_key=0;MouseUp(mk);} void OnMouseMove(int x,int y){mouse_pos.Set(x,y);MouseMove();} + void OnMouseWheel(int v,int h,uint mk){MouseWheel(v,h,mk);} protected: @@ -117,6 +118,7 @@ public: SetEventCall(win->OnMouseDown, this,VulkanApplicationFramework,OnMouseDown ); SetEventCall(win->OnMouseUp, this,VulkanApplicationFramework,OnMouseUp ); SetEventCall(win->OnMouseMove, this,VulkanApplicationFramework,OnMouseMove ); + SetEventCall(win->OnMouseWheel, this,VulkanApplicationFramework,OnMouseWheel); return(true); } @@ -126,6 +128,7 @@ public: virtual void MouseDown(uint){} virtual void MouseUp(uint){} virtual void MouseMove(){} + virtual void MouseWheel(int,int,uint){} void InitCommandBuffer() { @@ -314,4 +317,9 @@ public: mouse_last_pos=mouse_pos; } + + virtual void MouseWheel(int v,int h,uint) + { + camera.Distance(1+(v/1000.0f)); + } };//class WalkerCameraAppFramework diff --git a/inc/hgl/platform/Window.h b/inc/hgl/platform/Window.h index c4be79ef..14ec6a4a 100644 --- a/inc/hgl/platform/Window.h +++ b/inc/hgl/platform/Window.h @@ -33,7 +33,7 @@ namespace hgl public: virtual void ProcMouseMove (int x,int y) {SafeCallEvent(OnMouseMove, (x,y));} - virtual void ProcMouseWheel (int x,int y, int v,int h) {SafeCallEvent(OnMouseWheel, (x,y,v,h));} + virtual void ProcMouseWheel (int v,int h,uint mb) {SafeCallEvent(OnMouseWheel, (v,h,mb));} virtual void ProcMouseDown (int x,int y,uint mb) {SafeCallEvent(OnMouseDown, (x,y,mb));} virtual void ProcMouseUp (int x,int y,uint mb) {SafeCallEvent(OnMouseUp, (x,y,mb));} virtual void ProcMouseDblClick (int x,int y,uint mb) {SafeCallEvent(OnMouseDblClick, (x,y,mb));} @@ -61,7 +61,7 @@ namespace hgl public: DefEvent(void,OnMouseMove ,(int,int)); - DefEvent(void,OnMouseWheel ,(int,int, int,int)); + DefEvent(void,OnMouseWheel ,(int,int,uint)); DefEvent(void,OnMouseDown ,(int,int,uint)); DefEvent(void,OnMouseUp ,(int,int,uint)); DefEvent(void,OnMouseDblClick ,(int,int,uint)); diff --git a/src/Platform/Win/WinMessage.cpp b/src/Platform/Win/WinMessage.cpp index 50ccd15c..d277d65c 100644 --- a/src/Platform/Win/WinMessage.cpp +++ b/src/Platform/Win/WinMessage.cpp @@ -226,20 +226,18 @@ namespace hgl #define WMEF2(name) void name(WinWindow *win,uint32 wParam,uint32 lParam) WMEF2(WMProcMouseWheel) { - const int x=LOWORD(lParam); - const int y=HIWORD(lParam); - - win->ProcMouseMove(x,y); - win->ProcMouseWheel(x,y,HIWORD(wParam),0); + int zDelta=GET_WHEEL_DELTA_WPARAM(wParam); + uint key=ConvertOSKey(GET_KEYSTATE_WPARAM(wParam)); + + win->ProcMouseWheel(zDelta,0,key); } WMEF2(WMProcMouseHWheel) { - const int x=LOWORD(lParam); - const int y=HIWORD(lParam); - - win->ProcMouseMove(x,y); - win->ProcMouseWheel(x,y,0,HIWORD(wParam)); + int zDelta=GET_WHEEL_DELTA_WPARAM(wParam); + uint key=ConvertOSKey(GET_KEYSTATE_WPARAM(wParam)); + + win->ProcMouseWheel(0,zDelta,key); } WMEF2(WMProcSize)