如何使菜单项变灰问题 我想在一个对话框中,通过一个BOOL变量m_bFlag使一个菜单项有效或变灰,我以前在单文档视图结构中都是通过重载ON_UPDATE_COMMAND_UI消息,在消息中调用pCmdUI->Eable(m_bFlag)来实现的,可是现在在对话框中就不行了,不知道是为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有,不过在调试模式下,在debug窗口有一个warning-not executing disabled command CMenu* pSubMenu;menu.LoadMenu(IDR_MENU1);pSubMenu = (CMenu*)menu.GetSubMenu(*); pSubMenu->ModifyMenu()MSDN上差下modifyMeun 的参数,好像第二个参数 case WM_INITMENUPOPUP: int iEnable; iEnable = IsClipboardFormatAvailable (CF_BITMAP) ?MF_ENABLED : MF_GRAYED ; EnableMenuItem ((HMENU) wParam, IDM_PASTE, iEnable) ; iEnable = hBitmap ? MF_ENABLED : MF_GRAYED ; EnableMenuItem ((HMENU) wParam, IDM_CUT, iEnable) ; EnableMenuItem ((HMENU) wParam, IDM_COPY, iEnable) ; EnableMenuItem ((HMENU) wParam, IDM_DELETE, iEnable) ; pCmdUI->Eable(m_bFlag可以实现。 菜单被禁用了 只是没有变灰。 //将第N个子菜单下的IDM_XXX项禁用且变灰CMenu* mmenu=GetMenu();CMenu* submenu=mmenu->GetSubMenu(N-1);submenu->EnableMenuItem(IDM_XXX, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); UpdateUI这套机制是在Idle函数里做的,而Dialog实现并没有Idle机制,所以…… 麻烦7楼的深入讲讲Idle机制! CFrameWnd实现了一套UI的刷新机制,很多是在Idle的时候被调用,可以参见CWnd::OnEnterIdle。另外菜单刷新是在OnInitMenuPopup,OnMenuSelect,弹出tooltip Window是OnToolTipText时候做的,如果要实现完全的UpdateUI这套机制,必须把这些东西全实现出来才行。 请教6楼 你那段代码应写在什么函数中啊? 我写在MainFrame的构造中和OnCreate函数中都出错了 VC/MFC自定义的消息失效,请各位大侠指教给看看 如何在对话框上添加菜单项 VC读取EXCEL的问题 为什么定时器ID检测失效??! 为什么程序总是在运行时出错 求助ACE编译问题 ■■■■如何定义COM接口 如何在客户端使用该接口?■■■■ vc里如何实现 向某个地址如:http://www.test.com/test.asp提交数据? 就这么几句代码,AfxMessageBox怎么就不生成警告窗口呢? 高手问题,想成为高手吗,请来。来者都送分,^v^: 请问谁能推荐本有介绍vc列表控件的书 BCH纠错编码
menu.LoadMenu(IDR_MENU1);
pSubMenu = (CMenu*)menu.GetSubMenu(*);
pSubMenu->ModifyMenu()
MSDN上差下modifyMeun 的参数,好像第二个参数
iEnable = IsClipboardFormatAvailable (CF_BITMAP) ?MF_ENABLED : MF_GRAYED ;
EnableMenuItem ((HMENU) wParam, IDM_PASTE, iEnable) ;
iEnable = hBitmap ? MF_ENABLED : MF_GRAYED ;
EnableMenuItem ((HMENU) wParam, IDM_CUT, iEnable) ;
EnableMenuItem ((HMENU) wParam, IDM_COPY, iEnable) ;
EnableMenuItem ((HMENU) wParam, IDM_DELETE, iEnable) ;
可以实现。 菜单被禁用了 只是没有变灰。
CMenu* mmenu=GetMenu();
CMenu* submenu=mmenu->GetSubMenu(N-1);
submenu->EnableMenuItem(IDM_XXX, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);