2011-06-20 134 views
2

我试图隐藏鼠标光标使用win32 API ShowCursor(FALSE),但在多屏幕设置时鼠标到达另一个屏幕我没有得到任何鼠标更新在Windows中,反正有我可以防止这个?在多屏幕设置中隐藏鼠标光标

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

回答

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;