我需要跟踪屏幕上的光标位置,为此我使用了WinAPI中的一个函数
// code from Qt(!) project
#include <windows.h>
#pragma comment(lib, "user32.lib")
static HHOOK hHook;
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam) {
switch(wParam)
{
case WM_MOUSEMOVE:
// code
break;
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
//in the class constructor
hHook = (HHOOK) ::SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)MouseProc, GetModuleHandle(0),0) ;
这是可行的,但有时程序在退出时崩溃。 如果注释掉最后一行,程序不会崩溃,但鼠标不会被跟踪。 我不知道WinApi,所以错误可能很明显
附注。 我知道如何获得坐标,但问题是程序退出后崩溃,如果使用WinAPI
您可以为此使用getCursorPos()
函数:
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam) {
switch(wParam)
{
case WM_MOUSEMOVE:
POINT p;
GetCursorPos(&p);
sprintf(msgbuf, "My coordinates is (%d,%d)\n", p.x,p.y);
OutputDebugString(msgbuf);
break;
}
}
你可以在这里读到更多关于它的信息。 编辑1:
如果是自己的win32窗口,这是一个可行的解决方案。 但是如果是另一个窗口你就不能用这个了!