CMainFrame有两个工具条 一个是生成的m_wndTooBar 另一个是基于CdialogBar的工具条
我用
m_wndXXBar.EnableDocking(0);
FloatControlBar(&m_wndXXBar,CPoint);
永久浮动任何一个工具条都会出现运行错误
在网上搜了半天不知道什么原因另外,我将m_wndToolBar 的类改为自定义的类(继承CToolBar有一个CEdit控件),用w_wndToolBar.m_wndEdit.Create(...)也会出现运行错误以后还有两个需要永久浮动的CdialogBar的工具条,如果这个错误不解决,后面就不知道该怎么做下去了希望大家能帮帮我。。

解决方案 »

  1.   

    m_InfoDialog.EnableDocking(CBRS_ALIGN_LEFT);
    DockControlBar(&m_InfoDialog);
    POINT pos = {0,0};
    FloatControlBar(&m_InfoDialog,pos);
    m_InfoDialog.EnableDocking(CBRS_NOALIGN);应该是mfc的问题,用我的方法可以
      

  2.   

    哎也不知什么原因。。
    刚才又试了一下
    m_wndToolBar可以浮动
    但m_wndToolBar.m_wndEdit.Create(这里要出现运行错误。。
    浮动基于CDialogBar的m_wndNavigation要出错..
    if (CFrameWnd::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(IDR_MAINFRAME))
    {
    TRACE0("Failed to create toolbar\n");
    return -1;      // fail to create
    }

    // m_wndToolBar.SetButtonInfo(10,WM_USER+9,TBBS_SEPARATOR,150);
    // CRect rect;
    // m_wndToolBar.GetItemRect(10,&rect);
    // m_wndToolBar.m_wndEdit.Create(WS_CHILD | WS_VISIBLE,rect,&m_wndToolBar,WM_USER+9); if (!m_wndStatusBar.Create(this) ||
    !m_wndStatusBar.SetIndicators(indicators,
      sizeof(indicators)/sizeof(UINT)))
    {
    TRACE0("Failed to create status bar\n");
    return -1;      // fail to create
    } if(!m_wndNavigation.Create(this,IDD_NAVIGATION_FORM,WS_CHILD | WS_VISIBLE | CBRS_LEFT | CBRS_FLOATING  | CBRS_SIZE_FIXED ,IDD_NAVIGATION_FORM))
    {
    return -1;
    }
    m_wndNavigation.SetWindowText(_T("鹰眼")); EnableDocking(CBRS_ALIGN_ANY); m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    // FloatControlBar(&m_wndToolBar,CPoint(0,0));
    DockControlBar(&m_wndToolBar); m_wndNavigation.EnableDocking(0);
    // DockControlBar(&m_wndNavigation);
    FloatControlBar(&m_wndNavigation,CPoint(0,0)); return 0;
      

  3.   

    先Docking一下就可以了。MFC确实很鬼,可能是不知道正确的做法。但是不用MFC好像更容易控制。没办法,我就是一开始不小心用了MFC.好多东西都很头大。
      

  4.   

    不知道楼上什么意思
    我这么做 还是出错
    m_wndNavigation.EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndNavigation);
    FloatControlBar(&m_wndNavigation,CPoint(0,0));
      

  5.   

    我新加了一个基于CDialogBar的类
    可以正常浮动。。
    不知道是什么原因。。
    明天结帖