菜单项的禁用与启用 转自https://blog.csdn.net/friendan/article/details/47661555 MFC对话框 菜单项 禁用与启用

转自https://blog.csdn.net/friendan/article/details/47661555

MFC对话框 菜单项 禁用与启用

参考文章:http://blog.csdn.net/johnnyhu90/article/details/9623207

如果添加菜单,这里就不说了,说下如何禁用、启用菜单,
网上说的都是单文档程序的多,在对话框程序无效哈。


1. VS2010菜单栏-->项目-->类向导-->打开类向导对话框
类名:选择我们菜单所在的对话框类,如CXxxDlg
消息:输入WM_INITMENUPOPUP,为其添加处理函数
如我的WM_INITMENUPOPUP消息处理函数代码为:
void CCnFiddlerDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CDialogEx::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);


// TODO: 在此处添加消息处理程序代码


if(!bSysMenu && pPopupMenu)
{
CCmdUI cmdUI;
cmdUI.m_pOther = NULL;
cmdUI.m_pMenu = pPopupMenu;
cmdUI.m_pSubMenu = NULL;


UINT count = pPopupMenu->GetMenuItemCount();
cmdUI.m_nIndexMax = count;
for(UINT i=0; i<count; i++)
{
UINT nID = pPopupMenu->GetMenuItemID(i);
if(-1 == nID || 0 == nID)
{
continue;
}
cmdUI.m_nID = nID;
cmdUI.m_nIndex = i;
cmdUI.DoUpdate(this, FALSE);
}
}


}


2. VS2010菜单栏-->项目-->类向导-->打开类向导对话框
在命令选择卡:选中我们的菜单ID编号
然后在右边的消息中选中:UPDATE_COMMAND_UI
最后点“添加处理程序”为其添加响应函数。
如我的响应函数为:
void CXxxDlg::OnUpdateCaptureHttpStart(CCmdUI *pCmdUI)
{
if (m_bIsEnabeMenuStart)
{
pCmdUI->Enable(TRUE);// 启用菜单
}
else
{
pCmdUI->Enable(FALSE);// 禁用菜单
}

}


猜你喜欢

转载自blog.csdn.net/molly0511/article/details/80764086