小弟初学vc,遇到麻烦请教各位大侠,谢谢帮忙。
我在单文档中建立了两个视图view1和view2。然后在CMainFrame的OnCreateClient中对View1进行了分割。然后想对View2再进行和View1不同的分割,该如何进行?请帮帮忙!

解决方案 »

  1.   

    abuseyoudna1981() 
    是啊,我用CSplitterWnd对View1进行静态分割了。现在想对View2也进行分割,也在OncreateClient里用CSplitterWnd吗?
      

  2.   

    kimryo(Demon gate has open...): 两个splitter
    两个splitter??程序编写时,我是先对视类进行静态分割,然后又增加了一个视类View2。
    如果再用一个splitter,是不是分割的还是原来那个视?我想对另外一个视view2进行分割,可以吗?
      

  3.   

    哪个View不是程序里面指定的么?
      

  4.   

    kimryo(Demon gate has open...) :
    程序里指定的View是分割出来的View吧?
    您看代码:
    ... ...
        if(m_wndSplitter1.CreateStatic(this,2,1)==NULL)    //分割为两行一列
          return FALSE;
        m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext); //将CCuteFTPView连接到0行0列窗格上
    ... ...
    您说的那个View是上面RUNTIME_CLASS的参数吗?
    我用上面的方式把View1分割为2行1列,我想再分割View2为2行2列,该怎么办?
    View1和View2是一个文档关联的两个视图。
      

  5.   

    if(m_wndSplitter1.CreateStatic(this,2,1)==NULL)    //分割为两行一列
          return FALSE;
     
    这里有三个参数 THIS 代表即将要分割的视类。
                    2   代表在水平方向分为 2 行
                    1   代表在垂直方向分为 1 行,也就是不分。
     
    CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle = WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );
    原形,后面有个参数 nID 默认值是  AFX_IDW_PANE_FIRST 
    如果要建立新的切分的要使用 IDFROMROWCOL(X,Y)指定行列值得,
    X= 0 Y =0 切分第一切分视图,X =1 ,Y= 0 切分第二个视图
              
           m_wndSplitter2.create(&m_wndSplitter1,........IdFromRowCol(row,col ))
              ..............................你测试下,应该没有问题的!
    if (!m_wndSplitter.CreateStatic(this, 1, 2))
    {
    TRACE0("Failed to CreateStaticSplitter\n");
    return FALSE;
    } // add the first splitter pane - the default view in column 0
    if (!m_wndSplitter.CreateView(0, 0,
    pContext->m_pNewViewClass, CSize(200, 50), pContext))
    {
    TRACE0("Failed to create first pane\n");
    return FALSE;
    } // add the second splitter pane - which is a nested splitter with 2 rows
    if (!m_wndSplitter2.CreateStatic(
    &m_wndSplitter,     // our parent window is the first splitter
    2, 1,               // the new splitter is 2 rows, 1 column
    WS_CHILD | WS_VISIBLE | WS_BORDER,  // style, WS_BORDER is needed
    m_wndSplitter.IdFromRowCol(0, 1)
    // new splitter is in the first row, 2nd column of first splitter
       ))
    {
    TRACE0("Failed to create nested splitter\n");
    return FALSE;
    } // now create the two views inside the nested splitter
    int cyText = max(lpcs->cy - 70, 20);    // height of text pane if (!m_wndSplitter2.CreateView(0, 0,
    RUNTIME_CLASS(CTextView), CSize(0, cyText), pContext))
    {
    TRACE0("Failed to create second pane\n");
    return FALSE;
    }
    if (!m_wndSplitter2.CreateView(1, 0,
    RUNTIME_CLASS(CColorView), CSize(0, 0), pContext))
    {
    TRACE0("Failed to create third pane\n");
    return FALSE;
    }
      

  6.   

    jyl168(jiangyouliang)大哥:
    我按照您的做了,作出的效果如下:相当于将当前活动视View先分割为两列一行,再将第二列分割为两行。这是没有问题的。
    效果如下所示:
    View1    |        |
    ---------|   View3|         
    View2    |        |
    _________|________|
    可是我想要的效果是:不再对View1,View2和View3进行分割了,而是对当前不活动的另外一个视进行分割。我的文档关联了两个视,不知道我说明白没有?
      

  7.   

    即在MainFrame的OnCreateClient里的分割都是对当前活动的视类进行的。如何或者说能否对当前隐藏的另外一个视进行分割?Help!
      

  8.   

    视类的 ONCREATE 里面写这个代码呀!
      

  9.   

    建立几个从  CMDIChildWnd 继承的类eg:CSplitterFrame
       在 CWINAPP 的 InitInstance()
       AddDocTemplate(new CMultiDocTemplate(IDR_SPLIT2TYPE,
    RUNTIME_CLASS(CMainDoc),
    RUNTIME_CLASS(CSplitterFrame),
    RUNTIME_CLASS(CTextView)));
       
       AddDocTemplate(new CMultiDocTemplate(IDR_SPLIT2TYPE,
    RUNTIME_CLASS(CMainDoc),
    RUNTIME_CLASS(CSplitterFrame1),
    RUNTIME_CLASS(CTextView1)));   然后  BOOL CSplitterFrame::OnCreateClient(LPCREATESTRUCT,
     CCreateContext* pContext)
       
             BOOL CSplitterFrame1::OnCreateClient(LPCREATESTRUCT,
     CCreateContext* pContext)   分别加入你切分视类加入你的切分窗口方法。  关键点:
          1。加入 CMDIChildWnd 的继承类作为切分的框架
          2。绑定框架类与文档的关系
               AddDocTemplate(new CMultiDocTemplate(IDR_SPLIT2TYPE,
    RUNTIME_CLASS(CMainDoc),
    RUNTIME_CLASS(CSplitterFrame1),
    RUNTIME_CLASS(CTextView1)));
          3。在框架类中 OnCreateClient 加入切分代码