请问,我在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数加了如下代码
if (!m_wndMainBar.Create(_T("主要界面"), this,CSize(280,200),TRUE,ID_wndMainBar))
{
TRACE0("Failed to create mybar\n");
return -1;
}    if (!m_wndViewBar.Create(_T("系统观察"), this,CSize(600,80),TRUE,ID_wndViewBar))
{
TRACE0("Failed to create mybar\n");
return -1;
} if(!m_wndMain.Create(IDD_DIALOG_MAIN,&m_wndMainBar))
return -1;
m_wndMain.ShowWindow(SW_SHOW);

////////编辑控件///////////
if(!m_wndEdit.Create(WS_VSCROLL|WS_CHILD|
WS_VISIBLE|ES_AUTOVSCROLL|
ES_MULTILINE|ES_WANTRETURN,
CRect(0,0,0,0),&m_wndViewBar,101))
return -1;m_wndMainBar.SetBarStyle(m_wndMainBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
    m_wndMainBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndViewBar.SetBarStyle(m_wndViewBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndViewBar.EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndViewBar, AFX_IDW_DOCKBAR_BOTTOM);
DockControlBar(&m_wndMainBar, AFX_IDW_DOCKBAR_RIGHT);主要试想把m_wndViewBar的停靠在底部,但不占用整个底部,而是m_wndMainBar占用整个右边,请问在这应该怎么做呢////

解决方案 »

  1.   


    void EkDockBarNextTo(CControlBar* pNewBar,CControlBar* pDockedBar,UINT nDockBarID=AFX_IDW_DOCKBAR_TOP)
    {
          ASSERT_VALID( pDockedBar );
          ASSERT_VALID( pNewBar );      // 1 - 找到将要停靠的框架
          CFrameWnd* pFrame = pDockedBar->GetDockingFrame();       // 2 - 强制MFC计算停靠工具条的位置
          pFrame->RecalcLayout();       // 3 - 计算已经停靠的工具条的CRect
          CRect rect;
          pDockedBar->GetWindowRect( &rect );       // 4 -轻微的将该矩形偏移到右下,从而使新的条停靠在已存在的条的右部或底部
          rect.OffsetRect(1,0);       // 5 - 将新的工具条停靠在指定的位置
          pFrame->DockControlBar( pNewBar, nDockBarID, &rect );} //下面的代码说明了如何使用这个函数://新工具栏停靠
     m_wndNewToolbar.EnableDocking( CBRS_ALIGN_ANY );
     EkDockBarNextTo(&m_wndNewToolbar,&m_wndToolBar,AFX_IDW_DOCKBAR_TOP);
    先停靠好一个工具条,然后根据已停靠好的工具栏放置新工具条的位置
      

  2.   

    用SetWindowPos试试,我看有人说这样做。