我正在尝试使用该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 可以禁用Newor ,但是对于,和以及所有带有and的菜单项,Open该功能都会失败。ImportCloseClose AllNewOpen
注意:当我说EnableMenuItem()失败时,我并不是说它返回-1。它返回以前的状态,但菜单不会被禁用或变灰。
在 MSDN 文档中:http EnableMenuItem(): //msdn.microsoft.com/en-us/library/h62wh3y1.aspx它声称这适用于弹出菜单项和标准菜单项。不过,它似乎只适用于弹出窗口。