我的程序界面是这个样子的:    _______________________________
  |             |             |  |
  |_____________|_____________|  |
  |             |             |  |
  |_____________|_____________|  |
            |_______________________________|__|左上是一个拆分窗口,分成四个视图(视图是CView的派生类),右侧是一个DialogBar,下面是状态栏我在CMainFrame的OnCreate函数里初始化生成右侧的DialogBar,在OnCreateClient函数里拆分视图,其中,拆分视图的代码是:CRect cr; 
GetClientRect( &cr );if(!m_viewportSplitter.CreateStatic(this,2,2))
return false;

m_viewportSplitter.CreateView(0,0,RUNTIME_CLASS(CTempView),CSize(0,0),pContext);m_viewportSplitter.CreateView(0,1,RUNTIME_CLASS(CTempView),CSize(0,cr.Height()/2),pContext);m_viewportSplitter.CreateView(1,0,RUNTIME_CLASS(CTempView),CSize(cr.Width()/2,0),pContext);m_viewportSplitter.CreateView(1,1,RUNTIME_CLASS(CTempView),CSize(0,0),pContext);但是程序运行之后四个拆分出的视图并不是平分了程序框架除了ControlBar和状态栏的空间,我看了一下运行之后的客户区大小,并不是除了除了ControlBar和状态栏的空间。请帮我看看是为什么?怎么解决?另外再问一下,我的拆分窗口类CSplitterWnd是我的程序里的CMainFrame的一个成员类,CSplitterWnd的成员函数能调用CMainFrame里的成员函数吗? 

解决方案 »

  1.   

    在CMainFrame::OnSize()中调整拆分框架的大小。
      

  2.   

    谢谢,确实有效果,但是我还是取不到客户区的大小我怎么能获得ControlBar的状态呢?(显示还是隐藏)
      

  3.   

    OnCreate函数里初始化生成右侧的DialogBar
    把它放到OnCreateClient里面去怎么样。
    原来做过一个程序,客户区应该是除了BAR之后的的吧。