2009-08-23 3 views
2

私は、この所有者が自分のコードでタブ完成キーに相当するものを描いたものが必要です。 TextMateはthis exampleのようになります。NSMenuItemで独自のキーを描画するにはどうすればいいですか?

メニューの図がCarbonベースであると聞いていましたが、それほど巨大なハックではないと思います。

私は何を試しても、私が見たどこであれ私は手がかりを見つけることができませんでした。

EDIT: 私も炭素ベースの答えを受け入れることを望んだ、バージョン上で動作するだけでは何も> =これを達成する10.4

答えて

2

一つの方法は、アイテムを自分で描画することです。私はキーの同等の図面をオーバーライドする方法があるかどうかはわかりません。 MenuItemViewサンプルコードを見てください。

+0

はいおかげで私は、メニューバーの項目でNSViewのの埋め込みについて知っているが、これは非常に高価であり、唯一の10.5 TextMateはそれほど10.4で同じことを行うことができます彼らは、描画を行うための別の方法を発見した上で動作します。 – Lothar

+0

はい、TextMateがハッキングしています。 10.4でやっていることをするためのサポートされた方法はありません。 – Ken

3

メニューバーは、10.6であっても、まだCarbonに基づいています。 Carbonレベルでは、アプリケーションが実際にそのキーをmenuitemにマップしているかどうかにかかわらず、menuitemで必要なキーの同等物を設定できるAPIがあります(下記参照)。言い換えれば、Carbonを使用すると、動作とは独立してメニュー項目の表示を調整することができます。このAPIを使用すると、メニューアイテムに表示するキーボードショートカットを設定できます。

残念ながら、このAPIのドキュメントはもう存在しないようです。しかし、ヘッダファイルを読むことはできます。私はあなたが望むAPIは/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/Headers/Menus.hだと思います。私はHIToolboxが64ビットではないことを知っていますが、CocoaのメニューはまだCarbonメニューに基づいているため、メニューAPIはまだ存在するはずです。

+0

Hmmm、私は本当にヘッダーファイルだけでそれをしたくありません。それはあまりにも多くの試行錯誤です。 Carbonベースのサンプルがいくつかあったのを知っていましたが、見つけられませんでした。 – Lothar

+0

Carbon(およびToolbox)のドキュメントは消滅していません。 AppleはそれをLegacy docsetに移しました。ここにメニューマネージャーがあります:http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/Menu_Manager/ –

+0

ええ、私はレガシードキュメントセットがXcodeのドキュメントダウンロードの一部であってはならないと思います。 –