Mac OS X,让窗口翻过菜单栏

时间:2011-07-21 07:14:25

标签: cocoa macos nswindow menubar

是否可以通过菜单栏创建一个窗口,而无需全屏显示?

提前致谢!

3 个答案:

答案 0 :(得分:15)

是的,琐碎的:

window.level = NSMainMenuWindowLevel + 1;

(参考:Drawing to the Full Screen适用于Mac OS X的OpenGL编程指南。)

sebastianmarkow是正确的,因为这对于普通文档窗口来说是一种可怕的行为,但是有几种窗口类型是正常的:游标,工具提示和Xscope等特殊实用程序。

答案 1 :(得分:3)

我喜欢Jens Ayton的回答,但不是选择那样的任意数字,我认为最好使用其中一个定义的常量。

就个人而言,我使用NSPopUpMenuWindowLevel作为:

self.window.level = NSPopUpMenuWindowLevel;

在发布此答案时,您可能更喜欢的其他常量包括:

  • NSNormalWindowLevel
  • NSFloatingWindowLevel
  • NSSubmenuWindowLevel
  • NSNormalWindowLevel
  • NSMainMenuWindowLevel
  • NSStatusWindowLevel
  • NSModalPaneWindowLevel
  • NSPopUpMenuWindowLevel
  • NSScreenSaverWindowLevel

以下是参考资料(Apple倾向于改变他们组织文档的方式并多年来打破这些链接,但API没有太大变化,这就是为什么我在上面列出了这个列表。我怀疑这个链接是否有效在3年左右的时间里,这些常数在未来20年内可能不会有太大变化。)

https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSWindow_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Window_Levels

答案 2 :(得分:2)

我不相信你可以登上菜单栏,但是你可以通过调用

将菜单栏设置为当应用程序是最前面的应用程序时自动隐藏
[[NSApplication sharedApplication] setPresentationOptions: NSApplicationPresentationAutoHideMenuBar];

应该允许您使用应用程序中通常用于菜单栏的空间。