MFC里有一个全局的对象,好像是用GetApp什么函数获取的,取得的是一个类,可以通过这个传递指针或数据什么的

解决方案 »

  1.   

    通过主框架窗口中转AfxGetMainWnd()
      

  2.   

    通过主框架窗口中转AfxGetMainWnd()
      

  3.   

    在app的头文件里面声明m_pleftView;m_prightViewCRightView()
    {
       theApp.m_prightView = this;
    }
    CLeftView()
    {
      theApp.m_plrftView = this;
    }
      

  4.   

    CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();
    CLeftView *pLeftView = (CLeftView *)pMain->m_spliter.GetPane(0,0);
    CRighView *pRightView = (CRighView *)pMain->m_spliter.GetPane(0,1);
    后面就可以直接用pLeftView和pRightView访问各自视图中的数据,同样可以向各自视图发送自定义消息。
      

  5.   


    //Info.h
     enum {comBegin,comData,comEnd};
     class CInfo::CObject
     {
     int len;
     BYTE data[1024];
     };//LeftView.h
     class CLeftView{
     CInfo info;  
     ....
     };
    //LeftView.cpp
    ...
    void CLeftView::OnTimer( UINT nIDEvent ){
     CDocument *pDoc=GetDocument();
     
     //start 
     //pDoc->UpdateAllViews(this,comBegin,0);
     //SendData
         pDoc->UpdateAllViews(this,comData,&info);
     //end 
     //pDoc->UpdateAllViews(this,comEnd,0);
     }
    //RightView.cpp
     void CRightView::OnUpdate( CView* pSender, LPARAM lHint, CObject* pHint );
     {
     if(pSender !=this && pSender!=NULL){
     switch(lHint){
     case comBegin:             
     / *PreClearView */
     break;
     case  comData:{   
     
     CInfo  *pInfo=pHint;
     ......         
       } 
     break;
     case  comEnd:
     {     ....        }
     break;
     }
     Invalidate();
     } 
    }
      

  6.   

    UpdateAllViews
    OnUpdate
    这两个函数,就是用来在同一个文档的,不同视图之间通讯的,这个是MFC专门做的,就是做这个用的。1)刷新所有视图,无特殊化。
    这个一般在文档的,某个函数里使用,如序列化函数,当数据改变时,刷新所有视图
    UpdateAllViews(NULL,...);2)刷新本视图以外的其他所有视图
     CDocument *pDoc=GetDocument();
     pDoc->UpdateAllViews(this,);
    第一个参数,视图类的指针,第二个参数,整数,一般指示动作类型,或者传入整数参数。
    第三个参数,一个CObject 指针,表示传入的要刷新的资料。
    函数原型如下:
         
    void UpdateAllViews(CView* pSender, LPARAM lHint = 0L, 
                                CObject* pHint = NULL);
    virtual void OnUpdate( CView* pSender, LPARAM lHint, CObject* pHint );
      

  7.   

    目测LZ使用窗口分割累了吧?用5楼的做法吧,绝对靠谱。
    总结一句话就是:在CLeftView中获取CRightView视图的窗口指针,然后用SendMessage()给CRightView发消息,在CRightView类中添加消息响应函数,处理之。