网上查的资料大都是在MainFrame类中的菜单项操作,我的应用中需要在View类中禁用菜单中的某一项。
具体:当选择一项后,把所选的项变灰禁用。
问题:选中后没有被变灰禁用,而且输出中提示:Warning: no message line prompt for ID 0x800B.
代码:
void CHSR3_TestView::OnCreat()
{
// TODO: 在此添加命令处理程序代码
m_bDataSource=FALSE;
CMainFrame *pMainFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CMenu* mmenu = pMainFrame-> GetMenu();
CMenu* submenu = mmenu->GetSubMenu(5);
submenu->EnableMenuItem(ID_CREAT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
}
先谢了!!!!
具体:当选择一项后,把所选的项变灰禁用。
问题:选中后没有被变灰禁用,而且输出中提示:Warning: no message line prompt for ID 0x800B.
代码:
void CHSR3_TestView::OnCreat()
{
// TODO: 在此添加命令处理程序代码
m_bDataSource=FALSE;
CMainFrame *pMainFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CMenu* mmenu = pMainFrame-> GetMenu();
CMenu* submenu = mmenu->GetSubMenu(5);
submenu->EnableMenuItem(ID_CREAT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
}
先谢了!!!!
void CMainFrame::OnUpdateViewNavigation(CCmdUI *pCmdUI)
{
pCmdUI->Enable( m_bNavigationVisible );
}
在view里面获取CMainFrame的指针,更新m_bNavigationVisible 这个变量的值就可以了,
你写的EnableMenuItem执行过了,可是MFC框架又会试图查找ON_UPDATE_COMMAND_UI映射,结果又重新enable一次。
你可以把mainframe的m_bAutoMenuEnable干掉,框架就不干活了。不然,还是要映射。