我创建了一个单文档工程,并将其分割成左右两个视图类,先要在右边视图类调用左边视图类的一个变量,具体该怎么调用啊??为什么我直接在CRightView 中这样写不行:CLeftView pview;
                                      view.xxxxx;
提示错误说什么CLeftView protected??(头文件定义了)还有为什么这样也不行??CLeftView *pView=GetLeftPane();
                     pView->m_bAuoMenuEnable=FALSE;提示说GetLeftPane没定义,改怎样才能调用啊???谢谢!!!!

解决方案 »

  1.   

    用CSplitterWnd::GetPane函数
    例如:
    你创建左右视图时用到的m_splitter对象,如下就可以获得左视图指针:
    CLeftView *pView=(CLeftView *)m_splitter.GetPane(0,0);如何找到这个m_splitter对象呢?应该先找到主框架指针,如pf
    CMainFrame* pf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
    不出意外的话,你是在主框架中创建的左右视图,那么,就可以用
    pf->m_splitter来访问这个CSplitterWnd对象了。
      

  2.   

    也可以这样:
    //得到文档指针
    CMainFrame* pf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
    CMyDoc* pdoc=(CMyDoc*)pf->GetActiveDocument();//再从文档取得视图指针
    POSITION pos = pdoc->GetFirstViewPosition();
    if (pos != NULL)
       {
            m_pLeftView = (CLeftPanel*)pdoc->GetNextView(pos);
    m_pRightView = (CRightPanel*)pdoc->GetNextView(pos);
           
       }