我在CMyApp类的一个采单响应事件中有下面这段代码:(其中NewFrame和NewView是自定义的子框架类和视图类) 
         NewFrame *pFrm;
pFrm = new NewFrame; 
CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(NewView);
pFrm->LoadFrame(IDR_MYTYPE,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,NULL,&context);
pFrm->InitialUpdateFrame(NULL,TRUE);

CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
NewView *pView=(NewView*)(pFrame->GetActiveView());最后一句是取自定义的那个view类的指针,但是取到的是空指针,难道没有Active View?如果有的话怎么取?

解决方案 »

  1.   

    CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
    明显取的不是你刚刚创建的FRAMEVIEW还没创建出来呢,当然取不到。方法不对,建议说出你的目的。
      

  2.   

    我的目的是这样的:打开文件的时候就弹出自定义的框架和视图,同时,视图生成后马上显示文件中的数据,因此我想获得视图的指针,用这个指针来传递文件中的数据(如:pView->Load(FilePath)),然后调用OnDraw()就可以显示了。请问我该怎样做才对,非常感谢!
      

  3.   

    //你使用的可能是MDI吧?可以使用如下的方法CMainFrame* pMainFrame = dynamic_cast<CMainFrame*>(::AfxGetMainWnd());
    if (pMainFrame != NULL)
    {
    CXXView* pIFView = dynamic_cast<CXXView*>(pMainFrame->GetActiveChildView());
    }////////
    CView* CMainFrame::GetActiveChildView()
    {
    CXXChildFrame* pIFChildFrame = dynamic_cast<CXXChildFrame*>(MDIGetActive());
    if (pIFChildFrame != NULL)
    return pIFChildFrame->GetActiveView(); return NULL;
    }
    //////////
    对于MDI来说你的View是可以通过ChildFrame获得的