我只看到从GET_WHEEL_DELTA_WPARAM返回的正数,即使它在我向我滚动鼠标滚轮时应该是负数。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);
}
@chris,'GET_WHEEL_DELTA_WPARAM()'提取高位字本身,您不必事先应用HIWORD()。 – 2013-03-20 16:12:16
@FrédéricHamidi,哦,恩,谢谢。 – chris 2013-03-20 16:21:07
你能说明'Addtl_Info_L'是什么以及它是如何初始化的? – Paul 2013-03-20 16:23:53