【发布时间】:2014-02-15 14:48:50
【问题描述】:
目前我正在开发一个可以放大和缩小的游戏编辑器。有一个问题是我可以向上或向下滚动鼠标滚轮。我无法同时实现滚动,即如果我在编辑器类中调用input->mouseWheelUp(),我只能向上滚动。向下滚动不再起作用。我该如何解决这个问题?
获取鼠标滚轮消息
LRESULT Game::messageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (initialized) // do not process messages if not initialized
{
switch (msg)
{
case WM_MOUSEWHEEL:
input->mouseWheelIn(wParam);
return 0;
}
}
return DefWindowProc(hwnd, msg, wParam, lParam); // let Windows handle it
}
输入类
void Input::mouseWheelIn(WPARAM wParam)
{
mouseWheel = GET_WHEEL_DELTA_WPARAM(wParam);
}
bool mouseWheelUp()
{
int wheel = mouseWheel;
mouseWheel = 0;
return wheel > 0;
}
bool mouseWheelDown()
{
int wheel = mouseWheel;
mouseWheel = 0;
return wheel < 0;
}
编辑器类
void Editor::update()
{
if ( input->mouseWheelUp() )
{
zoom += 0.1f;
}
if (input->mouseWheelDown())
{
zoom -= 0.1f;
}
}
【问题讨论】:
标签: c++ scroll directx mouse mousewheel