BOOL SHCreateMenuBar( SHMENUBARINFO * pmb );
typedef struct tagSHMENUBARINFO {
DWORD cbSize;
HWND hwndParent;
DWORD dwFlags;
UINT nToolBarId;
HINSTANCE hInstRes;
int nBmpId;
int cBmpImages;
HWND hwndMB;
COLORREF clrBk;
} SHMENUBARINFO, *PSHMENUBARINFO;
| cbSize | sizeof(SHMENUBARINFO) を設定します。 |
|---|---|
| hwndParent | メニューバーを所有する(WM_COMMANDを処理する)ウィンドウのハンドルを設定します。 |
| dwFlags | 0 でいいです。 SHCMBF_COLORBK を指定すると clrBk メンバでメニューバーの色を指定できるらしいですがうまくいきません。 |
| nToolBarId | メニューバーを表すリソースのIDを設定します。(後述) |
| hInstRes | アプリケーションのインスタンスハンドルを設定します。(::AfxGetInstanceHandle() でOK) |
| nBmpId | 必ず 0 を指定します。 |
| cBmpImages | 必ず 0 を指定します。 |
<MenuBar ID> RCDATA MOVEABLE PURE
BEGIN
<Menu ID>, <Number of buttons>,
I_IMAGENONE, <Cmd1ID>, <Btn1State>, <Btn1Style>, <String1ID>, 0, <Menu1Index>
I_IMAGENONE, <Cmd2ID>, <Btn2State>, <Btn2Style>, <String2ID>, 0, <Menu2Index>
END
| MenuBar ID | このリソースのIDを指定します。resourceppc.h にリソースIDを手動で作成してから、そのIDを指定する事になると思います。 |
|---|---|
| Menu ID | ポップアップメニューに使用するメニューのリソースIDを指定します。 |
| Number of buttons | メニューバーのボタンの数(1か2) |
| I_IMAGENONE | ボタンに画像を使用しない事を表します。Windows Moblie 5.0 スタイルのメニューバーでは画像は使えないらしいのでこれは固定でよいです。 だれか画像付きを実験してみてください(ぉ |
| Cmd1ID, Cmd2ID | メニューバーのボタンをポップアップではなくボタンとして動作させたときのコマンドID |
| Btn1State, Btn2State | メニューバーボタンの初期状態。とりあえず TBSTATE_ENABLED にしておけば普通のボタンになります。他の状態フラグが使えるかは確認したことないです。 |
| Btn1Style, Btn2Style | メニューバーボタンのスタイル。TBSTYLE_AUTOSIZE と、TBSTYLE_BUTTON または TBSTYLE_DROPDOWN を組み合わせて指定しとけばいいようです。 TBSTYLE_BUTTON にするとポップアップメニューが表示されず、メニューバーをタップした時にコマンドが発行されます。 |
| String1ID, String2ID | メニューバーボタンに表示する文字列のリソースID。先に String Table に作っておいたリソースのIDを指定します。 |
| 0 | 0 を指定しろと書いてある資料しか見た覚えがないので 0 でいいんでしょう。 |
| Menu1Index, Menu2Index | メニューバーボタンをタップしたときに表示するサブメニューのインデックスを指定します。サブメニューを出さない場合は NOMENU を指定します。 |
BEGIN_MESSAGE_MAP(CMenuBarDemoDlg, CDialog) (中略) ON_COMMAND(IDM_BUTTON1, OnMenuButton1) ON_COMMAND(IDM_BUTTON2, OnMenuButton2) ON_COMMAND(IDM_BUTTON3, OnMenuButton3) END_MESSAGE_MAP()
IDR_MAINMENU1 RCDATA
BEGIN
0x008a, 0x0002, 0xfffe, 0x0099, 0x0004, 0x0010, 0x0099, 0x0000, 0xffff,
0xfffe, 0x0099, 0x0004, 0x0018, 0x0095, 0x0000, 0x0001
END