我试过GetParent比如:CView.h
...
CMydialog  mdlg;
...CMydialog.cpp
...
myfunc()
{
  CWnd* pwnd = GetParent();
  ... 
}
我发现无法通过该pwnd指针取得CView里面的变量。我想要从该dialog里面取得view里面的数据应该怎样做?

解决方案 »

  1.   

    可以取得,只是要做一下类型转换。
    CTest* pView = (CTest*)GetParent();
      

  2.   

    这样做有一个问题。
    在dialog里面需要包含view类的头文件,
    xxmodlessdlg.h
    ...
    #include "Testview.h"
    ...xxmodlessdlg.cpp
    void Cxxmodlessdlg::myfunc
    {
      CTestview* pView = (CTestview*)GetParent();
    }如果象以上的做法将无法通过编译,只要包含#include "Testview.h"就会出现三个编译错误,其错误提示内容主要是无法认识document类,及其相关的GetDocument()函数。应该怎样解决?
      

  3.   

    #include "TestDoc.h"
    放到TestView.h文件中。
      

  4.   

    这样做虽然通过了编译可是为什么无法取得view里面的成员的正确的数值?
    我要取得的view成员是随着CEdit控件的输入而动态的刷新的。
      

  5.   

    既然取得了CView的指针,应该就会取得成员变量,是不是CEdit控件没有UpdateData(FALSE)?
    你可以先取一下CView的静态成员变量,看看CView的指针是否正确。
      

  6.   

    应该如何测试CView的指针是否正确?
    静态变量是无法宣言成为类的public变量吧.
      

  7.   

    pView = (CView *)AfxGetActiveView();
    或者先得到框架的指针,由此得视的指针
      

  8.   

    AfxGetActiveView();有问题吧,好像没有这个函数。
      

  9.   

    comment: nineclock successed!!
    thank you very much!answer from nicelock :
    CMainFrame *pFrame=(CMainFrame*)(AfxGetApp()->GetMainWnd());  
    CTestView *pView=(CTestView*)pFrame->GetActiveView(); 
    Great!!!