是这样的,我建立了一个单文档多视图的程序,是用tab控件来切换视图,而切换的视图是新添加的视图类,因为是用文档类画图,我如何在这个视图类里得到该程序的文档类?
我在我的新视图类的OnDraw()函数里调用GetDocument()函数,想得到文档类的指针。虽然编译通过,但是一执行对文档类成员变量赋值时就出错。我调了一天,实在无语了,要是哪位高手能热心帮我调调,万分感谢!

解决方案 »

  1.   

    CView::GetDocument  Call this function to get a pointer to the view's document. CDocument* GetDocument( ) const;
     
      

  2.   

    新视图类的GetDocument()函数直接用好像是不行,参照原来的View类改造GetDocument()函数,debug和release一个是inline,一个不是。你先试试吧,好像这样改了就可以了,不行再问。
      

  3.   

    对了,我还忘说了一句,我的新视图类动态生成的。
    我是参照原来的View类添加了inline函数。
    inline CXXXViewDoc* COpenFileView::GetDocument()
       { return (CXXXViewDoc*)m_pDocument; }
    并且添加了GetDocument()函数
    CXXXViewDoc* COpenFileView::GetDocument() // non-debug version is inline
    {
            ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CXXXViewDoc)));
    return (CXXXViewDoc*)m_pDocument;
    }然后我在新的视图类中OnDraw()函数里调用GetDocument()函数,也根本不行
      

  4.   

    有没有这句?
    CDocument* GetDocument( ) const;
      

  5.   

    不好意思,你说的这句“CDocument* GetDocument( ) const;”是在哪添加?我不是很明白
      

  6.   

    新View实例化后马上把自己的指针给Doc加上,用AddView()试试。按理这个不关GetDocument的事儿。
      

  7.   

    在动态生成新的视图时需要加入文档的的实便,这样才能用上GetDocument()函数。
      

  8.   

    你在新添加的视图类的对象时,要先AddView()把视图加到文档里面去~~以后调用GetDocument才有效