我已經在MFC C++中構建了一個繪圖應用程序。 所有序列化都適用於從「Shape」繼承的類。 (如橢圓,圓形,矩形)。 這是形狀的系列化FUNC:使用不同成員序列化繼承類MFC C++
void Shape::Serialize(CArchive& archive)
{
// call base class function first
// base class is CObject in this case
CObject::Serialize(archive);
// now do the stuff for our specific class
if (archive.IsStoring())
archive << start.x << start.y << end.x << end.y << innerColor << outerColor << thick << style;
else
archive >> start.x >> start.y >> end.x >> end.y >> innerColor >> outerColor >> thick >> style;
}
這是調用序列化功能:
void CPaintDlg::SaveScreen()
{
CFile file(L"FILE.$$", CFile::modeWrite | CFile::modeCreate);
CArchive ar(&file, CArchive::store);
Shapes.Serialize(ar);
}
,這就是反序列化所謂的地方:
void CPaintDlg::LoadScreen()
{
try
{
CFile file(L"FILE.$$", CFile::modeRead);
CArchive ar(&file, CArchive::load);
Shapes.Serialize(ar);
}
catch (...)
{
AfxMessageBox(_T("Some thing went wrong"));
}
InvalidateRect(&rect);
}
林控股一個CTypedPtrArray<CObArray
,形狀*>其中調用形狀和即時調用從該數組的每個索引中繪製func。 我有另一個類叫做FreedDraw
,它派生自Shape,它有一個Shape不存在的成員,它叫做Points。 (包含屏幕上所有可用繪圖點的向量)。
在每堂課我已經聲明DECLARE_SERIAL(FreeDraw)
和cpp文件IMPLEMENT_SERIAL(FreeDraw, Shape, 1)
我不知道如何序列化和反序列化這個載體,如何與我的存在序列化功能合併。
請顯示更多代碼。 –
增加了更多代碼 – Benny67b
[序列化在MFC](https://msdn.microsoft.com/en-us/library/6bz744w8.aspx)是強制性的閱讀。確保你理解[TN002:Persistent Object Data Format](https://msdn.microsoft.com/en-us/library/32wxt301.aspx)。 – IInspectable