次の方法で共有


CMenu::ModifyMenu

nPositionで指定した位置で既存のメニュー項目を変更します。

BOOL ModifyMenu(
   UINT nPosition,
   UINT nFlags,
   UINT_PTR nIDNewItem = 0,
   LPCTSTR lpszNewItem = NULL 
);
BOOL ModifyMenu(
   UINT nPosition,
   UINT nFlags,
   UINT_PTR nIDNewItem,
   const CBitmap* pBmp 
);

パラメーター

  • nPosition
    変更するメニュー項目を指定します。nFlags のパラメーターが nPosition を次のように解釈するために使用できます:

    nFlags

    nPosition の解釈

    MF_BYCOMMAND

    パラメーターが既存のメニュー項目のコマンド ID を与えることを指定します。これは MF_BYCOMMANDMF_BYPOSITION 設定が既定値です。

    MF_BYPOSITION

    パラメーターが既存のメニュー項目の位置を与えることを指定します。最初の項目が 0 の位置にあります。

  • nFlags
    nPosition がどのように解釈されるかを指定し、メニュー項目に加える変更に関する情報を提供します。設定されるフラグの一覧については AppendMenu のメンバー関数に関するトピックを参照してください。

  • nIDNewItem
    nFlags がに設定されている場合 MF_POPUP変更したメニュー項目のコマンド ID、または、ポップアップ メニューのメニュー ハンドル (HMENU) を指定します。nIDNewItem のパラメーターは nFlags がに設定されている場合 MF_SEPARATOR無視する (必要がない)。

  • lpszNewItem
    新しいメニュー項目の内容を指定します。nFlags のパラメーターが lpszNewItem を次のように解釈するために使用できます:

    nFlags

    lpszNewItem の解釈

    MF_OWNERDRAW

    メニュー項目に関連付けられた追加のデータを保持するために使用できるアプリケーションがアプリケーションに用意された 32 ビット値を含みます。この 32 ビット値は MF_MEASUREITEMMF_DRAWITEMを処理するときにアプリケーションで使用できます。

    MF_STRING

    null で終わる文字列または CStringに長いポインターが格納されます。

    MF_SEPARATOR

    lpszNewItem のパラメーターは無視されます (必要になった)。

  • pBmp
    メニュー項目として使用される CBitmap オブジェクトをポイントします。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

アプリケーションは nFlagsで値を設定するとメニュー項目の新しいステータスを指定します。この関数がメニュー項目に関連付けられたポップアップ メニューを置き換える古いポップアップ メニューを破棄し、ポップアップ メニューが使用するメモリを解放します。

nIDNewItem がポップアップ メニューを指定すると、挿入したメニューに含まれます。そのメニューが破棄されると、挿入したメニューも破棄されます。メニューは挿入 CMenu のオブジェクトから競合を回避するために、デタッチする必要があります。

ウィンドウに存在するメニューが (ウィンドウが表示されているかどうか) 変更されるたびに、アプリケーションは CWnd::DrawMenuBarを呼び出す必要があります。既存のメニュー項目の属性を変更するには、はるかに高速です CheckMenuItemEnableMenuItem のメンバー関数を使用します。

使用例

CMenu::InsertMenuの例を参照してください。

必要条件

ヘッダー: afxwin.h

参照

関連項目

CMenu クラス

階層図

CMenu::AppendMenu

CMenu::InsertMenu

CMenu::CheckMenuItem

CWnd::DrawMenuBar

CMenu::EnableMenuItem

CMenu::SetMenuItemBitmaps

CMenu::Detach

ModifyMenu