是否可以为以全屏模式运行的Cocoa应用程序添加HUD覆盖? 我按如下方式切换到全屏模式。
// An NSView.
[self enterFullScreenMode:m_screen withOptions:nil];
HUD叠加层属于NSPanel
类型,是上述视图的成员。要显示HUD面板,请运行以下代码行。
[m_hudPanel setFloatingPanel:YES];
[m_hudPanel orderFront:self];
[m_hudPanel orderWindow:NSWindowAbove relativeTo:[[self window] windowNumber]];
[m_hudPanel makeKeyAndOrderFront:self];
[m_hudPanel makeFirstResponder:self];
但是,在我离开全屏模式之前,面板不会出现。
答案 0 :(得分:2)
您必须提高窗口级别。我不知道-enterFullScreenMode:withOptions
- 但是使用CoreGraphics全屏API,我们这样做了:
int level = CGShieldingWindowLevel();
[m_hudPanel setLevel:level];
或许你必须使用level + 1
,我忘了。重点是,窗口首先按级别组织,然后在每个级别内组织。将窗口移动到前面时,它只会移动到其前面的水平。这样,背景,菜单栏,停靠栏和屏幕保护程序就会停留在它们应该的位置(它们只是特殊类型的窗口)。