ソフトウェア開発 Win32プログラミング

偽メニューの上でコンテキストメニューを表示させる

戻る


ファイルを階層的に表示させる偽メニュー(fakemenu)を実装し、 さらに偽メニューの上でコンテキストメニュー(IContextMenu)を実装することに成功した。 ランチャーなどの開発に役立つと思われる。

通常、メニューの上にメニューを表示させることはできない。 だから、メニューのようなウィンドウ(偽メニュー)を作る必要がある。 偽メニューは通常のメニューにはない、さまざまな機能を付けることができる。 例えば、切り離し(分離)可能なメニューや、自由なレイアウトのメニュー、コンボボックス付きのメニューなどを実現できる。 もちろん、オーナードローの通常メニューと同じようにSHGetFileInfo関数などを使って、 ファイル・アイコンを取得して、メニューにアイコンを表示することもできる。

ここで実装した偽メニュー(fakemenu.hとfakemenu.cpp)は、通常のメニューAPIとよく似たインターフェース(関数名がMenu→FakeMenu)になっているので、 初心者にも分かりやすくなっている。もちろん、MF_OWNERDRAWフラグを付ければオーナードローもできる。 メニュー項目が多くても、複数列になって表示するようにした。

fakemenu_test.cppでは、WM_MENUSELECTメッセージとC++のマップを利用してフォルダ階層を少しずつ展開するようになっている。 これでどんな深いディレクトリ階層でも偽メニューとして表示できる。

詳しくはソースを見てほしい。なお、この偽メニューはReactOSの新しいスタートメニューのために設計した。

※問題点(2013/01/12):タイトルバーのアクティブ表示ができてない。後で修正する。

ソースとバイナリ: fakemenu_test.zip


戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system