我正在尝试使用win32 API ShowCursor(FALSE)隐藏鼠标光标,但是当鼠标到达另一个屏幕时多屏幕设置我在Windows中没有得到任何鼠标更新,无论如何我可以阻止这个吗? / p>
这是一个全屏视频游戏,我似乎找不到任何可以做这样的事情的Windows API。
答案 0 :(得分:1)
根据我的理解,您的问题不是隐藏鼠标光标,而是将其约束到您的窗口?
在这种情况下,ClipCursor
函数应该完成这项工作。
{
RECT windowRect;
GetWindowRect(hWnd, &windowRect);
ClipCursor(&windowRect);
}
对于无边框的全屏窗口,应该可以这样做一次。如果窗口的位置或大小发生变化或窗口失去焦点,则需要重复该步骤。
对于游戏编程,可能有更好的方法,例如DirectInput,它提供独有的鼠标处理模式(tutorials可用)并在较低级别为您完成所有这些。
有一些关于处理此问题的不同方法的讨论,例如this one on the MSDN forums。
另一方面,如果您希望光标能够离开您的窗口,并且仅在窗口上方隐藏它时,您应该处理WM_SETCURSOR
消息并使用SetCursor
来隐藏光标。
case WM_SETCURSOR:
SetCursor(NULL);
return TRUE;