首页 > 代码库 > VC对话框的菜单设置变灰, 打勾 等
VC对话框的菜单设置变灰, 打勾 等
一般可以用UPDATE_COMMAND_UI消息,并加入以下代码:
pCmdUI->Enable(FALSE);
就实现,弹对话框的菜单需要增加对WM_INITMENUPOPUP消息的处理以后,才可以响应UPDATE_COMMAND_UI。
原因
https://support.microsoft.com/zh-cn/help/242577/you-cannot-change-the-state-of-a-menu-item-from-its-command-user-interface-handler-if-the-menu-is-attached-to-a-dialog-box-in-visual-c
要点1。
http://bbs.csdn.net/topics/20077326
为要设置变灰的菜单添加UPDATE_COMMAND_UI消息,并加入以下代码:
pCmdUI->Enable(FALSE);当前菜单不可用
pCmdUI->Enable(TURE);当前菜单不可用
参数可用变量,这样就可以随时设置菜单某项禁用。
要点2:
http://blog.csdn.net/visualeleven/article/details/5513648:
对于模态非模态对话框默认是不响应菜单的UPDATE_COMMAND_UI消息的,需要增加对WM_INITMENUPOPUP消息的处理以后,才可以响应UPDATE_COMMAND_UI。
对于模态非模态对话框默认是不响应菜单的UPDATE_COMMAND_UI消息的,需要增加对WM_INITMENUPOPUP消息的处理以后,才可以响应UPDATE_COMMAND_UI。 [cpp] view plain copy void CXXXDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu) { CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu); // TODO: Add your message handler code here 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); } } }
VC对话框的菜单设置变灰, 打勾 等
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。