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

  • 相关阅读:
    HHUOJ 1321
    数据结构应用
    数据结构应用
    数据结构与算法分析
    数据结构与算法分析
    CSS -- 字体样式
    CSS -- 选择器
    CSS
    HTML -- 表单元素2
    HTML -- 表单元素1
  • 原文地址:https://www.cnblogs.com/vimmer/p/2408345.html
Copyright © 2011-2022 走看看