我只看到從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