【发布时间】:2014-02-20 09:21:44
【问题描述】:
我有一个类似于以下的菜单,
当我打开一个特定的对话框时,我想禁用整个菜单。我意识到我可以使用 Update_Command_UI 单独禁用每个菜单项,但这意味着为 100 个或更多菜单项添加事件处理程序。菜单最初使用 CMultiDocTemplate 加载。有没有办法通过使用 ID 资源(IDR_MENU)来做到这一点?
任何帮助将不胜感激。 谢谢。
【问题讨论】:
-
对话框已经是模态的。所以你无法进入菜单。很难猜出你为什么要问这个问题。
-
@HansPassant:当然,除非它们是无模式的。我不确定这里是否是这种情况,如果是的话是否是故意的。
-
是的,对话框是无模式的,我需要在应用程序中访问 OpenGL 视图,所以我将其设为无模式。但是由于该对话框依赖于菜单中的其他许多对话框,因此该菜单必须是不可访问的。
-
EnableMenuItem的签名表明只能禁用带有命令 ID 的菜单项(不是弹出窗口)。但是,SetMenuItemInfo可能会为您提供解决方法,因为您可以按位置和 ID 引用项目。
标签: c++ visual-c++ menu mfc mdi