BUG: Cannot Serialize Items After CRichEditDoc::Serialize (138632)



The information in this article applies to:

  • Microsoft Visual C++, 32-bit Enterprise Edition 5.0
  • Microsoft Visual C++, 32-bit Enterprise Edition 6.0
  • Microsoft Visual C++, 32-bit Professional Edition 5.0
  • Microsoft Visual C++, 32-bit Professional Edition 6.0
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ .NET (2002)

This article was previously published under Q138632
NOTE: Microsoft Visual C++ NET (2002) supported both the managed code model that is provided by the .NET Framework and the unmanaged native Windows code model. The information in this article applies to unmanaged Visual C++ code only.

SYMPTOMS

An attempt to load a CRichEditDoc causes the following message to appear:
Unexpected file format.
This happens when you attempt to serialize data to the archive after serializing the CRichEditDoc.

CAUSE

CRichEditDoc::Serialize() relies on the rich edit control's support for saving data. The assumption made by MFC is that the serialization of a rich edit control will encapsulate an entire file. The serialization code for loading from the CArchive starts from the current file position and reads to the end of the file.

An attempt to load anything after loading the CRichEditDoc fails because the file pointer is at the end of the file.

RESOLUTION

If you need to store additional data in the archive, serialize it before serializing the CRichEditDoc. Ensure that the CRichEditDoc is serialized last. For example:
void CMyRichEditDoc::Serialize(CArchive& ar)
{
  if (ar.IsStoring())
  {
   ar << m_str1;
  }
  else
  {
    ar >> m_str1;
  }

  // Calling the base class CRichEditDoc enables serialization
  // of the container document's COleClientItem objects.
  CRichEditDoc::Serialize(ar);

  // Do not use CArchive after calling CRichEditDoc::Serialize.
}
				

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. Microsoft is researching this problem and will post more information in this article when the information becomes available.

Modification Type:MajorLast Reviewed:6/24/2003
Keywords:kbBug kbcode kbDocView KB138632 kbAudDeveloper