3

是否可以为以全屏模式运行的 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];

不过,在我离开全屏模式之前,面板不会出现。

4

1 回答 1

2

您必须增加窗口级别。我不知道-enterFullScreenMode:withOptions——但使用 CoreGraphics 全屏 API,我们是这样做的:

int level = CGShieldingWindowLevel();
[m_hudPanel setLevel:level];

或者也许你必须使用level + 1,我忘记了。关键是,窗口首先按级别组织,然后在每个级别内组织。当您将窗口移动到前面时,它只会移动到其关卡的前面。这样,背景、菜单栏、停靠栏和屏幕保护程序就留在了它们应有的位置(它们只是特殊类型的窗口)。

于 2011-05-18T01:47:51.133 回答