【问题标题】:Disable main menu禁用主菜单
【发布时间】:2014-02-20 09:21:44
【问题描述】:

我有一个类似于以下的菜单,

当我打开一个特定的对话框时,我想禁用整个菜单。我意识到我可以使用 Update_Command_UI 单独禁用每个菜单项,但这意味着为 100 个或更多菜单项添加事件处理程序。菜单最初使用 CMultiDocTemplate 加载。有没有办法通过使用 ID 资源(IDR_MENU)来做到这一点?

任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 好像和这个问题类似stackoverflow.com/questions/1835209/…
  • 对话框已经是模态的。所以你无法进入菜单。很难猜出你为什么要问这个问题。
  • @HansPassant:当然,除非它们是无模式的。我不确定这里是否是这种情况,如果是的话是否是故意的。
  • 是的,对话框是无模式的,我需要在应用程序中访问 OpenGL 视图,所以我将其设为无模式。但是由于该对话框依赖于菜单中的其他许多对话框,因此该菜单必须是不可访问的。
  • EnableMenuItem 的签名表明只能禁用带有命令 ID 的菜单项(不是弹出窗口)。但是,SetMenuItemInfo 可能会为您提供解决方法,因为您可以按位置和 ID 引用项目。

标签: c++ visual-c++ menu mfc mdi


【解决方案1】:

在您的大型机课程中,m_wndMenuBar.EnableWindow(FALSE);?主菜单项不会灰显,但不可选择。

【讨论】:

    【解决方案2】:

    我用过,

    CMenu* pMenu = AfxGetMainWnd()->GetMenu();
    if(pMenu != NULL)
    {
        for(UINT i = 0; i < pMenu->GetMenuItemCount (); ++i)
            pMenu->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED);
    }
    

    http://forums.codeguru.com/showthread.php?456136-Can-I-disable-menu-bar 中所述。它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      相关资源
      最近更新 更多