如何正确地从菜单资源重新加载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();
}
这是正确的方法,没有任何资源泄漏或错误吗?
答案 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);