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

解决方案 »

  1.   

    获取的menu是否正确?
    代码在什么地方写的?
      

  2.   

    MFC框架有自己的界面更新机制,用OnCmdUI函数来处理。
      

  3.   

    是在view 里用的,我觉得应该是正确的呀 也不知道是怎么回事的 
      

  4.   

    我来告诉你吧
    CMenu*   mmenu   =   GetMenu();    
    CMenu*   submenu   =   mmenu->GetSubMenu(0);    
    submenu->EnableMenuItem(ID_FILE_START,   MF_BYCOMMAND    ¦   MF_DISABLED    ¦   MF_GRAYED);
    写在框架类的OnCreate()函数里,并且在框架类的构造函数里写上m_bAutoMenuEnable =FALSE;
    这样就可以了。
    楼主给分吧
      

  5.   

    如果非得在视图类中写的话
    应该重载虚函数OnInitialUpdate,
    写在里面就可以了。框架类构造函数m_bAutoMenuEnable =FALSE; 还是不能省的。
      

  6.   

    同意七楼的,
    要使菜单可以禁上得先有
    frame里面设置
     m_bAutoMenuEnable=false;//使菜单能不可用。
      

  7.   

    谁知道为什么一个类的成员变量(CFrameWnd::m_bAutoMenuEnable)能控制一个WindowsAPI(::EnableMenuItem)的行为?MFC为什么这样设计?