孙鑫MFC笔记之八--文档串行化
CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);
CArchive ar(&file,CArchive::store);
int i=4;
char ch='a';
float f=1.3f;
CString str("http://www.sunxin.org");
ar<<i<<ch<<f<<str;以上是保存,打开略
OnNewDocument在程序启动时被调用,此时可设置文档标题(settitle),也可以在String Table的IDR_MAINFRAME的第二个"\"后改变文档的标题。
每当新建一个文档,都会产生一个视类对象,框架类对象,文档类对象,三位一体,为文档服务。
当点击系统的打开和新建菜单时,有一系列的步骤,孙鑫老师给我们跟踪了代码的调用过程,此段跟踪我们略过。但我们要牢记住:CWinAPP负责管理文档管理器,文档管理器有一个指针链表,且来保存文档模板的指针,文档模板指针管理三个类DOC,VIEW,MAINFRAME,使其为某文件对象服务。
3.利用CArchive来保存一个类的对象,此类必须支持串行化,该类可串行化需要5个步骤。
a.让类从CObject派生;
b.覆盖Serialize()函数,在其中完成保存和读取功能;
c.在类申明的.h中加入 DECLARE_SERIAL(CGraph);参数为想成为可串行化的类类名
d.定义一个不带参数的构造函数。
a.在CGraph中增加一个画图的成员函数,其实不增加也行。可以在View中完成相应功能。
b.增加四个画图菜单,菜单可以从11课的代码中拷贝。
c.在View中增加LButtonDown和UP的响应,在UP中画图,在DOWN中保存点
d.利用CObArray集合类来保存绘画数据
e.在CGraphicDOC::Serialize()中保存和读取数据
f.然后在OnDraw中重绘。
4.新建和打开文档时,要注意销毁原来的数据。在DOC的DeleteContents虚函数中是好时机。代码如下
int nCount;
nCount=m_obArray.GetSize();
/*for(int i=0;i<nCount;i++)
{
delete m_obArray.GetAt(i);//释放指针指向的内存空间
//m_obArray.RemoveAt(i);//移除链表中的元素。嘿嘿,别搞错了。但在此处不能这样用,会导致非法操作。要用下面的方法沙
}
m_obArray.RemoveAll();*/
while(nCount--)
{
delete m_obArray.GetAt(nCount);
m_obArray.RemoveAt(nCount);
}
孙鑫MFC笔记之八--文档串行化相关推荐
- 孙鑫MFC笔记(15)--多线程和聊天室的创建
孙鑫MFC笔记(15)--多线程和聊天室的创建 代码1分析: 说明:对于单核cpu的电脑来说,线程都在自己的时间片中运行,单位时间内,系统只能运行一个线程,交替运行:对于多核cpu或多cpu的电脑来说 ...
- MFC 文件I/O和串行化
1.枚举所有文件夹(递归) void EnumerateFolders () {WIN32_FIND_DATA fd;HANDLE hFind = ::FindFirstFile (_T (" ...
- 孙鑫MFC笔记之十六--Active控件
基本概念: 容器和服务器程序 容器应用程序时可以嵌入或链接对象的应用程序.Word 就是容器应用程序.服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序.Excel 就是服务器应用程序. ...
- 孙鑫-MFC笔记九--菜单编程
弹出菜单(Pop-up)是不能用来作命令响应的.即下拉等形式. 响应菜单响应命令的顺序是:视类,文档类,框架类,应用程序类. Windows消息分三类: 标准消息,WM_ (除WM_COMMAND)都 ...
- 孙鑫-MFC笔记二--MFC框架剖析
MFC,Microsoft Foundation Class,微软基础类库,是微软为了简化程序员的开发工作所开发的一套C++类集合,是一套面向对象的函数库,以类的方式提供给用户使用. 实际上,MFC同 ...
- 孙鑫MFC笔记之十五--进程间通信
方法: n剪贴板 n匿名管道 n命名管道 n邮槽 1.剪贴板 a.创建个ClipBoard的对话框应用程序,加两EditBox和两个Button发送接收. b.具体代码: 发送端代码: ...
- 孙鑫-MFC笔记一--Windows程序内部运行机制
对于一个初学者来说,常常会用到各种库函数,例如printf等等,这些库函数是由你所使用的编译器厂商提供的,在Windows操作系统下,开发的应用程序, 也有这样的库函数,不同的是,这样的库函数,是有w ...
- 孙鑫-MFC笔记七--文件与注册表
c 语言对文件的操作是通过 FILE 结构体来完成的 1 定义一个文件结构体的指针,获取文件结构体指针并付给 如何打开一个文件 FILE *fopen(const char*file ...
- 孙鑫-MFC笔记四--文本编程
1,创建插入符: void CreateSolidCaret( int nWidth, int nHeight );//创建插入符 void CreateCaret( CBitmap* pBitmap ...
最新文章
- Python代码注释
- 3.浏览器输入www.baidu.com到显示主页的全过程
- 怎样查看已经记住密码的网站的密码
- oAuth2.0 登录新浪微博 发送新浪微博 代码
- leetcode 66 Plus One
- iOS - Masonry自动布局
- C语言char对应的码,char码值对应列表大全
- html列自动变高,HTML 应用 多列浮动等高处理
- 办公必备的WPS Office 2021 for mac(wps 2021中文版)
- VC 2014 QQ连连看外挂辅助(讲解,附带下载) CE QQ连连看基址
- 【随笔】Java团长
- python 使用QPixmap显示图片扭曲、错位问题的解决
- [转]申瓯 JSY2000-06 程控电话交换机呼叫转移设置
- 微信自定义菜单与网页授权结合
- 服务器显示屏出现白屏,远程服务器时出现白屏怎么解决
- RocketMQ的Quorum Write和自动降级
- UAF 身份认证框架
- 分享微软手机无管理服务器,Win10 Mobile手机再体验:没有微信的生态算什么生态?...
- 量化投资入门指南:风险模型和交易成本模型
- 爬虫_西电研究生教务系统_技术文档
热门文章
- Android usb audio录音(四)
- 【Android架构GPS篇】之定位数据如何从GPS芯片到应用层
- Educoder Matplotlib和Seaborn 三维图 第一关绘制三维图
- markdown字体颜色_Markdown转微信公众号格式
- 自己动手Centos7搭建wordpress网站步骤(LNMP+wordpress)
- c++堆内存默认大小_Java 自动内存管理
- 陀螺仪数据转换成角度_请教怎么把用陀螺仪积分得到的角度转换到大地坐标系下?...
- python ssh登录交换机_python使用paramiko模块通过ssh2协议对交换机进行配置的方法...
- python 服务监控_promethues + python + flask监控后端服务状态
- vc 2008建立c语言,C语言纯外行,要运行别人给的一个代码,用VC2008