我有一个 MDI 程序,现在要设计两个浮动的控件栏(control bar), 类似于VisualC++ 6.0 的WorkSpace 和 Output 的浮动栏.我希望初始化的时候,下面的Output 浮动栏不要像 VisualC++6.0 似的整个“趴”下来,我希望他能和WorkSpace一样宽,并列地站在左边!(类似于 微软的 Outlook Express 中,左边的文件夹和联系人浮动框)。我现在的问题是:程序运行后,初始化时,两个浮动框的初始化位置不对,(下面的总是“完全趴”着)不能实现我希望的样子(上面已述)。以下是我的部分源代码
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CRect rectUpper, rectDown;//这是我定义好的用来初始化浮动框的位置(Debug 后,没有问题)
CUpperBar m_wndUpperBar;
CDownBar  m_wndDownBar;//这是两个定义好的浮动框类变量;
....
//创建m_wndUpperBar
m_wndUpperBar.SetSizeDockStyle(SZBARF_NOCAPTION);
if(!m_wndUpperBar.Create(this,_T(""),NULL,rectUpper))
{
TRACE0(_T("CMainFrame::OnCreate: failed to create UpperBar Bar\n"));
return -1;      

m_wndUpperBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndUpperBar,AFX_IDW_DOCKBAR_LEFT,rectUpper); //创建DownBar
m_wndDownBar.SetSizeDockStyle(SZBARF_NOCAPTION);
if(!m_wndDownBar.Create(this,_T(""),NULL,rectDown))
{
TRACE0(_T("CMainFrame::OnCreate: failed to create Down Bar\n"));
return -1;      

m_wndDownBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndDownBar,AFX_IDW_DOCKBAR_BOTTOM,rectDown);
....
}

解决方案 »

  1.   

    像CUpperBar的类不知道做了些什么// 我觉得这两句有问题,最好写到这个函数的最后,并交换一下位置试试
    //
    DockControlBar(&m_wndUpperBar,AFX_IDW_DOCKBAR_LEFT,rectUpper); 
    DockControlBar(&m_wndDownBar,AFX_IDW_DOCKBAR_BOTTOM,rectDown);
    你先建立CDownBar,定位,然后再建立CUpperBar,定位
      

  2.   

    CUpperBar,CDownBar  是两个定义好的浮动框类;类似于CDialogBar的类
      

  3.   

    那就把两个controlbar都放在左面
    放在下面是不成的了
      

  4.   

    To:robothn(雷鸟) 不行啊,我试过了,如果都放在左边,它俩会成"朋"子状(两个并列站着)请高人指点啊!
      

  5.   

    参考一下SizingControlBar(www.codeproject.com上有)的LoadState()函数,可以实现
    用CControlBar我帮不上你
      

  6.   

    你可以用CSpliter,来逐级分割啊???
    给我发个邮箱,我寄给你例子?