如何让菜单中一个指定的菜单项灰掉?不可用?
上次问了让整个菜单灰掉,
我使用相同的模式去控制单个的菜单项,但是不可以,而且,在Command_UI中控制的话,菜单只是不可用,不是显示的会掉。

解决方案 »

  1.   

    如果在VIEW中实现的话,注意需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。 
    你可以这样做,下面的代码是在VIEW中实现的。
    #include "MainFrm.h"菜单有两个子项ID_1,ID_2:
    void CMy11View::On1() 
    {
        // TODO: Add your command handler code here 
        CMainFrame *pFrame=(CMainFrame *)AfxGetApp()->GetMainWnd();
        pFrame->m_bAutoMenuEnable=FALSE;
        CMenu* pMenu=AfxGetApp()->GetMainWnd()->GetMenu(); 
        ASSERT_VALID (pMenu); 
        pMenu->EnableMenuItem(ID_2,TRUE);//ID_2是你要修改的菜单的ID
    }
      

  2.   

    正常情况下,在CN_UPDATE_COMMAND_UI的时候,让((CCmdUI *) pExtra)->Enable(FALSE);就可以灰掉
      

  3.   

    同意楼上的不过应该是ON_UPDATE_COMMAND_UI
      

  4.   

    CMenu *pMenu = GetMenu();
    CMenu *pSubMenu = pMenu->GetSubMenu(0);
    pSubMenu->EnableMenuItem(ID_POPUP1, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
      

  5.   

    響應ON_UPDATE_COMMAND_UI消息pCmdUI->Enable(FALSE)
      

  6.   

    这个问题好象刚回答过一次
    使菜单灰掉(
    CFrameWnd *)AfxGetMainWnd())->GetMenu()->EnableMenuItem(ID_ADDLIST,MF_GRAYED);//
    使菜单不可用//ID_ADDLIST是你指定菜单项
    (CFrameWnd *)AfxGetMainWnd())->GetMenu()->EnableMenuItem(ID_ADDLIST,MF_DISABLED);
    使菜单可用
    (CFrameWnd *)AfxGetMainWnd())->GetMenu()->EnableMenuItem(ID_ADDLIST,MF_ENABLED);
      

  7.   

    你看看你vb的ado的activeconnection对象的游标是否是client端