在对话框里面使用ON_UPDATE_COMMAND_UI映射工具条(toolbar和菜单(menu)的心得

原创 2003年02月11日 14:01:00

这几天为了写个小程序,在对话框上添加工具条(toolbar)和菜单(menu),网上友好多程序教你怎么在对话框上添加工具条和菜单,但是很少提到怎么样对工具条和菜单添加ON_UPDATE_COMMAND_UI映射,后来网上搜了好久,找到了一些方法,都比较复杂。其实只要在对话框类中添加下面的函数就可以了

BOOL CMyDlg::ContinueModal()
{
   if( m_wndtoolbar.IsWindowVisible() )
   {
   CFrameWnd* pParent = ( CFrameWnd* ) m_wndtoolbar.GetParent();
   if( pParent )
      m_wndtoolbar.OnUpdateCmdUI( pParent, ( WPARAM ) TRUE );
   }

   CMenu* pMainMenu = GetMenu();
   CCmdUI cmdUI;
   for (UINT n = 0; n < pMainMenu->GetMenuItemCount(); ++n)
    {
        CMenu* pSubMenu = pMainMenu->GetSubMenu(n);
        cmdUI.m_nIndexMax = pSubMenu->GetMenuItemCount();
        for (UINT i = 0; i < cmdUI.m_nIndexMax;++i)
        {
            cmdUI.m_nIndex = i;
            cmdUI.m_nID = pSubMenu->GetMenuItemID(i);
            cmdUI.m_pMenu = pSubMenu;
            cmdUI.DoUpdate(this, FALSE);
        }
    }
   return CDialog::ContinueModal();
}
然后再对应的.h中添加 BOOL ContinueModal();
这样你就可以使用N_UPDATE_COMMAND_UI了。

另外,提醒一下就是,有些文章使用WM_KICKIDLE消息。我在使用后发现cpu的使用率为100%。建议不要使

该函数又一个缺点:

如果用键盘切换了VIEW,这个函数就不响应了,也就是说,如果使用右键菜单中间如果包括了根据VIEW变化的变量,那么就无法操作。

在对话框中使用ON_UPDATE_COMMAND_UI更新菜单

本文翻译自http://support.microsoft.com/kb/242577问题: 更新处理函数在对话框的菜单中不能工作ID: Q242577 此文章的信息应用于:Microsoft Vis...
  • jiangsheng
  • jiangsheng
  • 2001年08月06日 14:17
  • 3549

在对话框里面使用ON_UPDATE_COMMAND_UI映射工具条/菜单

对话框 添加工具条toolbar if(!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRI...
  • xshown
  • xshown
  • 2011年09月23日 13:58
  • 1169

对话框中添加工具条

在对话框中添加工具条主要有三个任务: 1、创建工具条按钮; 2、为按钮指定图标; 3、给按钮添加响应事件。         下面将利用资源管理器(也可以通过代码直接创建,这里占时不讨论...
  • u010260855
  • u010260855
  • 2014年03月30日 11:01
  • 1138

Extjs-工具条和菜单 Ext.menu和Ext.Toolbar

1.创建一个简单工具条 效果图 Ext.onReady(function(){ // 创建带三个按钮的工具条 var tb = new Ext.Toolbar({...
  • itlwc
  • itlwc
  • 2012年08月17日 16:15
  • 13442

Fragment填充ToolBar菜单

Fragment填充ToolBar菜单总有这种需求,那就是不同的Fragment页面要对应不同的toolBar菜单的响应,这个问题呢,google早就考虑到了,要实现起来也是十分的方便。1.在Frag...
  • lovejjfg
  • lovejjfg
  • 2016年01月29日 20:06
  • 2684

关于在Fragment中使用ToolBar导致菜单错乱----惊现巨坑

昨天写程序时,在一个Activity中嵌入了几个Fragment,通过点击底部的BottomBar实现Fragment的切换,这个很常见,没什么好说的。问题在于:我在每个Fragment中都用了一个T...
  • u014038534
  • u014038534
  • 2016年04月25日 18:55
  • 3686

对话框中使用ON_UPDATE_COMMAND_UI更新菜单状态

解决方法:      今天在测试一个单文档项目时通过使用ON_UPDATE_COMMAND_UI消息能够正常更新菜单状态,就用同样的想法应用于对话框项目上,结果却无法正确更新菜单状态,后来查找到了不同...
  • mimica
  • mimica
  • 2010年10月22日 14:58
  • 1215

解决对话框内工具栏对象无法响应ON_UPDATE_COMMAND_UI的问题

大多数基于MFC文档视结构的程序,CToolBar对象都位于CMainFrame内,由于CMainFrame可以处理OnIdle消息,并最 终在CCmdUI::DoUpdate内实现对工具栏父窗口(即...
  • univmercury
  • univmercury
  • 2008年02月27日 16:42
  • 1981

VC 2010 + MFC : 在对话框里面加入工具条CMFCToolBar

VC 2010 + MFC : 在对话框里面加入工具条CMFCToolBar By:章永辉              VC 2010 + MFC 新库的资料很少,以下给出本人的实现方...
  • CNHK1225
  • CNHK1225
  • 2015年07月23日 09:48
  • 2581

toolbar上menu菜单的显示与隐藏

我今天要调整toolbar上的menu菜单的显示与隐藏,要根据不同的场景做出相应的显示,但是却一直不成功,也按网上的流程走了一遍,却还是不见效,下面先粘出我的代码:未修改前主文件核心部分: @O...
  • liuyucui100
  • liuyucui100
  • 2016年03月11日 11:17
  • 4774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在对话框里面使用ON_UPDATE_COMMAND_UI映射工具条(toolbar和菜单(menu)的心得
举报原因:
原因补充:

(最多只允许输入30个字)