我想将视图在对话框上显示,用MFC生成了基于对话框的程序,然后生成一个继承CView的类test,将其构造函数与析构函数该为public类型,在对话框类中用两种方法,一种正确,一种错误。错误:在对话框中加入一个CPicture控件IDC_STATIC,在对话框类中声明变量
      test m_view;然后在对话框类中的OnInitDialog()函数中使用下述语句:CRect rect;
CWnd *pWnd =GetDlgItem(IDC_STATIC);
pWnd->GetWindowRect (&rect);
ScreenToClient(&rect);
m_test.reate(NULL,NULL,AFX_WS_DEFAULT_VIEW,
             rect,this,AFX_IDW_PANE_FIRST,NULL);
在关闭对话框时出错!!
正确:在对话框中加入一个CPicture控件IDC_STATIC,在对话框类中声明变量
      test *m_view;然后在对话框类中的OnInitDialog()函数中使用下述语句:
CRect rect;
CWnd *pWnd =GetDlgItem(IDC_STATIC);
pWnd->GetWindowRect (&rect);
ScreenToClient(&rect);
m_test = new test;
m_test->Create (NULL,NULL,AFX_WS_DEFAULT_VIEW,
                rect,this,AFX_IDW_PANE_FIRST,NULL);
重载OnDestroy()函数,加入代码delete m_test;
在关闭对话框时正确!!请问为什么?急,急!!

解决方案 »

  1.   

    在重载CView的OnNcDestory,不要调delete this;
      

  2.   

    错误的原因为m_test未初始化.
    "m_test = new test;"
      

  3.   

    另:
    "正确:在对话框中加入一个CPicture控件IDC_STATIC,在对话框类中声明变量
          test *m_view;然后在对话框类中的OnInitDialog()函数中使用下述语句:"
    中test *m_view; 应为 test *m_test;才对呀.
      

  4.   

    我想你理解错了吧,指针的使用是正确的,而非指针才发生了错误,即第一段有误,第二段正确。而且OnDestroy()是指对话框的OnDestroy()而不是视图的。我想是我表达不明吧!
      

  5.   

    告诉我你的Email,把代码发给你。