WPARAM wParam, // key indicators 是从wParam转化过来的吧,fwKeys = GET_KEYSTATE_WPARAM(wParam);MK_CONTROL The CTRL key is down. MK_LBUTTON The left mouse button is down. MK_MBUTTON The middle mouse button is down. MK_RBUTTON The right mouse button is down. MK_SHIFT The SHIFT key is down. MK_XBUTTON1 The first X button is down. MK_XBUTTON2 The second X button is down.
为什么要LOWORD(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
hook中的wParam和lParam与消息中的不是一回事。 消息的名字在wParam中,消息的参数全在lParam中, 将lParam转换成相应的结构就成了。下面共参考://**********************鼠标监视程序********************** LRESULT WINAPI MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode < 0 || nCode == HC_NOREMOVE) return (CallNextHookEx(g_hMouseHook,nCode,wParam,lParam)); LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *) lParam; if(wParam == WM_LBUTTONUP) { } else if(wParam == WM_RBUTTONUP) { CString sTemp; sTemp.Format("X%dY%d",pMouseHook->pt.x,pMouseHook->pt.y); lstrcpy(szPlayText,sTemp); ::PostMessage(g_hMainWnd, WM_READOUT,0,0); } return (CallNextHookEx(g_hMouseHook,nCode,wParam,lParam)); } MOUSEHOOKSTRUCT The MOUSEHOOKSTRUCT structure contains information about a mouse event passed to a WH_MOUSE hook procedure, MouseProc. typedef struct tagMOUSEHOOKSTRUCT { // ms POINT pt; HWND hwnd; UINT wHitTestCode; DWORD dwExtraInfo; } MOUSEHOOKSTRUCT;
Members pt Specifies aPOINT structure that contains the x- and y-coordinates of the cursor, in screen coordinates. hwnd Handle to the window that will receive the mouse message corresponding to the mouse event. wHitTestCode Specifies the hit-test value. For a list of hit-test values, see the description of theWM_NCHITTEST message. dwExtraInfo Specifies extra information associated with the message. QuickInfo Windows NT: Requires version 3.1 or later. Windows: Requires Windows 95 or later. Windows CE: Unsupported. Header: Declared in winuser.h.See Also Hooks Overview, Hook Structures, MouseProc,POINT, SetWindowsHookEx,WM_NCHITTEST
是从wParam转化过来的吧,fwKeys = GET_KEYSTATE_WPARAM(wParam);MK_CONTROL The CTRL key is down.
MK_LBUTTON The left mouse button is down.
MK_MBUTTON The middle mouse button is down.
MK_RBUTTON The right mouse button is down.
MK_SHIFT The SHIFT key is down.
MK_XBUTTON1 The first X button is down.
MK_XBUTTON2 The second X button is down.
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
消息的名字在wParam中,消息的参数全在lParam中,
将lParam转换成相应的结构就成了。下面共参考://**********************鼠标监视程序**********************
LRESULT WINAPI MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0 || nCode == HC_NOREMOVE)
return (CallNextHookEx(g_hMouseHook,nCode,wParam,lParam)); LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *) lParam; if(wParam == WM_LBUTTONUP)
{
}
else if(wParam == WM_RBUTTONUP)
{
CString sTemp;
sTemp.Format("X%dY%d",pMouseHook->pt.x,pMouseHook->pt.y);
lstrcpy(szPlayText,sTemp);
::PostMessage(g_hMainWnd, WM_READOUT,0,0);
} return (CallNextHookEx(g_hMouseHook,nCode,wParam,lParam));
}
MOUSEHOOKSTRUCT
The MOUSEHOOKSTRUCT structure contains information about a mouse event passed to a WH_MOUSE hook procedure, MouseProc. typedef struct tagMOUSEHOOKSTRUCT { // ms
POINT pt;
HWND hwnd;
UINT wHitTestCode;
DWORD dwExtraInfo;
} MOUSEHOOKSTRUCT;
Members
pt
Specifies aPOINT structure that contains the x- and y-coordinates of the cursor, in screen coordinates.
hwnd
Handle to the window that will receive the mouse message corresponding to the mouse event.
wHitTestCode
Specifies the hit-test value. For a list of hit-test values, see the description of theWM_NCHITTEST message.
dwExtraInfo
Specifies extra information associated with the message.
QuickInfo
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in winuser.h.See Also
Hooks Overview, Hook Structures, MouseProc,POINT, SetWindowsHookEx,WM_NCHITTEST
{
if (nCode < 0)
return CallNextHookEx(g_hGetMsgHook,nCode,wParam,lParam);
if(((LPMSG)lParam)->message == WM_MOUSEMOVE &&
((LPMSG)lParam)->wParam == MK_LBUTTON)
{
MessageBeep(0);
}
..............