还用Doc类的Serialize(CArchive& ar)吗?谢谢

解决方案 »

  1.   

    void CDrawDoc::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    // TODO: add storing code here
    }
    else
    {
    // TODO: add loading code here
    }
    m_LineList.Serialize(ar);
    m_EllipseList.Serialize(ar);
    m_RectangleList.Serialize(ar);
    }
    ******************************************************
    void CEllipse::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    ar << (WORD)m_nPenWidth;
    ar << (DWORD)m_nPenColor;
            m_EllpointArray.Serialize(ar);

    // TODO: add storing code here
    }
    else
    {
    // TODO: add loading code here
    WORD w;
    DWORD y;
    ar >> w; //从文件中读取数据类型和CObjects 
    m_nPenWidth = w;
    ar >> y;
    m_nPenColor = y;
         m_EllpointArray.Serialize(ar);
    }
    }
    **********************************************************************
    void CLine::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    ar << (WORD)m_nPenWidth;
    ar << (DWORD)m_nPenColor;
            m_pointArray.Serialize(ar);

    // TODO: add storing code here
    }
    else
    {
    // TODO: add loading code here
    WORD w;
    DWORD y;
    ar >> w; //从文件中读取数据类型和CObjects 
    m_nPenWidth = w;
    ar >> y;
    m_nPenColor = y;
         m_pointArray.Serialize(ar);
    }
    }
    ***********************************************************
    void CRectangle::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    ar << (WORD)m_nPenWidth;
    ar << (DWORD)m_nPenColor;
            m_RectpointArray.Serialize(ar);

    // TODO: add storing code here
    }
    else
    {
    // TODO: add loading code here
    WORD w;
    DWORD y;
    ar >> w; //从文件中读取数据类型和CObjects 
    m_nPenWidth = w;
    ar >> y;
    m_nPenColor = y;
         m_RectpointArray.Serialize(ar);
    }
    }
      

  2.   

    上面是我做的一个画图程序。
    可以看的出来,第一段是一个固定格式。m_LineList.Serialize(ar);m_EllipseList.Serialize(ar);
    m_RectangleList.Serialize(ar);3句是我自己加的。
    下面的是我自己定义的每个类中存储的每一个图形的信息。m_nPenWidth是UINT类型的变量。m_nPenColor是DWORD(COLORREF)类型。
      

  3.   

    error C2248: 'Serialize' : cannot access public member declared in class 'CObject'
            f:\tool\microsoft visual studio\vc98\mfc\include\afx.h(704) : see declaration of 'Serialize'
    这是什么错误,是不是能够serialize的必须继承自CObject类?
      

  4.   

    如果在自己定义的类中使用serialize函数,必需在头文件中加入声名DECLARE_SERIAL(类名)
    同时在CPP文件中加入IMPLEMENT_SERIAL(类名, CObject, 1)
    具体细节看MSDN