GET_X_LPARAM给出负值
GET_X_LPARAM gives negative value
我已经为鼠标创建了一个钩子。我想获得鼠标点击坐标,但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 );
}
这就是我设置挂钩的方式:
m_mouseHook = SetWindowsHookEx( WH_MOUSE_LL, &mouseHook, GetModuleHandle( NULL ), 0 );
在WH_MOUSE_LL
挂钩中,lParam
不是鼠标坐标,而是指向MSLLHOOKSTRUCT
的指针。
因此,要获得坐标:
POINT pt = reinterpret_cast<MSLLHOOKSTRUCT*>(lParam)->pt;
有关详细信息,请参阅LowLevelMouseProc。
因为对于LowLevelMouseProc过程中的WH_MOUSE_LL,您得到的LPARAM变量是指向MSLLHOOKSTRUCT结构的指针,并使用它的pt成员来获取鼠标坐标
相关文章:
- Cpp-Tuple使用带有变量的get
- 通过 get-Method 访问变量在类外不起作用
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- C++中是否有任何函数等同于python中字典的get函数?
- 使用istringstearm和get行缓慢读取文件
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 使用 cin.get() 初始化字符数组
- std::variant<>::get() 不能使用 Apple LLVM 10.0 编译
- 编写 cin.get() 以接收字符数组时出现问题
- 作用域枚举和标准::get
- 收到消息时,lParam 的行为是什么WM_KEYDOWN?
- Visual Studio 2017 中的 cpprestapi 问题找不到 POST/GET 常量
- 在 C++/C 中使用 CURL 发出带有数据文件的 GET HTTP 请求
- 将双倍转换为 LPARAM 的麻烦
- 使用"push_back"作为带有"get"函数C++的向量
- 使用 cin.get 读取字符数组
- 如何使用 fstream 的 .get 字符串?
- std::get like (partial) template specialization
- 从 unique_ptr::get 发送指针作为指针引用进入函数