Cocoa 如何在NSMenuItem中绘制自己的密钥等价物?

Cocoa 如何在NSMenuItem中绘制自己的密钥等价物?,cocoa,user-interface,nsmenuitem,Cocoa,User Interface,Nsmenuitem,在我自己的代码中,我需要这个所有者绘制的tab Completion键等价物。就像TextMate在中所做的那样 我听说菜单是碳基的,但我不希望这是一个巨大的黑客 但无论我尝试什么,无论我在哪里寻找,我都找不到线索 编辑: 我甚至愿意接受一个基于碳的答案,只要是在版本>=10.4上运行的任何东西,实现这一点的一个方法就是自己画这个项目。我不确定是否有一种方法可以覆盖等价键上的图形。看看示例代码。即使在10.6中,菜单栏仍然基于碳。在Carbon级别,有一个API(见下文)允许您在menuitem

在我自己的代码中,我需要这个所有者绘制的tab Completion键等价物。就像TextMate在中所做的那样

我听说菜单是碳基的,但我不希望这是一个巨大的黑客

但无论我尝试什么,无论我在哪里寻找,我都找不到线索

编辑:
我甚至愿意接受一个基于碳的答案,只要是在版本>=10.4上运行的任何东西,实现这一点的一个方法就是自己画这个项目。我不确定是否有一种方法可以覆盖等价键上的图形。看看示例代码。

即使在10.6中,菜单栏仍然基于碳。在Carbon级别,有一个API(见下文)允许您在menuitem上设置任何您想要的等价键,而不管应用程序是否实际将该等价键映射到menuitem。换句话说,Carbon允许您独立于行为调整菜单项的显示。使用此API,您可以设置希望菜单项显示的任何键盘快捷键


不幸的是,这个API的文档似乎已经没有了。但是您仍然可以读取头文件。我相信您想要的API在
/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/Headers/Menus.h
中。我知道HIToolbox不是64位的,但我怀疑菜单API一定仍然是64位的,因为Cocoa菜单仍然基于Carbon菜单。

是的,谢谢,我知道在菜单栏项中嵌入了NSView,但这非常昂贵,而且只能在10.5上工作TextMate可以在10.4上做同样的事情,所以他们找到了另一种方法来绘制。是的,TextMate正在进行黑客攻击。没有支持的方法来完成它在10.4.Hmmm上所做的事情,我真的不想只使用头文件。这对我来说是太多的试错了。我知道有一些基于碳的例子,但我找不到。关于碳的文档(甚至工具箱)并没有消失;苹果将其转移到传统的docset。这里是菜单管理器:嗯,我想旧的文档集一定不是Xcode文档下载的一部分。