DECLARE_DYNAMIC,DECLARE_DYNCREATE,DECLARE_SERIALP 这三个宏到道要在什么时候需要?

lemon_wei 2004-08-03 03:45:16
DECLARE_DYNAMIC,DECLARE_DYNCREATE,DECLARE_SERIALP 这三个宏到道要在什么时候需要?越看越看不明白了。
...全文
103 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
快乐鹦鹉 2004-08-06
CObject provides basic services, including

Serialization support


Run-time class information


Object diagnostic output


Compatibility with collection classes
回复
lemon_wei 2004-08-06
up
回复
lemon_wei 2004-08-05
up
回复
lemon_wei 2004-08-04
up
回复
bm1408 2004-08-03
CObject

本身己有SERIZIE功能了!
回复
lemon_wei 2004-08-03

// Message.h: interface for the CMessage class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MESSAGE_H__A0DEE46E_8D70_4E1D_B26A_A7CA33DCFE07__INCLUDED_)
#define AFX_MESSAGE_H__A0DEE46E_8D70_4E1D_B26A_A7CA33DCFE07__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CMessage : public CObject
{
public:
void Serialize(CArchive& ar);
CMessage();
virtual ~CMessage();
public:
void Reset();
CString m_strText;
CString from;
CString to;

COLORREF color;
BOOL secret;
BOOL m_bClose;
int type;
WORD image;
};

#endif // !defined(AFX_MESSAGE_H__A0DEE46E_8D70_4E1D_B26A_A7CA33DCFE07__INCLUDED_)

--------------------------------------------

// Message.cpp: implementation of the CMessage class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ChatSrvr.h"
#include "Message.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

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 宏。可程序就运行得好好的。
回复
snakewu 2004-08-03
怎麽可能,MFC的核心六大机制里面都有。
回复
lemon_wei 2004-08-03
深入浅出MFC,我看了。今天看了别人写的一个类,里面用到了文件序列化,应该说要加DECLARE_SERIALP 这个宏吧。可他这三个一个也没有,也运行的好好的。因此我就有点不明白了。
回复
快乐鹦鹉 2004-08-03
三种宏是一种递增级别的关系。就是一个比一个支持的功能更多。如下表:
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
回复
snakewu 2004-08-03
建议去看後俊杰先生的“深入浅出MFC“,是对MFC原理的详细分析,你需要的东西里面说的很详细哦。
回复
aspnetwuxueyou 2004-08-03
动态创建和序列化的时候用
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-03 03:45
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……