在DOC类中声明
CTypedPtrArray< CObArray, CPlin* >m_PlinArray;
在VIEW类中
通过pDoc ->AddPlin ( PushNumb, PointXyz )加入CPlin*到m_PlinArray数组中,在OnDraw( CDC* pDC )中int liCount = pDoc ->GetPlinCount ();可以得到加入到数组中的对象数目,并且可以重画。但是
当我在另外一个类中通过CCADShxDoc m_CADShxDoc;  m_CADShxDoc->AddPlin ( PushNumb, PointXyz )加入
CPlin*到m_PlinArray数组中,在DOC类中可以看到数组的数目,到VIEW类中就为0了,请问是什么原因?如何解决
谢谢

解决方案 »

  1.   

    在Doc类中调用UpdateAllViews通知VIEW类数据已经变化即可达到你的要求即
    CCADShxDoc *m_CADShxDoc;  m_CADShxDoc->AddPlin ( PushNumb, PointXyz )
    m_CADShxDoc->UpdateAllViews();
      

  2.   

    声明全局变量
    CCADShxView *p_View;
    在View类中重载虚函数OnActiveateView,对p_View指针进行初始化,以保证p_View指针时刻指向当前激活的视图对象p_View = this;
    在m_CADShxDoc->AddPlin ( PushNumb, PointXyz )后加入
    m_CADShxDoc ->UpdateAllViews( p_View );
    情况没有任何变化
      

  3.   

    你为什么要通过全局变来来访问呢?
    一个文档类可以对应多个视类,你用一个全局变量行吗?m_CADShxDoc ->UpdateAllViews( p_View );
    =>m_CADShxDoc ->UpdateAllViews( NULL);还有,你的m_CADShxDoc 是什么,是正在使用的文档类吗?
    是不是又是哪个全局变量,你的文档/视结构还不清楚.在这种编程中,尽量使用GetDocument() GetActiveView()等来相互应用,不要应用变量传递
      

  4.   

    我现在是在另外一个(非DOC,VIEW)类中,调用DOC类中的AddPlin ( PushNumb, PointXyz ),向DOC类中的m_PlinArray数组添加指针对象,你认为我应该如何做?如果将我另外的那个类加入到VIEW类中,view类的文件将会很长很长
      

  5.   

    它是我在另外一个类中声明的普通的DOC类的对象
      

  6.   

    我解决了,主要是在对另外一个类的对象的m_CADShxDoc进行初始化就可以了,
    如下:m_AFile.m_CADShxDoc = GetDocument();就可以了,谢谢各位