MFC文档的串行化
来源:互联网 发布:同花顺收费软件 编辑:程序博客网 时间:2024/05/16 20:59
参考:孙鑫C++视频第十三讲
一、建立一个串行化类的五个步骤(参考MSDN:CObject::Serilize)
1、建立一个可串行化类,可串行化类都是从CObject继承而来
2、重载Serialize成员函数
3、在类声明中使用DECLARE_SERIAL宏
4、定义一个没有参数的构造函数
5、在实现文件中使用IMPLEMENT_SERIAL宏
二、CArchive类
CArchive类用来建立一个持久的disk storage.
void CGraphicDoc::Serialize(CArchive& ar){POSITION pos = GetFirstViewPosition() ;CGraphicView *pView = (CGraphicView *)GetNextView(pos) ;if (ar.IsStoring())//往文件中写{// TODO: 在此添加存储代码/*UINT i = 10 ;TCHAR ch = 'a' ;CString str(TEXT("my string")) ;ar<<i<<ch<<str ;*//*UINT count = pView->m_obArray.GetCount() ;ar<<count ;for(int i = 0 ; i < count ; ++ i){ar<<pView->m_obArray.GetAt(i) ;}*/}else//从文件中读{// TODO: 在此添加加载代码/*UINT i ;TCHAR ch ;CString str ;CString strFormat ;ar>>i>>ch>>str ;strFormat.Format(TEXT("%d %c %s") , i , ch , str) ;AfxMessageBox(strFormat) ;*//*UINT count ;ar>>count ;CGraph *pGraph ;for(int i = 0 ; i < count ; ++ i){ar>>pGraph ;pView->m_obArray.Add(pGraph) ;}*/}m_obArray.Serialize(ar) ;//M_obArray的Serialize成员是基类的}三、如何在一个类中访问另一个类的成员
1、在Doc类中访问View类中成员获取View类指针
POSITION pos = GetFirstViewPosition() ;CGraphicView *pView = (CGraphicView *)GetNextView(pos) ;
2、在View类中获取Doc类指针
CGraphicDoc* pDoc = GetDocument();
四、删除分配的堆内存
释放分配的堆内存放在DeleteContents 虚函数中
void CGraphicDoc::DeleteContents(){// TODO: 在此添加专用代码和/或调用基类UINT count = m_obArray.GetSize() ;for(int i = 0 ; i < count ; ++ i){delete m_obArray.GetAt(i) ;}m_obArray.RemoveAll() ;CDocument::DeleteContents();}
0 0
- MFC文档的串行化
- MFC 文档串行化
- MFC文档的串行化与保存原理
- MFC笔记--单文档程序的串行化
- 文档的串行化
- 文档的串行化
- MFC的串行化编程
- MFC的串行化编程
- MFC 用串行化实现文档存储和读取功能
- 孙鑫MFC笔记之八--文档串行化
- MFC的串行序列化的实现
- mfc串行化中遇到的问题
- MFC 之支持串行化的类
- MFC-串行化
- MFC 串行化(Serialization)
- MFC串行化原理
- 文档串行化
- 文档串行化
- 编写你的第一个垃圾收集器
- python中2.x和3.x的区别
- 我是自由职业者。
- 我的git仓库,顺记github配置
- 回归了,继续写写博客
- MFC文档的串行化
- pongo(csdn英雄会)题解之最小操作数---leetcode之word ladder2
- asp.net mvc 2.0详细笔记__02__项目文件结构详解
- 《勇气》(courageous)—随感
- python用两种方法实现url短连接
- ubuntu opencv 的安装
- HDU 4511 小明系列故事——女友的考验(AC自动机 + DP)
- 遇到“ora-12514 tns 监听程序当前无法识别链接描述符中请求的服务”,解决办法
- Linux系统管理