【问题标题】:How to create a HUD overlay at full screen mode?如何在全屏模式下创建 HUD 叠加层?
【发布时间】:2023-03-24 05:02:01
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c cocoa overlay fullscreen hud


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-22
      • 2012-01-10
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      相关资源
      最近更新 更多