在多屏幕设置中隐藏鼠标光标

时间:2011-06-20 15:22:07

标签: winapi cursor mouse fullscreen

我正在尝试使用win32 API ShowCursor(FALSE)隐藏鼠标光标,但是当鼠标到达另一个屏幕时多屏幕设置我在Windows中没有得到任何鼠标更新,无论如何我可以阻止这个吗? / p>

这是一个全屏视频游戏,我似乎找不到任何可以做这样的事情的Windows API。

1 个答案:

答案 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;