メソッドを使用してメニュー項目を無効化/グレーアウトしようとしていますCMenu::EnableMenuItem()
。
ダイアログのトップ メニューを参照するCMenu*
変数があります。を使用しpMenu
てサブメニューを取得し、取得したサブメニュー/メニュー項目の名前を確認できます。方法に困っていますが。メニューがあるとしましょう。その中には、ポップアップ メニューと、、、およびメニュー項目があります。とサブメニュー項目があります。(例) を使用すると、またはを無効にできますが、 、および、および および を含むすべてのメニュー項目に対して機能が失敗します。pMenu->GetSubMenu(int)
submenu->GetMenuStringA()
EnableMenuItem()
File
New
Open
Import
Close
Close All
New
Open
New->Document
submenu->EnableMenuItem([position of submenu/menuitem], MF_BYPOSITION | MF_GRAYED);
New
Open
Import
Close
Close All
New
Open
注:EnableMenuItem()
失敗すると言っても、-1 を返すという意味ではありません。以前の状態に戻りますが、メニューが無効になったりグレー表示になったりすることはありません。
http://msdn.microsoft.com/en-us/library/h62wh3y1.aspxの MSDN ドキュメントでEnableMenuItem()
は、これはポップアップ メニュー項目と標準メニュー項目の両方で機能すると主張しています。ただし、ポップアップのものでのみ機能するようです。