C ++ WinAPI - 草率鼠标输入

时间:2014-02-21 15:00:04

标签: c++ winapi

所以,我正在使用OpenGL在C ++中制作游戏,我希望我的光标停留在屏幕中间。

在每个帧的开头,我打电话

POINT pt;
pt.x = 400;
pt.y = 300;
ClientToScreen(hWnd, &pt);
SetCursorPos(pt.x, pt.y);

然后,在WM_MOUSEMOVE事件中我做

POINT p;
GetCursorPos(&p);
ScreenToClient(hWnd, &p);
dx = p.x - 400;
dy = p.y - 300;

窗口是800x600,所以我只是编写了这些数字,以后会明显改变。

它有效,但它非常草率。就像有些帧会被丢弃一样。

2 个答案:

答案 0 :(得分:1)

您可以使用ClipCursor()来限制鼠标的移动。在释放之前,鼠标将无法移动到指定的矩形之外。

答案 1 :(得分:0)

您可以尝试通过SetWindowsHookEx(传递WH_MOUSE或甚至WH_MOUSE_LL)安装一个钩子,并在相应的窗口消息被发送之前简单地丢弃所有移动事件。