我只看到从 GET_WHEEL_DELTA_WPARAM 返回正数,即使当我将鼠标滚轮滚向我时它应该是负数。
case WM_MOUSEWHEEL:
short wheel_delta = 0;
wheel_delta = GET_WHEEL_DELTA_WPARAM(Addtl_Info_L);
另外,这个页面 here 表示向前滚动轮子给出一个正数,向后滚动一个负数,而这个页面 here 表示它是左右而不是向前和向后。
这是完整的消息处理程序:
LRESULT CALLBACK Message_Handler(HWND App_Handle, UINT Message_Type, WPARAM Addtl_Info_W, LPARAM Addtl_Info_L) {
short wheel_delta(0);
switch(Message_Type) {
case WM_MOUSEWHEEL:
wheel_delta = GET_WHEEL_DELTA_WPARAM(Addtl_Info_L);
if (wheel_delta > 0) {
std::wostringstream outs;
outs << "Wheel delta is positive" << std::endl;
OutputDebugString(outs.str().c_str());
graphics_manager.camera_tilt = graphics_manager.camera_tilt + 0.1f;
} else if (wheel_delta < 0) {
std::wostringstream outs;
outs << "Wheel delta is negative" << std::endl;
OutputDebugString(outs.str().c_str());
graphics_manager.camera_tilt = graphics_manager.camera_tilt - 0.1f;
}
return 0;
}
return DefWindowProc(App_Handle, Message_Type, Addtl_Info_W, Addtl_Info_L);
}
最佳答案
您正在将 LPARAM
传递给 GET_WHEEL_DELTA_WPARAM
。您应该传递 WPARAM
(Addtl_Info_W
,而不是 Addtl_Info_L
)。
关于c++ - GET_WHEEL_DELTA_WPARAM 从不返回负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528752/