WM_MOUSEWHEEL停止滚动?

时间:2013-04-24 07:02:40

标签: c++ events window mouse

如何知道用户是否停止滚动鼠标滚轮?目前,在我的WinProc函数下,c ++

 case WM_MOUSEWHEEL:
if((int)wParam > 0)
  //scroll forward
else if((int)wParam < 0)
  //scroll backward

我看看msdn网站。如果鼠标滚轮停止,我找不到会触发的事件。 我该如何解决?

WM_MBUTTONUP,WM_MBUTTONDOWN处理单击鼠标滚轮。

2 个答案:

答案 0 :(得分:1)

为每个谨慎的滚动事件传递

WM_MOUSEWHEEL条消息。当用户停止滚动时,消息停止到达。这就是它的全部内容。

鼠标滚轮消息与鼠标按钮向下/向上消息对没有任何模拟。这是因为滚轮滚动是按钮按下的一个根本不同的动作。

答案 1 :(得分:0)

停止滚动时停止

我更喜欢定义停止滚动的内容。我认为当用户停止滚动一段时间(例如.5s)时,它似乎停止了。

static DWORD lastMouseScroll = 0;
static BOOL  isStopped = FALSE;

...

case WM_MOUSEWHEEL:
if((int)wParam > 0)
{
    lastMouseScroll = GetTickCount();
    isStopped = FALSE;
}
else if((int)wParam < 0)
{
    lastMouseScroll = GetTickCount();
    isStopped = FALSE;
}

... outside of switch/case

if (!isStopped && GetTickCount()-lastMouseScroll > 500)
{
     isStopped = TRUE;
     // mouse is stopped !
}