我找了好几天资料,也看到CSDN上的高手说什么VS2010用了BCG,但就是没有找到例子...不知道怎么搞,VC6里能修改,2010中我不知道怎么改高手,help。

解决方案 »

  1.   

    直接在资源改?还是说动态修改,动态改的话,ON_UPDATE_COMMAND_UI() pCmd->SetText()应该可以,可以试一下
      

  2.   

    动态修改,因为是要实现一个语言切换的功能,不可能每个菜单按钮都弄一个ON_UPDATE吧,不知道多文档菜单的怎么弄求高手
      

  3.   

    void SetMenu(BOOL bVal)
    {
        CMenu *pMenu = CMenu::FromHandle(m_wndMenuBar.GetHMenu());
        CString strConnectTitle = _T("修改名称");
        pMenu->ModifyMenu(ID_CON_CONNECT, MF_BYCOMMAND, ID_CON_CONNECT, strConnectTitle);
        m_wndMenuBar.CreateFromMenu(pMenu->GetSafeHmenu(), bVal, bVal);
    }最后一句很关键  其他的操作和经典菜单一样  2010菜单与2005或者vc6不一样
      

  4.   

    谢谢QiuXin425,多文档中第一个菜单可以获得,但是新建文档之后,另一个菜单呢,怎么取得然后用来修改文本
      

  5.   


    这个m_wndMenuBar类里面应该有系统菜单和当前菜单的  再说新建文档的菜单id应该相同的
      

  6.   

    是这样没错,但是如果要做成多语言切换的话,我有个地方解决不了,比如刚开始启动,是英文菜单,新建一个文档后,要怎么获得新菜单,然后修改文本,必须得在新建完,菜单显示出来时一并把文本改成英文的,如果是在用的过程中,那就可以直接获得m_wndMenuBar,然后来用改动了
      

  7.   


    我曾经也想创建多语言切换,但子窗口一出来菜单就会是开始的默认状态,这个我一直没有解决。我感觉在程序启动的doc里面就把菜单和窗口关联了。要是用编码修改好像菜单就会闪烁不同的语言。
    最后我做的语言包。
      

  8.   

    悲剧...
    我看到有个帖子
    在子框架的OnCreate函数中,
    CMenu* pMenu = CMenu::FromHandle(m_hMenuShared);
    这时得到的指针应该就是新的菜单了,因为我尝试得到他菜单个数,个数确实是没错,但是又是改不了,把CMFCToolBar那个对象去掉就可以改了...
    qiuxin425...怎么回事唉该网址如下
    http://hi.baidu.com/kiropower/blog/item/1c71cc7ba267bee70bd1870c.html
      

  9.   


    你要是非要用2010来做的话 在创建工程时选择经典菜单就可以啦  别用BCG技术  这个现在资料太少
      

  10.   

    CString Str;
    CBCGPToolbarButton  *pButton = NULL;
    int Index = 0;
    do
    {
    pButton = m_wndMenuBar.GetMenuItem(Index);

    if(pButton)
    {
    //由于无ID,就只能按索引来修改了,索引为0的菜单项在单文档中是"文件"菜单项,索引为1的菜单项在
    switch (Index)
    {
    case 0:
    Str.LoadStringA(LngIndex+101);
    pButton->m_strText = Str;
    break;
    case 1:
    Str.LoadStringA(LngIndex+201);
    pButton->m_strText = Str;
    break;
    case 2:
    Str.LoadStringA(LngIndex+301);
    pButton->m_strText = Str;
    break;
    case 3:
    Str.LoadStringA(LngIndex+401);
    pButton->m_strText = Str;
    break;
    case 4:
    Str.LoadStringA(LngIndex+499);
    pButton->m_strText = Str;
    break;
    case 5:
    Str.LoadStringA(LngIndex+601);
    pButton->m_strText = Str;
    break;
    case 6:
    Str.LoadStringA(LngIndex+701);
    pButton->m_strText = Str;
    break;
    break;
    case 7:
    Str.LoadStringA(LngIndex+801);
    pButton->m_strText = Str;
    break;
    }
    }
    ++Index;
    }
    while( pButton != NULL );
    DrawMenuBar();
      

  11.   

    1、2、3....7分别对应主菜单的'文件'、‘编辑’、‘视图’、‘工具’、‘帮助’等等,这个方法可以修改主菜单的语言(如英文、中文、瑞典文等等),LngIndex是个全局变量,对应于StringTable中字符串的索引,设置它就可以实现多国语言版本软件
      

  12.   


    CMenu *pMenu = CMenu::FromHandle(m_wndMenuBar.GetHMenu())无法获取到啊