从资源动态重新加载CMFCMenuBar

时间:2015-08-22 08:34:38

标签: visual-c++ mfc

如何正确地从菜单资源重新加载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();
}

这是正确的方法,没有任何资源泄漏或错误吗?

1 个答案:

答案 0 :(得分:-1)

// 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);