如何用VC++ 动态修改应用程序菜单

来源:清泛编译     2016-05-23 13:43:54    人气:     我有话说( 0 人参与)

1.属性页的添加:创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为 属性页的类(头文件)里创建CpropertySheet类的一

25. 如何用VC++ 动态修改应用程序菜单

 [问题提出]
  本文将介绍一些使用CMenu的方法,如查找指定菜单,在指定选项前添加菜单项.....

 [解决方法]
  使用CWnd::GetMenu( )访问主菜单,GetMenu( )返回指向CMenu对象的指针,它有一些成员函数,允许我们修改一个菜单。
  1) 如何实现找到一个菜单项:
  步骤如下:
  {
     //动态修改菜单:
     // Get the Main Menu
     CMenu* pMainMenu = AfxGetMainWnd()->GetMenu();
     CMenu* pSubMenu = NULL;
     int i;
     for (i=0; i<(int)pMainMenu->GetMenuItemCount(); i++)
     {
      pSubMenu = pMainMenu->GetSubMenu(i);
      if (pSubMenu && pSubMenu->GetMenuItemID(0) == ID_FILE_NEW)
        break;
     }
     CString s;
     s.Format("%d",i);//菜单项的位数.
     AfxMessageBox(s);
     ASSERT(pSubMenu);
  }

  2) 动态编辑菜单:
  步骤如下(可以用上例的pSubMenu,要加的菜单你自己定义.):
  1) 添加一个称为Wzd2,命令ID为IDC_NAME_NEW1的菜单命令到该菜单中,可以用:
     pSubMenu->AppendMenu(0,IDC_NAME_NEW1,"New&1");

  2) 在New1前插入New2,可以用:
     pSubMenu->InsertMenu(IDC_NAME_NEW1,MF_BYCOMMAND,IDC_NAME_NEW2, "New&2");

  3) 把New1改变成New3,可以用:
     pSubMenu->ModifyMenu(IDC_NAME_NEW1,MF_BYCOMMAND,IDC_NAME_NEW3, "New&3");

  4) 删除该菜单中第二项,可以用:
     pSubMenu->RemoveMenu(1,MF_BYPOSITION);

本文导航

MFC 总结 技巧

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: