zoukankan      html  css  js  c++  java
  • 蛋痛的MFC,,,,菜单变灰而己

    次日,发现如果企图在mainview 中去改菜单的灰掉是不可以的,必须在mainframe ....

    而mainframe中也必须让菜单加载完成才能改...这个就是一个比较蛋痛的地方...

    一般来说,要让一个菜单灰掉,觉得不是太难的事...

    可是这玩意居然还让我弄了一两个小时,

    最主要的是快下班了..心情不爽.....

    基本是这样的...

    CMenu menu;
    menu.LoadMenu(IDR_MAINFRAME);
    menu.GetSubMenu(2)-> EnableMenuItem(ID_CSCAF, MF_GRAYED);

    但是.....

    我发现我居然看少了MSDN 上的几句话

    // The code fragment below shows how to disable (and gray out) the
    // File\New menu item.
    // NOTE: m_bAutoMenuEnable is set to FALSE in the constructor of
    // CMainFrame so no ON_UPDATE_COMMAND_UI or ON_COMMAND handlers are
    // needed, and CMenu::EnableMenuItem() will work as expected.

    CMenu* mmenu = GetMenu();
    CMenu* submenu = mmenu->GetSubMenu(0);
    submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);

    // NOTE: m_bAutoMenuEnable is set to FALSE in the constructor of 

    这句要在mainframe中加的...我擦...我的时间啊

     ps:另外,今天本想使一个右键菜单灰掉.

    -----------------------------------------------------------------

    //Disable:

    //m_popupMenu是一菜单成员变量

    CMenu *pMenu;
    pMenu = m_popupMenu.GetSubMenu(0);

    //禁止第一项(0)【按照位置】
    pMenu->EnableMenuItem(0, MF_BYPOSITION|MF_GRAYED );
    或【按照名称】
    pMenu->EnableMenuItem(IDM_XXX, MF_BYCOMMAND|MF_GRAYED );

    //Enable:

    -----------------------------------------------------------------

    据说可以按顺序,

    或按ID,

    我一开始用按顺序的方法失败了,一定要按ID吗?话说如果没有改写那个子菜单的ID的话会很一串数字,可读性与顺序号一样差,有时更差....

  • 相关阅读:
    Vue 2.x windows环境下安装
    VSCODE官网下载缓慢或下载失败 解决办法
    angular cli 降级
    Win10 VS2019 设置 以管理员身份运行
    XSHELL 连接 阿里云ECS实例
    Chrome浏览器跨域设置
    DBeaver 执行 mysql 多条语句报错
    DBeaver 连接MySql 8.0 报错 Public Key Retrieval is not allowed
    DBeaver 连接MySql 8.0报错 Unable to load authentication plugin 'caching_sha2_password'
    Linux系统分区
  • 原文地址:https://www.cnblogs.com/vimmer/p/2408345.html
Copyright © 2011-2022 走看看