次の方法で共有


CMenu::ModifyMenu

更新 : 2007 年 11 月

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
    変更されるメニュー項目を指定します。nPosition の解釈は、次に挙げる nFlags の設定により決まります。

    nFlags

    nPosition の解釈

    MF_BYCOMMAND

    パラメータを既存のメニュー項目のコマンド ID で指定することを示します。MF_BYCOMMANDMF_BYPOSITION がどちらも設定されていないときの既定の設定になります。

    MF_BYPOSITION

    パラメータを既存のメニュー項目の位置で指定することを示します。最初の項目位置は 0 です。

  • nFlags
    nPosition の解釈の方法とメニュー項目に加えられる変更の情報を指定します。設定されるフラグの一覧は、「CMenu::AppendMenu」メンバ関数を参照してください。

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

  • lpszNewItem
    新しいメニュー項目の内容を指定します。lpszNewItem の解釈は、nFlags の設定状態により次のように変化します。

    nFlags

    lpszNewItem の解釈

    MF_OWNERDRAW

    アプリケーション提供の 32 ビットの値を保持します。この値は、アプリケーションがそのメニュー項目に割り当てる付加的なデータを管理するために使います。この 32 ビットの値は、アプリケーションが MF_MEASUREITEM メッセージと MF_DRAWITEM メッセージを処理するときに使用されます。

    MF_STRING

    NULL で終わる文字列への long のポインタまたは CString への long のポインタを保持します。

    MF_SEPARATOR

    パラメータ lpszNewItem は無視されます (必要ありません)。

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

戻り値

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

解説

アプリケーションは、nFlags に値を設定することにより、メニュー項目の新しい状態を指定します。この関数によりメニュー項目に関連するポップアップ メニューが置き換えられたときは、古いポップアップ メニューは破棄され、そのポップアップ メニューが使っていたメモリは解放されます。

nIDNewItem がポップアップ メニューを示しているときは、ポップアップ メニューは挿入先メニューの一部になります。挿入先メニューが破棄されたときは、挿入されたメニューも破棄されます。挿入されたメニューは、矛盾が起きないように CMenu オブジェクトから切り離します。

ウィンドウにあるメニューが変更されたときは (ウィンドウが表示されているかどうかにかかわらず)、アプリケーションは CWnd::DrawMenuBar 関数を呼び出す必要があります。既にあるメニュー項目の属性を変更するには、CheckMenuItem メンバ関数や EnableMenuItem メンバ関数を使った方がより速く処理できます。

使用例

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

必要条件

ヘッダー : afxwin.h

参照

参照

CMenu クラス

階層図

CMenu::AppendMenu

CMenu::InsertMenu

CMenu::CheckMenuItem

CWnd::DrawMenuBar

CMenu::EnableMenuItem

CMenu::SetMenuItemBitmaps

CMenu::Detach

ModifyMenu

その他の技術情報

CMenu のメンバ