所以,我正在使用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,所以我只是编写了这些数字,以后会明显改变。
它有效,但它非常草率。就像有些帧会被丢弃一样。
答案 0 :(得分:1)
您可以使用ClipCursor()
来限制鼠标的移动。在释放之前,鼠标将无法移动到指定的矩形之外。
答案 1 :(得分:0)
您可以尝试通过SetWindowsHookEx
(传递WH_MOUSE
或甚至WH_MOUSE_LL
)安装一个钩子,并在相应的窗口消息被发送之前简单地丢弃所有移动事件。