创建一个功能,根据所选选项卡选择主菜单栏

时间:2016-05-26 17:34:04

标签: c++ visual-studio-2013 mfc

我对c ++很新,我想知道是否有办法创建一个函数来选择在MFC菜单编辑器中创建的菜单栏并将其显示在窗口的顶部。

enter image description here

我们的想法是为每个标签设置不同的菜单栏,因为每个标签都有不同的选项。

例如,一个叫做Doom Reg的ID_REGMENUBAR和脚本的ID_SCRIPTMENUBAR的菜单栏

如果需要更多信息,请说明。谢谢!

1 个答案:

答案 0 :(得分:1)

使用CMenu::LoadMenuCWnd::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);
}