2012-04-19 6 views
0

私は、コカコーアプリケーションで偽のメニューバーを作成しようとしています。私は必要なものの95%を遂行することができました。メニューバーだけがmainMenuと一致しません。これまで私が持っていたもののスクリーングラブを参照してください。NSMenuを境界線のないウィンドウに埋め込んで偽のメニューバーを作成する方法

xibに "Pop Up Button"オブジェクトを使用して、システムメニューバーをエミュレートしようとしています。問題は、ポップアップメニューであり、mainMenuとまったく同じではないことです。さらに、タイトルメニュー項目はハイライト表示されず、ポップアップメニューにはメニュータイトルと重なる丸い角があります。それで、それは近いですが、葉巻はありません。

デフォルトのシステムメニューバーに一致する境界線のないウィンドウ内に偽のメニューバーを作成することはできますか?もしそうなら、どうですか?

また、デフォルトでは、システムメニューバーと私がボタンで達成できたよりも密接に一致するNSStatusItemを使ってみましたが、NSStatusItemをウィンドウに埋め込むことができませんでした。

理想的には、ウィンドウビューに直接NSMenuを埋め込む方法があれば、それが最適な解決策です。

fakemenubar

fakemenubar

答えて

1

あなたは、ビューのmenuコンセントにNSMenuを割り当て、その後、検索し、トップレベルのアイテムのように機能するカスタムボタンまたはビューを作成する必要があります。

ビューにmenuForEvent:を実装し、マウスがダウンしたときにメニューを返すか、マウスをクリックしたときにNSMenuクラスメソッド+popUpContextMenu:withEvent:forView:を呼び出すことができます。

これはちょっと奇妙な考えです。なぜあなたはそれをしたいのですか?

+0

ありがとうございます。私はあなたの提案を実装しようとします。おそらくHIGとは違うのですが、エージェント(UIElement = YES in plist)のための最小限のメニューバーを表示するために必要です。最終的には、UIElement設定と一緒に偽のメニューバーを使用すると、メニューバーを表示できますが、ドックアイコンは表示されず、コマンド+タブからアプリケーションが非表示になります。そう、メニューバーとドックレス。エージェントアプリケーションである根本的な理由は、エージェントアプリケーションウィンドウを選択するときにフリックを減らすことです。私はここにリンクが完成したらそれを提供し、いくつかのコードも投稿します。 – rgbworld

関連する問題