我做一个小程序,sdi,视图分为两部分,左半部分为CTreeView,里有一树,
自己创建了几个继承自CObject的类,用来保存树各子项的值,改写了CMyDocument的serialize函数,就是简单的调用了自己创建类的serialize,(自己创建类的serialize也只是简单的serialize了几个数值),
这样一来,保存没有问题,
可是,当我新建,或是打开已存文件时,程序就会出错,忽略以后,程序继续运行,左边本来应该有一个树的,
但,情况是在以前操作的树下面有多了一个一模一样的树,只不过,上面的树的各项值是以前设置的,下面的树的各项值,是读取文件的怎么回事儿呢?  (顺便解释一下file|Open,file|New引起的一些列操作把)我没有该ID_FILE_NEW,ID_FILE_OPEN对应的函数,我的树是在CTreeView的OnintialUpdate中创建的.

解决方案 »

  1.   

    是不是跟DeleteContents(),有关系呢,
    是的话,怎么重载呢?
      

  2.   

    DeleteContents()清空文档内容啊。
      

  3.   

    sdi的NEW不会再建立一个新的VIEW,所以VIEW还是原来的还VIEW的OnInitialUpdate 还会调用,如果你在这里有Create或者做一些一次性的事要注意DELETE原来的
      

  4.   

    具体应该怎么做呢,
    比如说吧,
    我在oninitialupdate中,就创建了一个树,
    怎么保证,新建文当时,该树不会出现两个呢?
      

  5.   

    这不是serialize问题,是你的程序写的有问题!
      

  6.   

    remove all items/columns during DeleteContents
      

  7.   

    在视图中OnInitialUpdate中加入GetTreeCtrl()->DeleteAllItems();每次创建新的文档时,删除旧视图中的东西