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_BYCOMMAND が MF_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_MEASUREITEM と MF_DRAWITEMを処理するときにアプリケーションで使用できます。
MF_STRING
null で終わる文字列または CStringに長いポインターが格納されます。
MF_SEPARATOR
lpszNewItem のパラメーターは無視されます (必要になった)。
pBmp
メニュー項目として使用される CBitmap オブジェクトをポイントします。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
アプリケーションは nFlagsで値を設定するとメニュー項目の新しいステータスを指定します。この関数がメニュー項目に関連付けられたポップアップ メニューを置き換える古いポップアップ メニューを破棄し、ポップアップ メニューが使用するメモリを解放します。
nIDNewItem がポップアップ メニューを指定すると、挿入したメニューに含まれます。そのメニューが破棄されると、挿入したメニューも破棄されます。メニューは挿入 CMenu のオブジェクトから競合を回避するために、デタッチする必要があります。
ウィンドウに存在するメニューが (ウィンドウが表示されているかどうか) 変更されるたびに、アプリケーションは CWnd::DrawMenuBarを呼び出す必要があります。既存のメニュー項目の属性を変更するには、はるかに高速です CheckMenuItem と EnableMenuItem のメンバー関数を使用します。
使用例
CMenu::InsertMenuの例を参照してください。
必要条件
ヘッダー: afxwin.h