本帖最后由 chuanxin8989 于 2012-09-11 10:29:07 编辑

解决方案 »

  1.   

    m_gra 是个管理类全局变量   
    m_PTary 用来存储每个独立的多位线的所有点
    m_ary  用来存储所有多位线  我打断点,显示m_PTary已经传入了点,右键后m_ary也有内容传入,
    但是怎么CPtrArray *tmp_ary = (CPtrArray*)(m_gra.m_ary.GetAt(i)); 就不行呢显示tmp_ary的size是0,根本没有值。
      
      

  2.   

    AddPoint(CPoint tmp_pt){ m_PTary.add( &tmp_pt ); }
    m_PTray里面存的都是形参的地址,对后面的程序来说,数据是无效的
    改为AddPoint(CPoint &tmp_pt)
      

  3.   


    你在AddGraph里,不是把数组清空了么?
      

  4.   


    清空的是m_PTary啊  ,用来存放点的,每次右键结束收集点不得清空为下次做准备么 。没清空总的数组m_ary啊
      

  5.   

    AddGraph() { m_ary.add( &m_PTary ); m_PTary.RemoveAll(); }你在m_ary里存的都是m_PTary的指针吧,然后,你又把这个m_PTary清空了。你后面读取的时候,当然是空的了。你应该在AddGraph()里,动态申请一个CPtrArray,然后,把m_PTay里的数据复制给申请的对象,将对象存入m_ary