我有一个Winform应用程序,重载了方法“WndProc”代码如下:
const int WM_MOUSEMOVE = 0X0200;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_MOUSEMOVE:
Debug.Write(string.Format("CurrentDate:{0}", DateTime.Now) + Environment.NewLine);
break;
}
base.WndProc(ref m);
}
我想捕获鼠标在应用程序上移动时的消息,但是当我把鼠标放置在应用程序上面,然后就不动鼠标,但是在vs.net中的Output中就看到一直在输出信息!太奇怪了。我并没有移动鼠标,为什么会捕获到这个消息了呢?
请教高人,我只想当鼠标移动的时候捕获到这个消息,应该怎么处理?谢谢了
当您把鼠标移过窗口的显示区域时,Windows并不为鼠标的每个可能的图素位置都产生一个WM_MOUSEMOVE消息。您的程序接收到WM_MOUSEMOVE消息的次数,依赖于鼠标硬件,以及您的窗口消息处理程序在处理鼠标移动消息时的速度。
我又试了一下你的代码,只有在鼠标移动时才产生输出,是正确的: