CMemFile cm;
CArchive ar(&cm, CArchive::store);
CString str;
m_SendEdit.GetWindowText(str);
CMyData mydate(str,18,75);
//序列化对象
ar.WriteObject(&mydate);
//数据从CArchive对象写到CMemFile对象。
ar.Close();
//获取数据内容及长度
ULONGLONG length=cm.GetLength();
BYTE *Dsend = cm.Detach();
//发送数据
pClient->Send(Dsend,length);
//释放由CMemFile对象分配的内存。
free(Dsend);
MyData * abc = (MyData *)wp;
CMyData * mydata = NULL;
CMemFile mf(const_cast<BYTE *>(abc->pData), abc->iLength);
CArchive ar(&mf, CArchive::load);
mydata = dynamic_cast<CMyData *>(ar.ReadObject(RUNTIME_CLASS(CMyData)));
ar.Close();
//删除由CArchive产生的动态对象CMyData
delete mydata;
class CMyData : public CObject
{
DECLARE_SERIAL(CMyData)
CString name;
int age;
int weight;
public:
CMyData();
CMyData(CString name, int age, int weight)
{
this->name = name;
this->age = age;
this->weight = weight;
}
virtual ~CMyData();
virtual void Serialize(CArchive& ar);
};
CMyData::CMyData()
{
}
CMyData::~CMyData()
{
}
void CMyData::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if (ar.IsStoring())
{ // storing code
ar << name << age << weight;
}
else
{ // loading code
ar >> name >> age >> weight;
}
}
IMPLEMENT_SERIAL(CMyData, CObject, 1)