我在主框架窗口的createclient函数中这样切分
m_wndSplitter1.CreateStatic(this,1,2);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CLeftView),CSize(300,0),pContext);
m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,m_wndSplitter1.IdFromRowCol(0,1));
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CClientView),CSize(0,150),pContext);
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CView3),CSize(0,0),pContext);
在cclientview中的成员函数中
CMainFrame *pframe = (CMainFrame *)AfxGetApp()->m_pMainWnd;
CMainFrame * pframe = (CMainFrame *)GetParentFrame();
if(pframe==NULL)
return;
CView3 *pview = (CView3 *)pframe->m_wndSplitter2.GetPane(1,0);
编译可以通过但是在最后一句总是出错,不知道为什么。

解决方案 »

  1.   

    不知道是不是我没有说清楚我的程序是一个sdi,分为三个窗口我想在其中一个视图调用另一个视图中的函数可是在最后一句
    得不到对应视图的指针总是报错。
      

  2.   

    CMainFrame *pframe = (CMainFrame *)AfxGetApp()- >m_pMainWnd; 
    CMainFrame * pframe = (CMainFrame *)GetParentFrame(); 
    这里为什么会有两个啊,有一个就可以了
    而且下面那个有必要转化吗,本来m_wndSplitter2.GetPane(1,0)就是Cview3啊,
    如果你使用同一个文档的话,用文档类通讯就可以了啊
      

  3.   

    真不好意思,是发错了
    应该是
    if(!m_wndSplitter1.CreateStatic(this,1,2))
    return false;
    if(!m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CLeftView),CSize(300,0),pContext))
    return false;
    if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,m_wndSplitter1.IdFromRowCol(0,1)))
    return false;
    if(!m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CClientView),CSize(0,150),pContext)||
        !m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CView3),CSize(0,0),pContext))
    return false;
    /////////////////////////////////
    CMainFrame *pframe = (CMainFrame *)AfxGetApp()- >m_pMainWnd; 
    if(pframe==NULL) 
    return; 
    CView3 *pview = (CView3 *)pframe- >m_wndSplitter2.GetPane(1,0); 
    现在的问题是我点击运行
    他弹出一个对话框说“建立空文档失败”,不明白我并没有建立文档啊?
    请高手不吝赐教,谢谢!!!
      

  4.   

    弹出消息框的原因是在
    if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD ¦WS_VISIBLE,m_wndSplitter1.IdFromRowCol(0,1))) 
    没有加!号。
    但是仍然不能得到CView3的指针,另外那个
    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
    、。。
    CMainFrame *pframe = (CMainFrame *)AfxGetApp()-  >m_pMainWnd;  
    CMainFrame * pframe = (CMainFrame *)GetParentFrame();  
    这里为什么会有两个啊,有一个就可以了 
    而且下面那个有必要转化吗,本来m_wndSplitter2.GetPane(1,0)就是Cview3啊, 
    如果你使用同一个文档的话,用文档类通讯就可以了啊
    他的返回值是cwnd*所以就加了(CView3*);