メニューアイテムの情報を定義します。この構造体は GetMenuItemInfo 関数および SetMenuItemInfo 関数で使用されます。
typedef struct tagMENUITEMINFO { UINT cbSize; // 構造体のサイズ UINT fMask; // 取得または設定するメンバ UINT fType; // アイテムのタイプ UINT fState; // アイテムの状態 UINT wID; // アイテムID HMENU hSubMenu; // サブメニューのハンドル HBITMAP hbmpChecked; // チェック表示時のビットマップ HBITMAP hbmpUnchecked; // チェック非表示時のビットマップ ULONG_PTR dwItemData; // 任意の32ビット値 LPTSTR dwTypeData; // アイテムの内容 UINT cch; // アイテムの文字列の長さ HBITMAP hbmpItem; // ビットマップハンドル } MENUITEMINFO, *LPMENUITEMINFO;
MENUITEMINFO 構造体のサイズをバイト単位で指定します。 48 を指定します。
設定または取得する情報のメンバを指定します。以下の値の組み合わせを指定します。
値 | 有効なメンバ |
---|---|
0x00000001 (MIIM_STATE) | fState |
0x00000002 (MIIM_ID) | wID |
0x00000004 (MIIM_SUBMENU) | hSubMenu |
0x00000008 (MIIM_CHECKMARKS) | hbmpChecked, hbmpUnchecked |
0x00000010 (MIIM_TYPE) |
fType, dwTypeData
Windows 98/Me/2000/XP: このフラグは MIIM_BITMAP, MIIM_FTYPE, MIIM_STRING に取って代わられました。 |
0x00000020 (MIIM_DATA) | dwItemData |
0x00000040 (MIIM_STRING) | Windows 98/2000 以降: dwTypeData |
0x00000080 (MIIM_BITMAP) | Windows 98/2000 以降: hbmpItem |
0x00000100 (MIIM_FTYPE) | Windows 98/2000 以降: fType |
メニューアイテムの型を示します。以下の値の組み合わせを指定します。
値 | 意味 |
---|---|
0x00000000 (MFT_STRING) |
文字列を使用してアイテムを表示します。 dwTypeData メンバは文字列のアドレス、 cch メンバは文字列のサイズを表します。 Windows 98/2000 以降: hbmpItem メンバの MIIM_STRING に取って代わられました。 |
0x00000004 (MFT_BITMAP) |
アイテムにビットマップを表示します。 dwTypeData メンバの下位ワードはビットマップハンドルを表します。 Windows 98/2000 以降: hbmpItem メンバの MIIM_BITMAP と hbmpItem メンバに取って代わられました。 |
0x00000010 (MFT_MENUBARBREAK) | メニューバーに対してはメニューアイテムを新しい行に配置します。ドロップダウンメニュー・サブメニュー・ショートカットメニューに対してはメニューアイテムを新しい列に配置します。ドロップダウンメニュー・サブメニュー・ショートカットメニューでは新しい列との間に線が引かれます。 |
0x00000020 (MFT_MENUBREAK) | メニューバーに対してはメニューアイテムを新しい行に配置します。ドロップダウンメニュー・サブメニュー・ショートカットメニューに対してはメニューアイテムを新しい列に配置します。ドロップダウンメニュー・サブメニュー・ショートカットメニューでは新しい列との間には線はが引かれません。 |
0x00000100 (MFT_OWNERDRAW) | オーナードロー・メニューアイテムであることを示します。メニューアイテムの描画をオーナーウィンドウが行ないます。オーナーウィンドウは WM_MEASUREITEM メッセージおよび WM_DRAWITEM メッセージを処理する必要があります。この値が指定された場合は、 dwTypeData はアプリケーション定義値を表します。(HSPからは使えません) |
0x00000200 (MFT_RADIOCHECK) | hbmpChecked メンバが 0 (NULL) のとき、チェックマークの代わりにラジオボタンを表示します。 |
0x00000800 (MFT_SEPARATOR) | セパレーター(区切り線)を表示します。 |
0x00002000 (MFT_RIGHTORDER) | Windows 95/2000 以降: アラビア語やヘブライ語などのシステムで文字列を右から左に表示します。 |
0x00004000 (MFT_RIGHTJUSTIFY) | 以降のアイテムをメニューバーの右側に配置します。メニューバーのアイテムのみに有効です。 |
MFT_STRING, MFT_BITMAP, MFT_SEPARATOR は同時に指定できません。
Windows 98/2000 以降: このメンバは、 fMask メンバに MIIM_FTYPE が指定されたときにのみ使用されます。
メニューアイテムの状態を示します。以下の値の組み合わせを指定します。
値 | 意味 |
---|---|
0x00000000 (MFS_ENABLED, MFS_UNCHECKED, MFS_UNHILITE) | 通常表示にします。 |
0x00000003 (MFS_GLAYED, MFS_DISABLED) | アイテムを灰色で表示し、選択不可にします。 |
0x00000008 (MFS_CHECKED) | アイテムにチェックマークをつけます。 |
0x00000080 (MFS_HILITE) | アイテムをハイライト表示します。 |
0x00001000 (MFS_DEFAULT) | デフォルトアイテムに設定します。デフォルトアイテムは1つのメニューに対して1つまで持つことができます。デフォルトアイテムは太字で表示されます。 |
メニューアイテム ID を示します。このメンバは fMask メンバに MIIM_ID を指定しているときにのみ有効です。
サブメニューまたはドロップダウンメニューのハンドルを示します。サブメニューを持たない場合は 0 (NULL) になります。このメンバは fMask メンバに MIIM_SUBMENU を指定しているときにのみ有効です。
アイテムがチェックされたときにアイテムの隣に表示するビットマップのハンドルを示します。 0 (NULL) の場合はデフォルトビットマップが使用されます。デフォルトビットマップは、 fType メンバに MFT_RADIOCHECK が指定されているときにはラジオボタンに、そうでないときにはチェックマークになります。このメンバは fMask メンバに MIIM_CHECKMARKS を指定しているときにのみ有効です。
アイテムがチェックされていないときにアイテムの隣に表示するビットマップのハンドルを示します。 0 (NULL) の場合は何も表示されません。このメンバは fMask メンバに MIIM_CHECKMARKS を指定しているときにのみ有効です。
アイテムに関連付けられたアプリケーション定義の32ビット値です。
メニューアイテムの内容を表します。このメンバの意味は fType メンバの値に依存します。このメンバは fMask メンバに MIIM_TYPE を指定しているときにのみ有効です。
MFT_STRING 型のアイテムの情報を取得するには、まずこのメンバに 0 (NULL) を指定して GetMenuItemInfo 関数を呼び出します。このとき、 cch メンバにはアイテムのテキストを格納するのに必要なバッファのサイズ(Unicode 版では文字数)が格納されます。バッファを確保した後、このメンバにバッファアドレスを指定して再び GetMenuItemInfo 関数を呼び出します。
その他の型のアイテムの情報を取得する場合は、 GetMenuItemInfo 関数を呼び出すと fType メンバによって指定される値がこのメンバに格納されます。
SetMenuItemInfo 関数を使用してアイテムを設定する場合は、 fType メンバによって要求される値をこのメンバに指定します。
Windows 98/2000 以降: このメンバは fMask メンバに MIIM_STRING を指定しているときに有効です。
MFT_STRING 型のアイテムの情報を取得するときは、アイテムのテキストを格納するバッファのバイト数(Unicode 版の場合は文字数)を指定します。このメンバは fMask メンバに MIIM_TYPE を指定しているときにのみ有効です。それ以外の場合はこのメンバは 0 になります。
Windows 98/2000 以降: このメンバは fMask メンバに MIIM_STRING を指定しているときに有効です。
Windows 98/2000 以降: 表示されるビットマップのハンドルまたは以下の値のいずれかを表します。このメンバは fMask メンバに MIIM_BITMAP を指定しているときにのみ有効です。
値 | 表示されるビットマップ |
---|---|
-1 (HBMMENU_CALLBACK) | ビットマップはメニューを所有するウィンドウによって描画されます。アプリケーションは WM_MEASUREITEM および WM_DRAWITEM メッセージを処理しなければなりません。 |
1 (HBMMENU_SYSTEM) | Windows アイコンまたは dwItemData メンバで指定されるウィンドウのアイコンが描画されます。 |
2 (HBMMENU_MBAR_RESTORE) | メニューバーの「元のサイズに戻す」ボタン |
3 (HBMMENU_MBAR_MINIMIZE) | メニューバーの「最小化」ボタン |
5 (HBMMENU_MBAR_CLOSE) | メニューバーの「閉じる」ボタン |
6 (HBMMENU_MBAR_CLOSE_D) | 非表示のメニューバーの「閉じる」ボタン |
7 (HBMMENU_MBAR_MINIMIZE_D) | 非表示のメニューバーの「最小化」ボタン |
8 (HBMMENU_POPUP_CLOSE) | サブメニューの「閉じる」ボタン |
9 (HBMMENU_POPUP_RESTORE) | サブメニューの「元のサイズに戻す」ボタン |
10 (HBMMENU_POPUP_MAXIMIZE) | サブメニューの「最大化」ボタン |
11 (HBMMENU_POPUP_MINIMIZE) | サブメニューの「最小化」ボタン |
メニューにはテキストまたはビットマップを使用したアイテムを表示させることができますが、両方を同時に使用することはできません。
Windows 98/2000 以降: メニューはテキスト、ビットマップ、およびその両方を使用したアイテムを表示させることができます。
Windows 95 以降 / Windows NT 4.0 以降
HSP 変数 | メンバ | ||
---|---|---|---|
メンバ名 | オフセット | サイズ | |
mii.0 | cbSize ( = 48 ) | 0 | 4 |
mii.1 | fMask | 4 | 4 |
mii.2 | fType | 8 | 4 |
mii.3 | fState | 12 | 4 |
mii.4 | wID | 16 | 4 |
mii.5 | hSubMenu | 20 | 4 |
mii.6 | hbmpChecked | 24 | 4 |
mii.7 | hbmpUnchecked | 28 | 4 |
mii.8 | dwItemData | 32 | 4 |
mii.9 | dwTypeData | 36 | 4 |
mii.10 | cch | 40 | 4 |
mii.11 | hbmpItem | 44 | 4 |