在MFC中,仅靠下列语句即可CMenu* menu = CMenu::FromHandle(m_wndMenuBar.GetDefaultMenu());
menu->GetSubMenu(1)->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);但是在Feature Pack中都完全没用,仅仅只对有子菜单的菜单项有用。
我又试了UPDATE_COMMAND_UI,还是没成功,有没有一种方法,能在通过点击一个菜单项使许多菜单都变灰呢?
顶层菜单变灰最好,如果不能,使多个不在同一顶层菜单下的子菜单项变灰也行。不知道我说清楚了没,比如说,就是在SDI对话框中,点击[文件]->[新建],就能把[文件]->[打开]和[编辑]->[撤销]都变灰。Thanks for the helps! 

解决方案 »

  1.   

    CMFCMenuBar是mfc的新类,其内部机制和普通的菜单是不同的,是把菜单转化成按钮来处理,之后再以菜单的形式展现,你要想使某一个或者某些菜单失效,之需要将对应的ID禁用就行了。
    在该ID的UPDATE_COMMAND_UI中pCmdUI->Enable(FALSE);就行了~
      

  2.   


    对该ID的UPDATE_COMMAND_UI的pCmdUI->Enable操作,只能屏蔽这个菜单项,不能对其他的菜单项操作呢,这位仁兄有没有更好的办法?