大家都知道,当建立一个多文档程序,最大化副窗体的时候看到副窗体会充满主窗体的用户区。现在的问题是我想把主窗体静态拆分成3个子窗体(左边上下两部分,右边一大部分),然后当最大化副窗体的时候我希望副窗体充满的是主窗体的右边那个子窗体,换句话说将主窗体拆分出来的右边那个子窗体作为所有副窗体的容器。
该怎么实现?

解决方案 »

  1.   

    你所说的多文档程序的用户区其实是一个叫MDICLIENT的控件,只要把这个窗口作为主窗口的右半部分就可以了。在主窗口的WM_SIZE里面获取到这个窗口的句柄或对象,重新调整一下其位置就可以了。
      

  2.   

    楼上的,您的意思是指先随便拆分出来,然后在控制MDICLIENT这个控件的起始坐标和长宽大小到我要的子窗口的位置上去?我现在已经实现了对主窗口的静态拆分,代码如下:(其中dlg2是一个基于cformview的view类)
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
    Splitter1.CreateStatic(this,1,2); 
    Splitter1.SetColumnInfo(0, 200, 100);
    Splitter2.CreateStatic(&Splitter1,2,1,WS_CHILD|WS_VISIBLE,Splitter1.IdFromRowCol(0,0));  
    Splitter2.CreateView(0,0,RUNTIME_CLASS(dlg2),CSize(0,280),pContext); 
    Splitter2.CreateView(1,0,RUNTIME_CLASS(dlg2),CSize(0,0),pContext); 
    Splitter1.CreateView(0,1,RUNTIME_CLASS(dlg2),CSize(0,0),pContext); 
    return CMDIFrameWnd::OnCreateClient(lpcs, pContext);
    }
    执行上面的代码,主窗口被拆分成了左边上下两部分,右边一大部分的横的“品”字形结构。但是原来程序初始化完成后的那个浮动的副窗体(childframe)不见了。那我该怎么在WM_SIZE里获得MDICLIENT这个控件的句柄,并调整位置到Splitter1的(0,1)号子窗体中去啊啊?
    我是新手,现在还只能做些照葫芦画瓢的工作,请多包含。