补充一下:
我这样做的:在App的InitInstance()中下述代码:
                  CMenu mmenu;
mmenu.LoadMenu(IDR_MAINFRAME);
mmenu.EnableMenuItem(1,MF_GRAYED);
运行没错,可是该Pop-up菜单并不灰化。

解决方案 »

  1.   

    应该是如下  mmenu.EnableMenuItem(1,MF_GRAYED |MF_BYPOSITION );
    我猜你的代码应如下写:
    CMenu* menu = m_pMainWnd->GetMenu( ) ;
    if( menu )
    {
    menu->EnableMenuItem(1,MF_GRAYED|MF_BYPOSITION   );
              }
    m_pMainWnd->Invalidate();
      

  2.   

    如果要删掉的话可以: menu->DeleteMenu( 0 , MF_BYPOSITION  ); 
     menu->DeleteMenu( 1 , MF_BYPOSITION  ); 下标从0开始
      

  3.   

    问题是我要在初始化时也就是App的InitInstance()中完成所有工作
      

  4.   

    set state data in InitInstance()中
    and update menu items in ON_UPDATE_COMMAND_UI macro.
      

  5.   

    jiangsheng(蒋晟):请详细解释一下
      

  6.   

    nickysoft(nickysoft):什么命令更新函数?请详细说一下
      

  7.   

    jiangsheng(蒋晟):请再详细的说一些
    VC++技术内幕中说UI处理程序不能禁止Pop-up菜单
      

  8.   

    禁用菜单通常是gray,就是在ON_UPDATE_COMMAND_UI 的时候调用pCmdUI->Enable(FALSE);