我用VS2008 MFC 向导生成了一个MDI工程,其中想在子窗体中加载工具栏,但是把父窗口中的CMFCToolBar的代码加入到子窗口中create,程序运行时却不显示工具栏,但是点击“视图”-》“工具栏和停靠窗口”,运行一下界面自定义框侯,虽然不对界面做任何自定义改动,仍旧在子窗体中出现了工具栏,说明工具栏已经成功加载,请问如何解决这个问题。
int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CMDIChildWndEx::OnCreate(lpCreateStruct) == -1)
  return -1; 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;      // 未能创建
 } return 0;

补充一下,同样的做法在VS2005中就可行 

解决方案 »

  1.   

    今天研究了一下,一下代码测试通过。希望对你有用。
    其中:ID_MyBar为Toolbar中的第一个元素ID;IDB_BITMAP1 设为默认也可。IDR_TOOLBARV为toolbar资源ID(区别于ID_MyBar)
    if (!m_vToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM | CBRS_GRIPPER | CBRS_TOOLTIPS|CBRS_FLYBY | CBRS_SIZE_DYNAMIC, 
                     CRect(1,1,1,1),ID_MyBar) ||
    !m_vToolBar.LoadToolBar(IDR_TOOLBARV, 0, 0, FALSE, 0, 0,IDB_BITMAP1))
    {
    TRACE0("未能创建工具栏\n");
    return -1;      // 未能创建
    }
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);   
    EnableDocking(CBRS_ALIGN_ANY); DockPane(&m_vToolBar);