InsertMenu(A)

新しいメニュー項目をメニューに挿入し、以降の項目をメニューの下方へ移動させます。

Note:InsertMenu関数はInsertMenuItem関数に取って代わられました。ただし、InsertMenuItem関数で拡張された機能を必要としないのであれば、引き続きInsertMenu関数を使用することができます。

BOOL InsertMenuA(
    HMENU    hMenu,          // menu handle
    UINT     uPosition,      // item ID or position
    UINT     uFlags,         // option flags
    UINT_PTR uIDNewItem,     // item ID
    LPCTSTR  lpNewItem       // item content
);

USER32.DLL

引数

hMenu

項目を挿入するメニューバー、ドロップダウンメニュー、サブメニュー、またはショートカットメニューのハンドルを指定します。

uPosition

uFlagsパラメータで指定されているように、新しい項目をどの項目の直前に挿入するのかを指定します。

uFlags

uPositionパラメータの解釈と、メニュー項目の内容、表示および動作を指定するためのフラグを指定します。以下の値の組み合わせを指定することができます。

0x00000000 (MF_BYCOMMAND)

uPositionパラメータがメニュー項目のIDであることを示します。MF_BYCOMMANDおよびMF_BYPOSITIONフラグのどちらも指定されなかった場合のデフォルトです。

0x00000400 (MF_BYPOSITION)

uPositionパラメータが0から始まる新しいメニュー項目の位置インデックスであることを示します。uPositionパラメータに-1を指定すると、新しいメニュー項目はメニューの末尾に追加されます。

0x00000004 (MF_BITMAP)

メニュー項目としてビットマップを使用します。lpNewItemパラメータにはビットマップのハンドルを指定します。

0x00000008 (MF_CHECKED)

メニュー項目の横にチェックマークを表示します。

アプリケーションがSetMenuItemBitmaps関数を使用してチェックマークのビットマップを指定している場合には、メニュー項目の隣にチェック状態のビットマップを表示します。

0x00000002 (MF_DISABLED)

メニュー項目を選択できないように無効にします。ただし、このフラグは項目をグレー表示にしません。

0x00000000 (MF_ENABLED)

メニュー項目を選択可能となるように有効にし、グレー表示から戻します。

0x00000001 (MF_GRAYED)

メニュー項目をグレー表示し、選択できないように無効にします。

0x00000020 (MF_MENUBARBREAK)

メニューバーに項目を追加する場合、メニュー項目を新しい行に配置します。

ドロップダウンメニュー、サブメニュー、ショートカットメニューに項目を追加する場合、新しい列にメニュー項目を配置します。新しい列は元の列と垂直な線で区切られます。

0x00000040 (MF_MENUBREAK)

メニューバーに項目を追加する場合、メニュー項目を新しい行に配置します。

ドロップダウンメニュー、サブメニュー、ショートカットメニューに項目を追加する場合、新しい列にメニュー項目を配置します。新しい列は元の列と垂直な線で区切られません。

0x00000100 (MF_OWNERDRAW)

項目がオーナードロー項目であると指定します。メニューが初めて表示される直前に、メニューを所有するウィンドウはWM_MEASUREITEMメッセージを受け取ります。その後、メニュー項目の表示を更新しなければならないときに、WM_DRAWITEMメッセージがオーナーウィンドウに送信されます。

0x00000010 (MF_POPUP)

メニュー項目がドロップダウンメニューまたはサブメニューを開く項目であることを示します。uIDNewItemパラメータにはドロップダウンメニューまたはサブメニューのハンドルを指定します。ドロップダウンメニュー項目をメニューバーに追加する場合や、サブメニューを開く項目をドロップダウンメニュー、サブメニュー、ショートカットメニューに追加する場合にこのフラグを使用します。

0x00000800 (MF_SEPARATOR)

水平な区切り線を表示します。このフラグはドロップダウンメニュー、サブメニュー、ショートカットメニューにおいて使用されます。区切り線をグレー表示、無効表示、ハイライト表示することはできません。uIDNewItemおよびlpNewItemパラメータは無視されます。

0x00000000 (MF_STRING)

メニュー項目がテキスト文字列であることを示します。lpNewItemパラメータは表示する文字列へのポインタです。

0x00000000 (MF_UNCHECKED)

メニュー項目の横にチェックマークを表示しません。

アプリケーションがSetMenuItemBitmaps関数を使用してチェックマークのビットマップを指定している場合には、メニュー項目の隣にクリア状態のビットマップを表示します。

以下のフラグのグループは同時に指定することはできません。

uIDNewItem

新しいメニュー項目のIDを指定します。

uFlagsパラメータにMF_POPUPを指定した場合は、ドロップダウンメニューまたはサブメニューのハンドルを指定します。

lpNewItem

新しいメニュー項目の内容を指定します。このパラメータは、uFlagsパラメータにMF_BITMAP, MF_OWNERDRAW, MF_STRINGのどのフラグが指定されているかによって、以下のように解釈されます。

MF_BITMAP

ビットマップハンドルを指定します。

MF_OWNERDRAW

メニュー項目に関連する追加データを取得するためのアプリケーション定義値を指定します。この値は、メニュー作成時やメニュー表示の更新時に送信されるWM_MEASUREITEMメッセージおよびWM_DRAWITEMメッセージのlParamパラメータが指す構造体のitemDataメンバに格納されます。

MF_STRING

表示するテキストのヌル終端文字列へのポインタを指定します。

戻り値

成功すると0以外の値が返ります。

失敗すると0が返ります。拡張エラー情報を取得するには、GetLastError関数を使います。

解説

メニューを変更した場合は、そのメニューがウィンドウに表示されているかどうかに関わらず、アプリケーションはDrawMenuBar関数を呼び出さなければなりません

ビットマップ項目やオーナードロー項目を使用してキーボードアクセラレータが機能するようにするには、メニューのオーナーウィンドウでWM_MENUCHARメッセージを処理する必要があります。

対応情報

Windows 95 以降 / Windows NT 3.1 以降