vc2003/2005下,菜单始终无法变灰的问题

来源:互联网 发布:收获日2真人网络剧 编辑:程序博客网 时间:2024/05/17 08:12

1、没有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);

 

2、有UpdateCmdUI句柄时

在框架中添加菜单ID的ON_UPDATE_COMMAND_UI消息,在相应函数参数中会有“CCmdUI* pCmdUI”这个参数,添加如下代码:

pCmdUI->Enable(false);

就可使这个菜单变灰显

 

------------------------------------------------------------------------------------

 

对话框程序,则需要重载ON_WM_INITMENUPOPUP

添加如下代码:

pPopupMenu->CheckMenuItem(ID_MENU_ELEMENT_SHOW,MF_CHECKED);

原创粉丝点击