关于子菜单禁用问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 02:51:42
一个多文档的程序

在CMainFrame 的 OnCreat 中最多加入了

CMenu* pMenu = this ->GetMenu();
CMenu* pmSub = NULL;

//这个正常,禁用了菜单项
pMenu->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);

//下面一个不正常,什么也不做,子菜单禁用不了,why?
pmSub=pMenu->GetSubMenu(1);
pmSub->EnableMenuItem(1, MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
那个 UPDATE_COMMAND_UI 我知道是可以啊

但我就是想知道为什么我用的方法有什么问题,别人用过也没问题

为何不用BY_COMMAND?

然后是UpdateUI....
用消息机制来做?

ON_UPDATE_COMMAND_UI(ID_FILE_SAVEAS, &CDigitalStampApp::OnUpdateFileSaveas)
void CDigitalStampApp::OnUpdateFileSaveas(CCmdUI *pCmdUI)
{
pCmdUI->Enable(bEnb_ID_FILE_SAVEAS);
}

然后设置bEnb_ID_FILE_SAVEAS这个BOOL函数便可以了

MFC出问题都是很微妙的,先拿个能用的顶用着吧。我也出过这问题,可能是pmSub不对。
检查一下pmSub=pMenu->GetSubMenu(1); 下标不对吧?第一个子菜单下标是0。