我在opengl中创建游戏,在窗口模式下我有双光标问题(我的和系统的)。我隐藏系统光标,在游戏中只使用我的光标。
当窗口在dock下,我移动光标在dock上(光标仍然在窗口内),系统光标显示。从这一刻起,我有双光标(我的和系统)。
我尝试了三种解决方案:
1.使用事件当光标是在和当光标是出码头,但我没有找到这样的事件:(
1.当系统光标取消隐藏或隐藏时使用事件,但我也没有找到这样的事件:(
1.获取有关隐藏光标计数的信息。当我使“CGDisplayHideCursor”隐藏光标计数递减。当光标在停靠上取消隐藏时,我不知道它,因为我没有任何事件,但我可以检查我的计时器,如果光标应该隐藏,这样我就可以隐藏它,但这样我会有很多次隐藏光标,所以我不知道光标隐藏计数,我没有正确地取消隐藏:(
也许这个问题应该用完全不同的方式来解决。
2条答案
按热度按时间hiz5n14c1#
您可以尝试以下任何操作:
这不是一个严格的编程问题,而是一个可用性问题。你应该决定你想让用户做什么,并实现它。我相信在窗口模式下不显示游戏光标是可以的(除非你在写一个需要很多不同光标的策略游戏)。
xn1cxnb42#
与其使用CGDisplayHideCursor(隐藏计数神秘而不可读),解决方案是设置一个覆盖整个窗口的透明光标矩形。这真的很健壮--当鼠标在窗口内时,它可靠地隐藏光标,而在其他时间显示光标。
通过查看Simple DirectMedia Layer(SDL)2源代码,我最终了解了这一点-下面是从中提取的一个工作最小示例。
在NSView子类实现中重写resetCursorRects: