我在做global mouse hook的时候发现鼠标不动的时候按键也会产生WM_MOUSEMOVE消息,怎么搞的?
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
if (nCode>=0)
{
if (wparam==WM_MOUSEMOVE) //鼠标不动的时候按下左键或右键怎么也会产生WM_MOUSEMOVE消息?
{
if (glhRecieveWnd)
{
::SendMessage(glhRecieveWnd,LINEUSE_MOUSEDOWN,wparam,lparam);
}
return 0;
}
else
{
return CallNextHookEx
}
}
(glhHookMouse,nCode,wparam,lparam); //继续传递消息
}
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
if (nCode>=0)
{
if (wparam==WM_MOUSEMOVE) //鼠标不动的时候按下左键或右键怎么也会产生WM_MOUSEMOVE消息?
{
if (glhRecieveWnd)
{
::SendMessage(glhRecieveWnd,LINEUSE_MOUSEDOWN,wparam,lparam);
}
return 0;
}
else
{
return CallNextHookEx
}
}
(glhHookMouse,nCode,wparam,lparam); //继续传递消息
}
好像是一些无法解析的键盘消息,就会发生WM_MOUSEMOVE,具体的不知道,但是发生过这样的现象。
The WM_MOUSEMOVE message is posted to a window when the cursor moves. If the mouse is not captured, the message is posted to the window that contains the cursor. Otherwise, the message is posted to the window that has captured the mouse. WM_MOUSEMOVE
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor
Parameters
fwKeys
Value of wParam. Indicates whether various virtual keys are down. This parameter can be any combination of the following values: Value Description
MK_CONTROL Set if the ctrl key is down.
MK_LBUTTON Set if the left mouse button is down.
MK_MBUTTON Set if the middle mouse button is down.
MK_RBUTTON Set if the right mouse button is down.
MK_SHIFT Set if the shift key is down.
xPos
Value of the low-order word of lParam. Specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
yPos
Value of the high-order word of lParam. Specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
Res
The MAKEPOINTS macro can be used to convert the lParam parameter to a POINTS structure. QuickInfo
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Requires version 1.0 or later.
Header: Declared in winuser.h.See Also
Mouse Input Overview, Mouse Input Messages, GetCapture,MAKEPOINTS,POINTS, SetCapture
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
if (nCode>=0)
{
(wparam==WM_LBUTTONDOWN)
glbMouseDown=true;
if (wparam==WM_LBUTTONUP)
glbMouseDown=false;
if (wparam==WM_MOUSEMOVE && glbMouseDown)//按下左键并移动
{
if (glhRecieveWnd)
{
::SendMessage(glhRecieveWnd,LINEUSE_MOUSEDOWN,wparam,lparam);
}
return 0;
}
else
{
return CallNextHookEx(glhHookMouse,nCode,wparam,lparam); //继续传递消息
}
}
}