MENUITEMINFO

メニューアイテムの情報を定義します。この構造体は 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;

メンバ

cbSize

MENUITEMINFO 構造体のサイズをバイト単位で指定します。 48 を指定します。

fMask

設定または取得する情報のメンバを指定します。以下の値の組み合わせを指定します。

有効なメンバ
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
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 が指定されたときにのみ使用されます。

fState

メニューアイテムの状態を示します。以下の値の組み合わせを指定します。

意味
0x00000000 (MFS_ENABLED, MFS_UNCHECKED, MFS_UNHILITE)

通常表示にします。

0x00000003 (MFS_GLAYED, MFS_DISABLED)

アイテムを灰色で表示し、選択不可にします。

0x00000008 (MFS_CHECKED)

アイテムにチェックマークをつけます。

0x00000080 (MFS_HILITE)

アイテムをハイライト表示します。

0x00001000 (MFS_DEFAULT)

デフォルトアイテムに設定します。デフォルトアイテムは1つのメニューに対して1つまで持つことができます。デフォルトアイテムは太字で表示されます。

wID

メニューアイテム ID を示します。このメンバは fMask メンバに MIIM_ID を指定しているときにのみ有効です。

hSubMenu

サブメニューまたはドロップダウンメニューのハンドルを示します。サブメニューを持たない場合は 0 (NULL) になります。このメンバは fMask メンバに MIIM_SUBMENU を指定しているときにのみ有効です。

hbmpChecked

アイテムがチェックされたときにアイテムの隣に表示するビットマップのハンドルを示します。 0 (NULL) の場合はデフォルトビットマップが使用されます。デフォルトビットマップは、 fType メンバに MFT_RADIOCHECK が指定されているときにはラジオボタンに、そうでないときにはチェックマークになります。このメンバは fMask メンバに MIIM_CHECKMARKS を指定しているときにのみ有効です。

hbmpUnchecked

アイテムがチェックされていないときにアイテムの隣に表示するビットマップのハンドルを示します。 0 (NULL) の場合は何も表示されません。このメンバは fMask メンバに MIIM_CHECKMARKS を指定しているときにのみ有効です。

dwItemData

アイテムに関連付けられたアプリケーション定義の32ビット値です。

dwTypeData

メニューアイテムの内容を表します。このメンバの意味は fType メンバの値に依存します。このメンバは fMask メンバに MIIM_TYPE を指定しているときにのみ有効です。

MFT_STRING 型のアイテムの情報を取得するには、まずこのメンバに 0 (NULL) を指定して GetMenuItemInfo 関数を呼び出します。このとき、 cch メンバにはアイテムのテキストを格納するのに必要なバッファのサイズ(Unicode 版では文字数)が格納されます。バッファを確保した後、このメンバにバッファアドレスを指定して再び GetMenuItemInfo 関数を呼び出します。

その他の型のアイテムの情報を取得する場合は、 GetMenuItemInfo 関数を呼び出すと fType メンバによって指定される値がこのメンバに格納されます。

SetMenuItemInfo 関数を使用してアイテムを設定する場合は、 fType メンバによって要求される値をこのメンバに指定します。

Windows 98/2000 以降: このメンバは fMask メンバに MIIM_STRING を指定しているときに有効です。

cch

MFT_STRING 型のアイテムの情報を取得するときは、アイテムのテキストを格納するバッファのバイト数(Unicode 版の場合は文字数)を指定します。このメンバは fMask メンバに MIIM_TYPE を指定しているときにのみ有効です。それ以外の場合はこのメンバは 0 になります。

Windows 98/2000 以降: このメンバは fMask メンバに MIIM_STRING を指定しているときに有効です。

hbmpItem

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