CMenu::EnableMenuItem
更新 : 2007 年 11 月
メニュー項目を使用許可、使用禁止、または淡色表示にします。
UINT EnableMenuItem(
UINT nIDEnableItem,
UINT nEnable
);
パラメータ
nIDEnableItem
nEnable で指定される方法で、メニュー項目の使用許可を指定します。このパラメータには、標準のメニュー項目だけでなくポップアップ メニュー項目も指定できます。nEnable
動作を指定します。MF_DISABLED、MF_ENABLED、MF_GRAYED のいずれかと MF_BYCOMMAND、MF_BYPOSITION のいずれかを組み合わせたものです。この値はビットごとの OR 演算子で組み合わせることができます。これらの値には次の意味があります。MF_BYCOMMAND パラメータを既存のメニュー項目のコマンド ID で指定することを示します。これは、既定の設定です。
MF_BYPOSITION パラメータで既存のメニュー項目の位置を指定することを示します。最初の項目位置は 0 です。
MF_DISABLED メニュー項目を選択できないようにしますが、淡色表示にはしません。
MF_ENABLED メニュー項目を選択できるようにして、淡色表示から元の表示に戻します。
MF_GRAYED メニュー項目を選択できないようにして、淡色表示にします。
戻り値
直前の状態 (MF_DISABLED、MF_ENABLED、MF_GRAYED) を返します。有効な項目でない場合は -1 を返します。
解説
CreateMenu、InsertMenu、ModifyMenu、LoadMenuIndirect の各メンバ関数でもメニューの状態 (使用許可、使用禁止、淡色表示) を設定できます。
MF_BYPOSITION 値を使うときは、アプリケーションが正しい CMenu を使う必要があります。メニュー バーの CMenu を用いるときは、トップレベルのメニュー項目 (メニュー バー内の項目) に影響します。ポップアップ内の項目、または入れ子になったポップアップの項目の状態を位置を指定して設定するときは、アプリケーションは該当するポップアップ メニューの CMenu を指定する必要があります。
アプリケーションが MF_BYCOMMAND フラグを指定しているときは、Windows は CMenu の下位のすべてのポップアップ メニュー項目をチェックします。そのため、重複するメニュー項目がない限り、メニュー バーの CMenu を指定すると十分です。
使用例
// The code fragment below shows how to disable (and gray out) the
// File\New menu item.
// NOTE: m_bAutoMenuEnable is set to FALSE in the constructor of
// CMainFrame so no ON_UPDATE_COMMAND_UI or ON_COMMAND handlers are
// needed, and CMenu::EnableMenuItem() will work as expected.
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
必要条件
ヘッダー : afxwin.h