在MFC中,一般当显示菜单时,MFC会发送消息给框架窗口。所以你可以为某个菜单项编写ON_UPDATE_COMMAND_UI消息处理函数,在其中设置是否可以使用该菜单。
void CMyView::OnUpdateMenuItem(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_bEnabled);
}
如果不编写ON_UPDATE_COMMAND_UI消息处理函数,可以使用CMenu::EnableMenuItem来设置菜单可用或禁用的,但是在MFC中,要使该函数起作用,需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。
//取得主窗口菜单操作指针
CMenu *popmenu;
CMainFrame *pMain = (CMainFrame*)AfxGetMainWnd();
pMain->m_bAutoMenuEnable=FALSE;
popmenu = pMain->GetMenu();
//调用enablemenuitem事件
popmenu->EnableMenuItem(ID_ADD_STAFF, MF_GRAYED);