我正在尝试使用该CMenu::EnableMenuItem()
方法禁用/灰显菜单项。
我有一个引用对话框顶部菜单的CMenu*
变量。pMenu
我可以使用pMenu->GetSubMenu(int)
和 using获取子菜单submenu->GetMenuStringA()
,验证我返回的子菜单/菜单项的名称。不过,我在使用该EnableMenuItem()
方法时遇到了麻烦。假设有一个File
菜单。其中有New
和Open
弹出菜单和Import
、Close
和Close All
菜单项。和New
有Open
子菜单项。(例如New->Document
)使用submenu->EnableMenuItem([position of submenu/menuitem], MF_BYPOSITION | MF_GRAYED);
I 可以禁用New
or ,但是对于,和以及所有带有and的菜单项,Open
该功能都会失败。Import
Close
Close All
New
Open
注意:当我说EnableMenuItem()
失败时,我并不是说它返回-1。它返回以前的状态,但菜单不会被禁用或变灰。
在 MSDN 文档中:http EnableMenuItem()
: //msdn.microsoft.com/en-us/library/h62wh3y1.aspx它声称这适用于弹出菜单项和标准菜单项。不过,它似乎只适用于弹出窗口。