首先感谢LendyZhang(Lendy), kongyunzhongque(云雀) 给我解决了多文档下不同视图具有不同关闭按钮功能的问题!现在我想再请教一下:假如我的视图类有二种,其中一种视图是画线,一种视图是画圆,现在我现时打开了多个不同类的视图,当我选择了其中的一个视图,我该如何判断当前选择的的活动视图是属于哪类视图并得到其指针,再绘制相应的图形呢?

解决方案 »

  1.   

    CTheView* CContainApp::GetTheView()
    {
      POSITION p1 = GetFirstDocTemplatePosition();
      while(p1 != NULL)
      { 
        CMultiDocTemplate* pTemplate = (CMultiDocTemplate*)GetNextDocTemplate(p1);    
        POSITION p2 = pTemplate->GetFirstDocPosition();  
        while(p2 != NULL)
        {
          CDocument *pActiveDoc = (CDocument*)pTemplate->GetNextDoc(p2);        
          POSITION pos = pActiveDoc->GetFirstViewPosition();
          while (pos)
          {
            CView* pView = pActiveDoc->GetNextView(pos);
            if(pView->IsKindOf(RUNTIME_CLASS(CTheView)))
            {
              CTheView *pTheView = (CTheView*)pView;
              return   *pTheView 
            }
          }    
        }                 
      }
      return NULL;
    }
      

  2.   

    得到当前视图指针,
    CView * pView =AfxGetMainWnd()->GetActiveView();
    判断所属视图类:
    BOOL bFlag =pView->IsKindOf( RUNTIME_CLASS( CMyView ));
      

  3.   

    // 取得主窗口指针
    CMDIFrameWnd* pMainFrame = (CMDIFrameWnd*)AfxGetMainWnd();// 取得当前子窗口指针
    CMDIChildWnd* pFrame     = (CMDIChildWnd*)pMainFrame->GetActiveFrame();// 取得当前视图指针
    CView*        pView      = pFrame->GetActiveView();// 判断视图类别
    if ( pView->IsKindOf( RUNTIME_CLASS(CLineView) ) )
    {
        ....
    }
    else
    {
        ....
    }