Visual c++ 从资源dynamicali重新加载CMFCMenuBar

Visual c++ 从资源dynamicali重新加载CMFCMenuBar,visual-c++,mfc,Visual C++,Mfc,如何通过菜单资源的ID正确地重新加载CMFCMenuBar? 我的主框架CFrameWndEx包含菜单栏CMFCMenuBar,有时它应该完全将菜单栏从一组切换到另一组。这两个集合都是固定的,存在于资源中。 切换另一组菜单栏的代码示例: void CMyFrame::OnSetMode(bool bMode) { const UINT nSetID = bMode ? IDR_MAINFRAME_SET1 : IDR_MAINFRAME_SET2; m_MainMenu.SetD

如何通过菜单资源的ID正确地重新加载CMFCMenuBar? 我的主框架CFrameWndEx包含菜单栏CMFCMenuBar,有时它应该完全将菜单栏从一组切换到另一组。这两个集合都是固定的,存在于资源中。 切换另一组菜单栏的代码示例:

void CMyFrame::OnSetMode(bool bMode) {
    const UINT nSetID = bMode ? IDR_MAINFRAME_SET1 : IDR_MAINFRAME_SET2;
    m_MainMenu.SetDefaultMenuResId(nSetID);
    m_MainMenu.ResetAll();
}

这是正确的方式,并且没有任何资源泄漏或bug吗?

如果您隐藏一个并显示另一个会怎么样?@Blacktempel我如何隐藏菜单栏?这是单音对象的框架。无法为CFrameWndEx创建两个或多个CMFCMenuBar。。。
// Remove current application menu
CMenu* pMenu = GetMenu();
pMenu->Detach();

UINT menuID = bMode ? IDR_MAINFRAME_SET1 : IDR_MAINFRAME_SET2;

// Reset application menu
CMenu newMenu;
newMenu.LoadMenu(menuID);
SetMenu(&newMenu);