• 蛋痛的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的话会很一串数字,可读性与顺序号一样差,有时更差....

  • 相关阅读:
    idea 新建maven项目时,避免每次都需要指定自己的maven目录
    springboot2.X版本得@Transactional注解事务不回滚不起作用
    SpringBoot事务注解@Transactional
    #{}, ${}取值区别
    Mybaits多个参数的传递
    Mybaits基本的CURD操作
    mappers:将sql映射注册到全局配置中
    Mybaits配置多个数据库操作sql环境
    为java类起别名
    Mybaits成长之路
  • 原文地址:https://www.cnblogs.com/vimmer/p/2408345.html
Copyright © 2020-2023  润新知