プラットフォーム SDK
InsertMenu
指定されたメニューに新しいメニュー項目を挿入し、他のメニュー項目を下へ移動します。
注意 InsertMenu 関数は InsertMenuItem 関数に取って代わられましたが、InsertMenuItem の拡張機能が必要ない場合は、引き続き InsertMenu を使うこともできます。
BOOL InsertMenu(
HMENU hMenu, // メニューのハンドル
UINT uPosition, // 新しい項目の直前に位置する項目
UINT uFlags, // オプション
UINT_PTR uIDNewItem, // 識別子、メニュー、サブメニューのいずれか
LPCTSTR lpNewItem // メニュー項目の内容
);
パラメータ
- hMenu
- 新しいメニュー項目の挿入先のメニューのハンドルを指定します。
- uPosition
- 挿入するべき新しいメニュー項目の直後に位置するメニュー項目を指定します。たとえば、既存のメニューに 3 つのメニュー項目 m1、m2、m3 があり、新しいメニュー項目 m0 を m1 と m2 の間に挿入したい場合、m2 のメニュー項目を指定します。uFlags パラメータの値に基づいて、直前のメニュー項目の識別子またはメニューバー内での相対位置(オフセット)を指定します。
- uFlags
- uPosition パラメータの意味と、新しいメニュー項目の内容、外観(表示方法)、動作を指定します。このパラメータでは、uPosition パラメータの意味を指定する次の 2 つのフラグのいずれかと、「解説」で示す他のフラグのいずれかを指定しなければなりません。
| 値 | 説明 |
| MF_BYCOMMAND | uPosition パラメータは直後のメニュー項目の識別子を意味します。MF_BYCOMMAND と MF_BYPOSITION のどちらのフラグも指定されていない場合、MF_BYCOMMAND フラグは既定のフラグとして扱われます。 |
| MF_BYPOSITION | uPosition パラメータは直後のメニュー項目の位置を意味します。この位置は、メニュー内でのメニュー項目の相対位置を、0 ベースで指定したものです。たとえば、0 を指定すると、上端のメニュー項目を意味します。uPosition パラメータで -1 を指定すると、新しいメニュー項目はメニューの最後へ追加されます。 |
- uIDNewItem
- 新しいメニュー項目の識別子を指定します。uFlags パラメータで MF_POPUP フラグを指定した場合は、uIDNewItem パラメータで、新しいメニュー項目に対応するドロップダウンメニューまたはサブメニューのハンドルを指定します。
- lpNewItem
- 新しいメニュー項目の内容を指定します。uFlags パラメータで、MF_BITMAP、MF_OWNERDRAW、MF_STRING のどのフラグが指定されているかに応じて、lpNewItem パラメータの意味が異なります。
| 値 | 説明 |
| MF_BITMAP | lpNewItem パラメータは、ビットマップのハンドルを保持しています。 |
| MF_OWNERDRAW | lpNewItem パラメータは、新しいメニュー項目に関係する追加のデータを維持するために使われる、アプリケーション定義の値を保持しています。新しいメニュー項目を作成した際、またはそのメニュー項目の外観を更新した際に、 または メッセージが送信されますが、そのメッセージの lparam パラメータが指す構造体の itemData メンバに、この値が格納されます。 |
| MF_STRING | lpNewItem パラメータは、NULL で終わる文字列へのポインタを保持しています(既定)。 |
戻り値
関数が成功すると、0 以外の値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
解説
メニューを変更した場合、そのメニューに関連するウィンドウが現在表示中かどうかにかかわりなく、必ず DrawMenuBar 関数を呼び出してください。
次のリストは、パラメータで指定できるさまざまなフラグを示します。
| 値 | 説明 |
| MF_BITMAP | ビットマップをメニュー項目として使います。lpNewItem パラメータは、このビットマップのハンドルを保持しています。 |
| MF_CHECKED | メニュー項目の隣にチェックマークを表示します。アプリケーションがチェックマークを表すビットマップを提供している場合(SetMenuItemBitmaps 関数を参照)、このフラグを指定すると、メニューアイテムの隣にそのビットマップが表示されます。 |
| MF_DISABLED | メニュー項目を無効にします。そのため、そのメニュー項目は選択できませんが、淡色表示にはなりません。 |
| MF_ENABLED | メニュー項目を有効にします。そのメニュー項目は選択できますし、それまで淡色表示になっていた場合は、通常の表示へ戻ります。 |
| MF_GRAYED | メニュー項目を無効にし、淡色表示にします。そのため、そのメニュー項目は選択できません。 |
| MF_MENUBARBREAK | メニューバーに対してこのフラグを指定した場合、MF_MENUBREAK フラグと同じことを意味します。ドロップダウンメニュー、サブメニュー、ショートカットメニューのいずれかに対してこのフラグを指定した場合、新しい列と従来の列を垂直な線で区切ります。 |
| MF_MENUBREAK | メニューバーに対してこのフラグを指定した場合、新しい行にメニュー項目を表示します。ドロップダウンメニュー、サブメニュー、ショートカットメニューのいずれかに対してこのフラグを指定した場合、新しい列にメニュー項目を表示しますが、新しい列と従来の列を区切りません。 |
| MF_OWNERDRAW | このメニュー項目が、所有側が描く項目であることを指定します。最初にメニューを表示する前に、このメニューを所有しているウィンドウは メッセージを受信し、このメニュー項目の幅と高さを取得します。その後、このメニュー項目の外観を更新する必要が生じると、所有側ウィンドウのウィンドウプロシージャへ メッセージが送信されます。 |
| MF_POPUP | このメニュー項目がドロップダウンメニューまたはサブメニューを開くことを指定します。uIDNewItem パラメータは、そのドロップダウンメニューまたはサブメニューのハンドルを指定しています。メニューバーへ 1 つのメニュー名を追加する場合や、ドロップダウンメニュー、サブメニュー、ショートカットメニューのいずれかへ、サブメニューを開く 1 つのメニュー項目を追加する場合は、このフラグを使います。 |
| MF_SEPARATOR | 水平な分割線(区切り線)を描きます。ドロップダウンメニュー、サブメニュー、ショートカットメニューのいずれかでのみ、このフラグを使います。この分割線を淡色表示、無効、強調表示にすることはできません。lpNewItem と uIDNewItem の各パラメータは無視されます。 |
| MF_STRING | メニュー項目が文字列であることを指定します。lpNewItem パラメータは、その文字列へのポインタを保持しています。 |
| MF_UNCHECKED | メニュー項目の隣にチェックマークを表示しません(既定)。アプリケーションがアンチェックマーク(hBitmapUnchecked パラメータで指定)を表すビットマップを提供している場合(SetMenuItemBitmaps 関数を参照)、このフラグを指定すると、メニューアイテムの隣にそのビットマップが表示されます。 |
次の各フラグはそれぞれ 1 つのグループを形成していて、各グループではどれか 1 つのフラグしか指定できません。
•MF_BYCOMMAND と MF_BYPOSITION
•MF_DISABLED、MF_ENABLED、MF_GRAYED
•MF_BITMAP、MF_STRING、MF_OWNERDRAW、MF_SEPARATOR
•MF_MENUBARBREAK と MF_MENUBREAK
•MF_CHECKED と MF_UNCHECKED
対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装
参照
AppendMenu, DeleteMenu, DrawMenuBar, InsertMenuItem, ModifyMenu, RemoveMenu, SetMenuItemBitmaps, ,