我这样编的(其中CSuperWordView继承于CRichEditView):
CWnd* pWnd=AfxGetMainWnd();
ASSERT_VALID(pWnd);
CView* pView=static_cast<CFrameWnd*>(pWnd)->GetActiveFrame()
          ->GetActiveView();
CSuperWordView* pView =(CSuperWordView*) pView; 但是ASSERT_VALID(pWnd)在调试过程中通不过。好像pWnd为NULL,如下:
void AFXAPI AfxAssertValidObject(const CObject* pOb,
    LPCSTR lpszFileName, int nLine)
{
    if (pOb == NULL)//就是这个了,pwnd为NULL,为什么了?这些代码我看不太懂???
    {
        TRACE0("ASSERT_VALID fails with NULL pointer.\n");
        if (AfxAssertFailedLine(lpszFileName, nLine))
            AfxDebugBreak();//调试时指向这里
        return;     // quick escape
    }
      
因为我想在在别的对象(ToolBar,dialog。。)中访问活动View中的函数.

解决方案 »

  1.   

    应该不会啊,我原来也做过你用AfxGetApp()->m_pMainWnd试试关注
      

  2.   

    CView* pView=(CView*)(AfxGetApp()->m_pMainWnd->GetActiveFrame()
              ->GetActiveView());
    如果用一句话不行,分开写
    CMainFrame *pFrame = 
                 (CMainFrame*)AfxGetApp()->m_pMainWnd;
    CHildFrame *pChild = 
                 (CHildFrame*)pFrame->GetActiveFrame();
    CView *pView = (CView*)pFrame->GetActiveView();
      

  3.   

    多文档视窗是Doc/View结构的,必须现找到文档模板才能找到对应的view。由于多文档可以对应多种视,一文档还可以对应多个视图。因此如果你的程序种的文档模板只有一个就方便得多,下列代码可以实现找到你的视。如果你的程序有多个文档模板,则需要每个模板进行寻找。
      CDocTemplate* pTemplate;
      POSITION pos,docpos,viewpos;
      CDocument* pDoc=NULL;
      CView *pView;  pos=AfxGetApp()->GetFirstDocTemplatePosition();
      pTemplate=AfxGetApp()->GetNextDocTemplate(pos);
      docpos=pTemplate->GetFirstDocPosition(); //找到第一个文档模板
      while(docpos)
      {
      pDoc=pTemplate->GetNextDoc(docpos);
    viewpos=pDoc->GetFirstViewPosition();
    while(viewpos!=NULL)
    {
           pView=pDoc->GetNextView(viewpos);
       if(pView->IsKindOf(RUNTIME_CLASS(CMServerView)))
                 //CMServerView是我的视图类
      {
    CMServerView *cv1;
             cv1=(CMServerView *)pView;
             .....
       }
    }    
      }
      

  4.   

    xjtt2000(沧海一笑) 讲的对,
    用CMainFrame *pFrame =(CMainFrame*)AfxGetApp()->m_pMainWnd; 
    运行执行时出错(窗口不存在):ASSERT(::Iswindow(m_hwnd));
    不过还有个问题,如何确认找到的View是不是活动VIEW了??(小弟为vc初学者,还有很多不知道)