FMD开发文集 -- MFC CObject浅析
2010-03-28 20:34:52 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹

五.DYNCREATE支持
类的实例动态生成支持
方法:
添加声明:DECLARE_DYNCREATE( class_name )
添加实现:IMPLEMENT_DYNCREATE( class_name, base_class_name )
原码分析:
DECLARE_DYNCREATE( class_name )#define DECLARE_DYNCREATE(class_name)
IMPLEMENT_DYNCREATE(class_name, base_class_name):
//具有DYNAMIC支持
DECLARE_DYNAMIC(class_name)
//对象建立支持
static CObject* PASCAL CreateObject();#define IMPLEMENT_DYNCREATE(class_name, base_class_name)
六.SERIAL支持
//动态建立对象
CObject* PASCAL class_name::CreateObject()
{ return new class_name; }
//填写运行时类信息,与DYNAMIC不同的是,有pfnNew参数
IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF,
class_name::CreateObject)
将对象储存,以及读取建立对象支持
方法:
添加声明:DECLARE_SERIAL( class_name )
添加实现:IMPLEMENT_SERIAL( class_name, base_class_name, wSchema )
原码分析
DECLARE_SERIAL( class_name ):#define DECLARE_SERIAL(class_name)
IMPLEMENT_SERIAL(class_name, base_class_name, wSchema):
//动态生成支持
_DECLARE_DYNCREATE(class_name)
//文档操作符
AFX_API friend CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb);#define IMPLEMENT_SERIAL(class_name, base_class_name, wSchema)
在派生类中重载virtual void Serialize(CArchive& ar);以实现类数据的保存及建立后读入。 从而实现类的保存,及读入动态建立。
//动态生成支持
CObject* PASCAL class_name::CreateObject()
{ return new class_name; }
//填写运行时类信息,包括版本号,生成函数指针
_IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema,
class_name::CreateObject)
AFX_CLASSINIT _init_##class_name(RUNTIME_CLASS(class_name));
//文档支持实现
CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb)
{ pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name));
return ar; }
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››开发移动 Web Ajax 应用
- ››开发者眼中的iPhone与Android
- ››开发者或想使用的10个Android2.2新特性
更多精彩
赞助商链接