我正在尝试使用
我有一个
CMenu::EnableMenuItem()
方法禁用/灰掉菜单项。我有一个
CMenu*
变量 pMenu
引用对话框的顶部菜单。我可以使用 pMenu->GetSubMenu(int)
获取子菜单,并使用 submenu->GetMenuStringA()
验证返回的子菜单/菜单项的名称。但是,我在EnableMenuItem()
方法上遇到了问题。假设有一个File
菜单,其中包含New
和 Open
弹出菜单以及Import
、Close
和 Close All
菜单项。New
和 Open
有子菜单项(例如 New-> Document
)。使用submenu->EnableMenuItem([submenu/menuitem的位置], MF_BYPOSITION | MF_GRAYED);
我可以禁用 New
或 Open
,但是对于Import
、Close
和 Close All
以及所有带有 New和Open
的菜单项,该函数均失败。
注意:当我说 EnableMenuItem()
失败时,我的意思并不是它会返回 -1。它返回之前的状态,但菜单不会变为禁用或灰掉。
在 MSDN 的EnableMenuItem()
文档中:http://msdn.microsoft.com/en-us/library/h62wh3y1.aspx它声称这将适用于弹出式和标准菜单项。然而,它似乎仅适用于弹出式菜单项。