我对c ++很新,我想知道是否有办法创建一个函数来选择在MFC菜单编辑器中创建的菜单栏并将其显示在窗口的顶部。
我们的想法是为每个标签设置不同的菜单栏,因为每个标签都有不同的选项。
例如,一个叫做Doom Reg的ID_REGMENUBAR和脚本的ID_SCRIPTMENUBAR的菜单栏
如果需要更多信息,请说明。谢谢!
答案 0 :(得分:1)
使用CMenu::LoadMenu
和CWnd::SetMenu
。例如,声明成员数据:
CMenu m_menu1, m_menu2;
初始化菜单一次:
m_menu1.LoadMenu(ID_REGMENUBAR);
m_menu2.LoadMenu(ID_SCRIPTMENUBAR);
使用SetMenu(&m_menu1)
在运行时分配菜单。您可以通过查看TCN_SELCHANGE
BEGIN_MESSAGE_MAP(...)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnTabSelection)
END_MESSAGE_MAP()
void CMyWnd::OnTabSelection(NMHDR*, LRESULT*)
{
int tab = m_Tab.GetCurSel();
CMenu *pMenu = NULL;
if (tab == 0) pMenu = &m_menu1;
if (tab == 1) pMenu = &m_menu2;
CFrameWnd* frame = (CFrameWnd*)AfxGetMainWnd();
frame->SetMenu(pMenu);
}