我用GetMenu(),返回的是空,vc2008 和vc6.0不一样吗?怎么获取不了呢?有没有什么好的解决办法!

解决方案 »

  1.   

    没有代码 现在就是 在 frame类 里getmenu  返回的 为空
      

  2.   

    好像 vc2008 用的是CMFCMenubar , 怎么用这个改变菜单的文本啊!有没有用过的!
      

  3.   

    http://topic.csdn.net/u/20101210/11/fed26155-ae04-4e1b-827d-7e2c8036e4a4.html
    2楼...
      

  4.   

    http://topic.csdn.net/u/20110311/08/c31cba01-5fdd-4dfb-ab3e-c3d4062491d8.html参考上面这个VS2008 单文档菜单问题的 帖子
      

  5.   

    我用 VS 2010 新建了个单文档的工程,第1步的项目类型里选择"标准MFC”在 后面的 命令栏里我选择了"使用经典菜单",在主菜单里,我增加了一个 ID为ID_32771 的子菜单,在ID_32771 这个子菜单的响应函数里,依次修改其它所有主菜单下面的各个子菜单的名字为“修改的菜单名字1”、“修改的菜单名字2”,、“修改的菜单名字3”,、、、、可以实现,代码如下,
    void C修改菜单View::On32771()
    {
      // TODO: 在此添加命令处理程序代码
      //动态修改菜单:
      // Get the Main Menu
      CMenu* pMainMenu = AfxGetMainWnd()->GetMenu();
      CMenu* pSubMenu = NULL;
      CString menustr,numstr;
      int i=0,j=0,k=0;
      for (i=0; i<(int)pMainMenu->GetMenuItemCount(); i++)
      {
       pSubMenu = pMainMenu->GetSubMenu(i);
      if (pSubMenu)
    {
      for (int j=0;j<pSubMenu->GetMenuItemCount();j++)
      {
       k++;
       numstr.Format(_T("%d"),k);
    pSubMenu->GetMenuStringW(j,menustr,MF_BYPOSITION);//通过 序号来获取
    MessageBox(menustr,_T("修改前的菜单内容:"),MB_OK);
    menustr=_T("修改的菜单名字")+numstr;
    pSubMenu->ModifyMenuW(j,MF_BYPOSITION,0,menustr);
    MessageBox(menustr,_T("修改后的菜单内容:"),MB_OK);
      }
    }
      }
    }楼主可以试一下在 VC2008 里可否实现,我觉得应该是可以的。
      

  6.   

    BOOL ModifyMenu(
       UINT nPosition,
       UINT nFlags,
       UINT_PTR nIDNewItem = 0,
       LPCTSTR lpszNewItem = NULL 
    );
      

  7.   

    这样做应该可以吧:
             CMenu m_Menu;
    m_Menu.CreatePopupMenu();
    GetParent()->GetMenu()->AppendMenu(MF_POPUP,(UINT)m_Menu.m_hMenu,"sunxin");
    GetParent()->DrawMenuBar();