From 4cc94b1fd5ea784ba878030104e93ccc99aa0232 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sat, 15 Jun 2019 13:01:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=BC=A0=E6=A0=87=E6=BB=9A?= =?UTF-8?q?=E8=BD=AE=E6=B6=88=E6=81=AF=E4=BC=A0=E9=80=92=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=BB=9A=E8=BD=AE=E6=8E=A7=E5=88=B6=E6=91=84?= =?UTF-8?q?=E5=83=8F=E6=9C=BA=E8=B7=9D=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Vulkan/VulkanAppFramework.h | 8 ++++++++ inc/hgl/platform/Window.h | 4 ++-- src/Platform/Win/WinMessage.cpp | 18 ++++++++---------- 3 files changed, 18 insertions(+), 12 deletions(-) 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)