MFC中菜单变灰
方法1:有UpdateCmdUI句柄时
定义一个BOOL变量m_b来标志菜单项是否有效,
该菜单项响应UPDATE_COMMAND_UI消息,在消息处理函数中pCmdUI->Enable(m_b);
以后你根据需要来设置m_b的值,就可以使菜单是否可用。
在一个函数中可以控制多个菜单
方法2:没有UpdateCmdUI句柄时
MFC中缺省的习惯是当没有UpdateCmdUI句柄时程序是使能(Enable)菜单,
菜单自动变成使能,
只要关掉缺省值就可以了,
把下面的代码加入你的程序
CMainFrm::CMainFrm { // Other stuff this->m_bAutoMenuEnable = false; }
然后在消息响应函数中添加如下代码: CMenu* m_menu = GetMenu(); CMenu* submenu = m_menu->GetSubMenu(0); submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_GRAYED); CFrameWnd::m_bAutoMenuEnable //Controls automatic enable and disable functionality for menu items. //CFrameWnd类中的BOOL型数据成员,默认为TRUE。
//如果m_bAutoMenuEnable设为TRUE,
则如果某菜单项在当前命令路径中无法找到相应的命令消息控制函数,则此时应用程序框架便禁用该菜单项,并将该菜单项设为灰色。 //如果m_bAutoMenuEnable设为FALSE,便可以禁止上叙自动禁用无控制函数菜单项的特性。
易出错不推荐使用