因为POPUP没有ID的,所以不知道怎么操作,虽然在资源里有定义使其变灰(GRAYED)的,但是我希望在程序中动态的改变,就像其他MENU的UPDATE_COMMAND_UI事件一样,不知道该怎么处理

解决方案 »

  1.   

    CMenu PopUpMenu;//定义弹出对话菜单类
    PopUpMenu.LoadMenu(IDR_MENU_DOCUMENT);//装载菜单
             ……
             PopUpMenu.EnableMenuItem(ID_DOCUMENT_CHECKOUT,MF_DISABLED| MF_GRAYED);//ID_DOCUMENT_CHECKOUT是要变灰的ID
      

  2.   

    问题就在这里,问题就是POPUP MENU是没有ID的,以下这是一般在*.rc资源文件中的MENU定义,
    /////////////////////////////////////////////////////////////////////////////
    // MenuIDR_MAINFRAME MENU PRELOAD DISCARDABLE 
    BEGIN
        POPUP "文件(&F)"
        BEGIN
            MENUITEM "退出(&X)",                    ID_APP_EXIT
        END
        POPUP "查看(&V)"                            //POPUP 诸如"文件","查看","帮助"都没有ID
        BEGIN
            MENUITEM "状态栏(&S)",                  ID_VIEW_STATUS_BAR
            MENUITEM "工具栏(&T)",                  ID_VIEW_TOOL_BAR
        END
        POPUP "帮助(&H)",GRAYED     //在这里加上GRAYED可以使其Disabled
        BEGIN
            MENUITEM "关于 CGFramework(&A)...",     ID_APP_ABOUT
        END
        POPUP "自定义功能(&C)"
        BEGIN
            MENUITEM SEPARATOR
        END
    END
    ////////////////////////////////////////////////////////////////////////////
    像上面看到的,诸如"文件","查看","帮助"等Popup Menu都没有ID,
    而我希望使用程序控制"查看"菜单项是否变灰,而不是像定义里一样使"帮助"变灰
      

  3.   

    CMenu::EnableMenuItem(序号,MF_BYPOSITION | MF_GRAYED);
      

  4.   

    谢谢,看来MF_BYPOSITION还能用到很多地方去