int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
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
} 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
} // TODO: Delete these three lines if you don't want the toolbar to
//  be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar); return 0;
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar); return 0;
以上代码,先设置工具条可以停靠,在设置主框架窗口可以停靠。
我不解,主框架窗口,本身就是主窗口,是别的窗口的容器,它自己能往哪停靠呢?

解决方案 »

  1.   

    应该是停靠在屏幕上。
    GetWindowRect和GetClientRect的区别把。。
      

  2.   

    看看这个函数的说明
    http://www.kaifa6.com/v/mfcshouce/Class/CFrameWnd_EnableDocking.htmutton
      

  3.   

    CFrameWnd::EnableDocking  
    Call this function to enable dockable control bars in a frame window. 
      

  4.   

        m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    以上是允许工具条停靠在任何位置,说的就是可以停靠在父窗口的任何位置吧    EnableDocking(CBRS_ALIGN_ANY);
    以上是允许主框架窗口停靠。指的是主框架停靠在父窗口的任何位置吧
    可是,主框架的父窗口是谁呢?它没有父窗口呀?
    以下描述的意思是,允许工具条停靠在主框架窗口。
    CFrameWnd::EnableDocking   
    Call this function to enable dockable control bars in a frame window.  
    但是,m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);也是允许工具条停靠在主框架上呀,
    二者难道都是指同样的意思吗?不会吧。