情况是这样的:
一个单文档程序。
我现在在view 中画了一条直线,一个圆和一个椭圆。然后我点击了保存按钮,文件的确是保存起来了,但是那个文件里面什么都没有是空的,我知道我应该要重写虚函数 CDocument::OnSaveDocument() 函数,但是我想知道,用CClientDC 画的这些图,应该怎么保存这些数据到这个文件中呢,做到下次再打开这个文件的时候就跟保存的时候一样。MFCOnSaveDocument

解决方案 »

  1.   

    http://archive.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=vcsamplesmfc&DownloadId=9770
      

  2.   

    我想问,不管什么类型的数据,我是应该把它放到APP 里面还是DOC里面,是不是要在里面添加数据成员,在内存中暂时存放这些数据?
      

  3.   

    呵呵 vs2008 感觉比较老了,5年期的东西
    ========
    其实你要存储读取自定义的东西,没必要去重写OnSaveDocument
    因为mfc已经为你做好框架了
    你只要去改写 Doc的serialize函数就可以
    下面摘自那个例子void CScribbleDoc::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    ar << m_sizeDoc;
    }
    else
    {
    ar >> m_sizeDoc;
    }
    m_strokeList.Serialize(ar);

    }
      

  4.   


    真心没看懂啊,Serialize() 函数没见过,它的那个参数也不见过。解释下吧!
      

  5.   

    那个是vs的例子,从vc 6的时候就有了,你最好找一下对应你的版本的例子,运行一下就清楚因为东西太多,一两句讲不清楚。
      

  6.   

    新问题出现了:
    我把画的那些图的数据保存到DOC 类(添加了几个成员变量:容器)中,保存的时候存了这些数据,打开的时候取出这些数据让view 去重新绘制。
    我保存了数据,也读出了数据,我怎么在view 里面去使用这些数据重新绘制原来的图形呢?有些什么函数啊?
      

  7.   

    嗯,我明白!
    之前我是没找到重新绘制这些图的地方应该在哪里,现在我找到了,我在View 中找到了一个OnDraw() 函数,在里面添加了绘制这些图形的代码。之后我最小化再找开也行了,它的功能应该是出现什么情况之后会调用它(我估计的)。就好像不断刷新一样!
      

  8.   

    一般都摒弃原有的序列化格式,自己定义个输出格式,用CStdioFile来输出
      

  9.   

    你这个是要做串行化和序列化是吧
    直接看深入浅出MFC,别在这问浪费时间了
    把侯捷那个例子默出来你什么都懂了