可以考虑在View中你需要显示粒子和电场的哪些数据,然后把这些必要数据写成结构体放在CDocument中。然后在处理中定时更新这个结构体中的数据。重绘时就只要访问该结构体就行了。
至于粒子和网格,最好写成单独的类,你可以在CDocument或任意地方中开一个数组或链表存放他们的类实例。

解决方案 »

  1.   

    我觉得你应该再建立一个新类,如CCompute;把粒子类与网格类作为它的两个数据成员。
    这样你把计算,显示方面的东西写入这个类中,当然要提供给它关于文件操作方面的函数。
    把它作为一个文档类的数据成员比较好。为了以后的扩展,你可以在粒子类与网格类中将其中的公用函数(即你认为别人会用到或者你在程序中用到的函数声明为virtual函数)。这样的话你在CCompute类中把粒子类与网格类作为一个指针变量,当然其类名为你所定义的类名。别人扩展时,可以从你的类中派生,而不用修改其它部分.
      

  2.   

    不好意思,我再问一下:
    如果在CMyDocument中存放粒子或网格实例,这样可不可以:
    class CParticle;
    class CGrid;
    class CMyDocument:public CDocument
    {
    ...
    public:
    CParticle** ppar;
    CGrid** pgrid;
    如果行,那ppar和pgrid需要初始化吗?...
      

  3.   

    衷心感谢大家的帮助,虽然大家给我解答问题不是为了分数,但我也只有再加三十分作为我唯一能表达谢意的方式。
    to gamepolice:
    "把它作为一个”是不是说把CCompute作为文档类的数据成员。
    另外,我已经把消息处理函数加在了视类中,但一执行就提示非法操作。我在这个函数中用到了指向文档类,粒子类,网格类对象的指针,具体在CMyview.h中这样定义的:class CParticle;
    class CGrid;
    class CMyView:public CView
    {
    ...
    public:
    CParticle** ppar;
    CGrid** pgrid;
    CMyDoc* pdoc;
      

  4.   

    我同意In355Hz(好象一条狗)的建意,可以使用CPtrList或CObject之类链表或其派生储存对象,进行管理。
      

  5.   

    为什么要用CParticle** ppar?为什么要用指针的指针?
    我一直觉得指针不太容易管理,何况指针的指针?
     
      

  6.   

    我用指针的指针是想在函数中这样用它:ppar[i]->func(),请问,如果这样不好,还有啥好方法吗
      

  7.   

    调试一下,注意那几个指针的指针。用CPtrList或CObList来管理指针。
    估计就是指针使用上的错误。
      

  8.   

    我在用这几个指针地方加了try和catch,提示fatal error C1001: INTERNAL COMPILER ERROR。另外,我想用单步调试,设置后每次执行go,看到的只是一大堆汇编码呀。