首页 > 解决方案 > 使用 NSMenu 以编程方式获取 Cocoa 菜单栏,如何获取标准项目“服务”、“隐藏应用程序”、“隐藏其他”、“显示全部”等

问题描述

在脱碳方面,我现在开始使用NSMenu.

Carbon 似乎非常适合将标准项目添加到应用程序菜单:ServicesHide appHide OthersShow AllQuit app,甚至使用系统偏好设置的语言和区域中用户的首选语言设置添加它们,所以用德语Hide Others添加为Andere ausblenden

我只需要添加AboutPreferences项目。

但是,似乎在 Cocoa 中我必须自己添加这些标准项,但是我怎样才能找出在用户的首选语言中调用的Hide Others呢?

可可相当于CreateStandardWindowMenu什么?

标签: cocoamacos-carbonnsmenu

解决方案


如果您让 Xcode 创建一个新的 Cocoa 应用程序项目,它将生成一个您可以检查的 MainMenu.xib。看起来“隐藏其他人”、“退出”等只是分配了特定操作的菜单项,但“服务”似乎有一些特殊的魔力。即使您不想从笔尖呈现整个菜单栏,您也可以从笔尖加载它,然后挑选某些菜单项并将它们移动到另一个菜单,重命名它们或其他方式。尽管我不确定我是否了解您要完成的工作。即使您不想本地化,也可以使用笔尖。

为了解决您修改后的问题的最后一部分,该NSApplication对象具有一个windowsMenu属性,即您可以创建一个菜单并说[NSApp setWindowsMenu: myMenu]. 但我不知道这是否会添加诸如“将所有内容放在前面”之类的项目,或者您是否必须自己创建这些项目。


推荐阅读