HMENU m_hMenu=::GetMenu(this->m_hWnd);
m_cn.Attach(m_hMenu);
m_en.LoadMenu("IDR_MENU_EN");
在单文档视图应用程序中上面的代码是可以实现菜单多语言切换功能的,可是我的程序是基于对话框的应用程序,现在弄了两个菜单IDR_MENU_EN         IDR_MENU_CN(对话框面板属性那里选的是它)执行SetMenu(&m_en);菜单就变没了,执行SetMenu(&m_cn);又回来了哪位能说下,怎么样搞才能实现多语言切换

解决方案 »

  1.   

    看到你的问题,大致试了下,添加一个按钮,并响应函数
    在.h文件声明CMenu m_menu;BOOL bMenu;
    在构造函数中bMenu = TRUE;
    void CXXXDlg::OnChangebtn() 
    {
    // TODO: Add your control notification handler code here
    m_menu.Detach();
    if(!bMenu)
    m_menu.LoadMenu(IDR_MAINFRAME);
    else
    m_menu.LoadMenu(IDR_MENU1);
    SetMenu(NULL);
    SetMenu(&m_menu); bMenu =! bMenu;
    }在对话框中设置默认的菜单为IDR_MAINFRAME,搞定!
      

  2.   

    哦,那就话SetMenu(NULL);注释掉,发帖的时候,不小心给去掉了
      

  3.   

    我的程序是基于对话框的应用程序我试了不的行,m_cn.Detach();执行这句菜单就没了
      

  4.   


    我就是用对话框做的,这里只设置了一个CMenu 的一个m_menu对象,自然
    要用m_menu.Detach(),不然下次加载的时候会出错。
    不是你声明的m_en和m_cn两个
    不是非要两个对象来加载菜单的。而且我做的只要点击按钮,菜单就可以在对话框上切换啦,
    怎么可能不行呢?
      

  5.   

    能不能把你调试的代码发我看一下,m_menu.LoadMenu(IDR_MAINFRAME);
    我没有IDR_MAINFRAME我也不清楚哪里没弄对,感觉
    HMENU m_hMenu=::GetMenu(this->m_hWnd); 
    m_cn.Attach(m_hMenu); 这样后m_cn才有用但重新加载m_cn.LoadMenu("IDR_MENU_EN");没的反应我的油箱 [email protected]谢谢