CMessage::CMessage()
{
image = 6;
type = 0;
secret = FALSE;
color = RGB(0,136,255);
m_bClose = FALSE;
from = to = m_strText = _T("");
}
CMessage::~CMessage()
{
}
void CMessage::Serialize(CArchive &ar)
{
if (ar.IsStoring()){
ar << type;
ar << (WORD)m_bClose;
ar << m_strText;
ar << (WORD)secret;
ar << from;
ar << to;
ar << (DWORD)color;
ar << image;
}
else{
WORD wd;
DWORD dwTmp;
ar >> type;
ar >> wd;
m_bClose = (BOOL)wd;
ar >> m_strText;
ar >> wd;
secret = (BOOL)wd;
ar >> from;
ar >> to;
ar >> dwTmp;
color = (COLORREF)dwTmp;
ar >> image;
}
}
void CMessage::Reset()
{
image = 6;
type = 0;
secret = FALSE;
color = RGB(0,136,255);
m_bClose = FALSE;
from = to = m_strText = _T("");
}
这是<<Visual C++ 网络高级编程>> 第三单的一个程序的消息类文件。他继承CObject ,也没有用DECLARE_SERIAL 宏。可程序就运行得好好的。
三种宏是一种递增级别的关系。就是一个比一个支持的功能更多。如下表:
Macros Used for Serialization and Run-Time Information
Macro used CObject::IsKindOf CRuntimeClass::CreateObject CArchive::operator>>
Basic CObject functionality No No No
DECLARE_DYNAMIC Yes No No
DECLARE_DYNCREATE Yes Yes No
DECLARE_SERIAL Yes Yes Yes