修改 菜单ID为IDR_MAINFRAME的pupop属性的菜单内容。
比如将 “文件” 改为“file”;
自己分析因为 PUPOP属性的菜单项是没有ID的!所以应该用位置来判断!
自己网上百度了些方法!都会报错。
求教!

解决方案 »

  1.   

    对话框程序的IDR_MAINFRAME可以在资源管理器下打开,然后对其进行修改。
      

  2.   


    CWnd *pWnd = AfxGetMainWnd();
    CMenu *pMenu = pWnd->GetMenu();
    pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING, NULL, _T("File"));
    pWnd->DrawMenuBar();//刷新菜单
      

  3.   

    我做了两个Menu !直接切换!
    WORD nLanguage=MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US);
    HRSRC hResourse=::FindResourceEx(NULL,RT_MENU,MAKEINTRESOURCE(IDR_ENGMENU),nLanguage);
    if(hResourse!=NULL)
    {
    CMenu *pMenu=GetMenu();
    SetMenu(NULL);
    if (pMenu!=NULL)
    {
    pMenu->DestroyMenu();
    }
    HGLOBAL hMenuTemplate=LoadResource(NULL,hResourse);
    CMenu Menu;
    Menu.LoadMenuIndirect(hMenuTemplate);
    SetMenu(&Menu);
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
    }
    问题:切换后的Menu使用不了!只能看!
      

  4.   


    CMenu *pMenu = GetMenu();
    pMenu->ModifyMenu(0, MF_BYPOSITION|MF_STRING, NULL, _T("File"));
    DrawMenuBar();//刷新菜单
    试试
      

  5.   


    编译没错 运行出错 是因为你实例化对象的生命周期问题 CMenu类有一个 Detach函数 用来分离句柄和对象的
    在后面加上这一句试试 pMenu.Detach();
      

  6.   


    位置搞不清 或者难得去判断的就直接用ID 还是比较保险的 MF_BYCOMMAND
      

  7.   

    你直接把"文件"菜单改成File,就行了吧,为什么删了重写呢。重写要保证ID和原来一样
      

  8.   

    因为是 pupop属性的!所以是没有ID的!
      

  9.   

    我需要做一个多国语言菜单!所以,需要在编译后控制修改目录的名称!并不是单纯只为了改Caption!
      

  10.   

    类似的东西我做过
    不过我是修改的对话框的菜单
    而且ID不是IDR_MAINFRAME
    不过我觉得原理应该是一样的
    以下代码仅供参考
    CMenu menuFrame;
    CString strMenuText;
    //获取框架菜单
    menuFrame.Attach(GetMenu()->GetSafeHmenu()); //加载主菜单文字
    strMenuText.LoadString(IDS_CHATDLG_MENU_FILE);
    menuFrame.ModifyMenu(0, MF_BYPOSITION, NULL, strMenuText);
    strMenuText.LoadString(IDS_CHATDLG_MENU_OPERATE);
    menuFrame.ModifyMenu(1, MF_BYPOSITION, NULL, strMenuText); //加载子菜单文字
    strMenuText.LoadString(IDS_CHATDLG_SUBMENU_FILE_SAVE);
    menuFrame.GetSubMenu(0)->ModifyMenu(0, MF_BYPOSITION, ID_MENU_CHAT_SAVECHATRECORD, strMenuText);
    strMenuText.LoadString(IDS_CHATDLG_SUBMENU_FILE_HISTORY);
    menuFrame.GetSubMenu(0)->ModifyMenu(1, MF_BYPOSITION, ID_MENU_CHAT_HISTORYRECORD, strMenuText);
    strMenuText.LoadString(IDS_CHATDLG_SUBMENU_FILE_CLOSE);
    menuFrame.GetSubMenu(0)->ModifyMenu(3, MF_BYPOSITION, ID_MENU_CHAT_COLSE, strMenuText);
    strMenuText.LoadString(IDS_CHATDLG_SUBMENU_OPERATE_INVITE);
    menuFrame.GetSubMenu(1)->ModifyMenu(0, MF_BYPOSITION, ID_MENU_CHAT_INVITE, strMenuText);
    strMenuText.LoadString(IDS_CHATDLG_SUBMENU_OPERATE_SENDFILE);
    menuFrame.GetSubMenu(1)->ModifyMenu(2, MF_BYPOSITION, ID_MENU_CHAT_SENDFILE, strMenuText);
    strMenuText.LoadString(IDS_CHATDLG_SUBMENU_OPERATE_SENDMAIL);
    menuFrame.GetSubMenu(1)->ModifyMenu(3, MF_BYPOSITION, ID_MENU_CHAT_SENDMAIL, strMenuText);
    strMenuText.LoadString(IDS_CHATDLG_SUBMENU_OPERATE_SELFONT);
    menuFrame.GetSubMenu(1)->ModifyMenu(5, MF_BYPOSITION, ID_MENU_CHAT_CHOOSEFONT, strMenuText);
      

  11.   

    各位代码都很有用,测试都能用,就是我自己的程序不能用!可能是由于自己用了SkinMagic的原因吧!不过还是 谢谢大家。