tob*_*obi 4 c++ windows hook winapi
我已经为鼠标创建了一个钩子.我想获得鼠标点击坐标,但GET_X_LPARAM()给我负值(点击不同的地方时总是一样).GetCursorPos()解决了我的问题,但我想知道它为什么不能使用GET_X_LPARAM/GET_Y_LPARAM.这是代码:
LRESULT CALLBACK Recorder::mouseHook( int code, WPARAM wParam, LPARAM lParam ) {
if( code < 0 )
return CallNextHookEx( m_mouseHook, code, wParam, lParam );
switch( wParam ) {
case WM_LBUTTONDOWN:{
int _hereIsANegativeNumber = GET_X_LPARAM( lParam );
break;}
}
return CallNextHookEx( 0, code, wParam, lParam );
}
Run Code Online (Sandbox Code Playgroud)
这是我设置钩子的方式:
m_mouseHook = SetWindowsHookEx( WH_MOUSE_LL, &mouseHook, GetModuleHandle( NULL ), 0 );
Run Code Online (Sandbox Code Playgroud)
在WH_MOUSE_LL钩子中,lParam不是鼠标坐标 - 而是指向a的指针MSLLHOOKSTRUCT.
所以,要获得坐标:
POINT pt = reinterpret_cast<MSLLHOOKSTRUCT*>(lParam)->pt;
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅LowLevelMouseProc.
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |