アプリケーションメニューの仕組み : Windows リボンフレームワーク
リボンフレームワークのアプリケーションメニューとは?
アプリケーションメニュー (Application Menu) はリボンアプリケーションに必須の要素です。 アプリケーションメニューは、タブ行の先頭のボタンをクリックすることによって表示できます。
ワードパッド (WordPad) のアプリケーションメニュー
アプリケーションメニューは二つのペインから成ります。MenuGroup 要素によるコマンドのリストと、 ApplicationMenu.RecentItems 要素による「最近使ったアイテム」(Recent Items) です。
XAML の書き方
さっそくアプリケーションメニューを表す XAML 要素について記載します。
以下のコードをじっと見ていただければわかると思いますが、 アプリケーションメニュー は Application.Views の下の、 Ribbon の下の、 Ribbon.ApplicationMenu の下にあります。
<?xml version='1.0' encoding='utf-8'?> <Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon"> <Application.Commands> <!-- ここにコマンド・アイコンが定義される --> <Command Name="cmdNew" LabelTitle="New"> <Command.LargeImages> <Image Source="res/new.bmp"/> </Command.LargeImages> </Command> <Command Name="cmdExit" LabelTitle="Exit"> <Command.LargeImages> <Image Source="res/exit.bmp"/> </Command.LargeImages> </Command> <Command Name="cmdMRUList" LabelTitle="Recent Documents"/> </Application.Commands> <Application.Views> <Ribbon> <Ribbon.ApplicationMenu> <!-- アプリケーションメニューはここ --> <ApplicationMenu> <!-- 最近使ったアイテム --> <ApplicationMenu.RecentItems> <RecentItems CommandName="cmdMRUList" MaxCount="10" /> </ApplicationMenu.RecentItems> <!-- メニューグループ --> <MenuGroup Class="MajorItems"> <Button CommandName="cmdNew"/> <Button CommandName="cmdExit"/> </MenuGroup> </ApplicationMenu> </Ribbon.ApplicationMenu> </Ribbon> </Application.Views> </Application>
ApplicationMenu は全体が、ApplicationMenu.RecentItems (最近使ったアイテム)と MenuGroup (メニューグループ)に分かれています。RecentItems は一個だけ存在でき、 MenuGroup は必要に応じて複数含めることが出来ます。
MenuGroup を複数含めた場合、MenuGroup の間に水平の区切り線が表示されます。
アプリケーションメニューにおける MenuGroup 要素の制限
アプリケーションメニューで使用できるコントロール要素は以下の要件をみたさないといけません。
- MenuGroup アイテムは Class 属性を "MajorItems" という値で設定しなければいけません。
- Application Menu の MenuGroup は Button, Toggle Button, Drop-Down Button, Split Button, Drop-Down Gallery, Split Button Gallery コントロールのみをサポートします。
ペイントやワードパッドなどの基本的な Windows 7 アプリケーションのアプリケーションメニューでは、 ボタン (Button)、ドロップダウンボタン (Drop-Down Button)、スプリットボタン (Split Button) のみを利用しています。 この資料ではそれらのコントロールについて扱います。
ビットマップの種類
アプリケーションメニューには通常、メニュー項目の左端に 32x32 のアイコンが表示されます。
基本的にメニューに表示するビットマップ (bitmap) ファイルは、アルファチャネル付きの 32 ビットビットマップです。 もう一種類は、 ハイコントラスト用のビットマップで、こちらは 4 ビットのビットマップファイルを使います。
Windows 7 までの Windows にインストールされるペイントでは 24 ビットのビットマップまでしかサポートしていません。このため、ペイントを使ってビットマップを作っても、 アプリケーションメニューに正しく表示されませんので、注意してください。 32ビットのアルファチャネルつきビットマップが作れるソフトウェアを使ってください。
将来のバージョンではちゃんと 32 ビットのビットマップもサポートして欲しいですね。
ちなみに、私は GIMP を使いました。GIMP でアルファチャネル付きの 32 ビットビットマップとして保存できます。 ビットマップを保存するときに、Advanced Option で以下のように 32 bits ARGB を選択します。