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_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