在通过官方引导创建的多文档MFC程序中,会有自动创建相应菜单栏或停靠窗口。
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
如上,如果你单看上面的注释 // 如果您不希望工具栏和菜单栏可停靠,请删除这五行
删除这五行,那么结果就是你生成的菜单栏是找不到的。
菜单栏可以自由拖动的好处是在我们需要专注某个区域的时候,将菜单栏拖到其他地方可以扩大你的视野面积,但大部分时候,可以自由拖动会给你带来一些你预料之外的操作,因此设置为禁止拖动,对我们发布的软件,在操作体验上还是可以得到比较好的改善的。
需要设置为禁止拖动,则只需要在上述代码下紧接着加上如下代码即可:
m_wndMenuBar.SetControlBarStyle(AFX_CBRS_RESIZE);
m_wndToolBar.SetControlBarStyle(AFX_CBRS_RESIZE);