【发布时间】:2015-01-19 14:17:28
【问题描述】:
我正在尝试使用 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。它返回之前的状态,但菜单不会被禁用或变灰。
在EnableMenuItem():http://msdn.microsoft.com/en-us/library/h62wh3y1.aspx 的 MSDN 文档中,它声称这适用于弹出菜单项和标准菜单项。不过,它似乎只适用于弹出式广告。
【问题讨论】: