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
変更されるメニュー項目を指定します。 nPosition の解釈は、次に挙げる nFlags の設定により決まります。nFlags
nPosition の解釈
MF_BYCOMMAND
パラメーターを既存のメニュー項目のコマンド ID で指定することを示します。 MF_BYCOMMAND と MF_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