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

清泛编译
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 总结 技巧

分享到:
评论加载中,请稍后...
App Inventor 2 中文网,少儿编程首选平台!
回到顶部