MFC/C++学习系列之简单记录——序列化机制
MFC/C++学习系列之简单记录——序列化机制
- 前言
- 简述六大机制
- 序列化机制
- 使用
- 反序列化
- 总结
前言
MFC有六大机制,分别是程序启动机制、窗口创建机制、动态创建机制、运行时类信息机制、消息映射机制、序列化机制。
简述六大机制
程序启动机制:全局的应用程序类对象——>AfxWinMain主函数——>应用程序对象的指针——>调用程序对象的有关函数——>初始化和启动
窗口创建机制:加载菜单——>CWnd::CreateEx函数创建窗口——>PreCreateWindow函数设计和注册窗口类——>AfxHookWindowCreate函数——>创建WH_CBT类型的钩子(将框架类对象保存到全局变量当前程序线程信息)——>CreateWindowEx函数创建窗口——>消息处理函数为AfxWndProc(框架类对象与窗口句柄进行绑定)
动态创建机制:派生自CObject——>声明DECLARE_DYNAMIC(theclass)——>实现宏IMPLEMENT_DYNAMIC(theclass,baseClass)。
动态创建机制允许在运行时根据类信息的结构动态地创建对象
运行时类信息机制:运行时类信息机制(RTTI)允许在运行时获取类的信息,如类名、大小、版本等。
添加声明DECLARE_DYNAMIC(theclass)或DECLARE_DYNCREATE(theclass),类外必须添加实现宏IMPLEMENT_DYNAMIC(theclass,baseClass)或IMPLEMENT_DYNCREATE(theclass,baseClass)。通过CRuntimeClass* CObject::GetRuntimeClass() const获取静态变量的地址,使用IsKindOf()函数来查找是否是括号中类的派生类。
消息映射机制:MFC程序中的消息映射机制允许将Windows消息、控制通知消息和命令消息映射到对应的处理函数,可以理解为窗口控件和后台事件绑定。消息映射表——>查询该表判断是否需要响应某条消息。
序列化机制:序列化操作将类对象的数据部分按照一定的规则进行二进制摆放,
序列化机制
以二进制流形式读写硬盘文件。序列化去硬盘写数据,反序列化去硬盘读数据。
CFile类:文件操作类
CArchive类:归档类,有关于内存数据的读写操作。
使用
CFile file;
file.Open("xxx",CFile::modeCreate|CFile::modeWrite);
CArchive ar(&file,CArchive::store,4096);
float arr=86.5;
ar<<arr;//插入缓冲区
ar.Close();
file.Close();
这里就是将数据写入xxx文件内。也就是arr的86.5写入file这里的文件内。
反序列化
使用区别主要在设置中
CArchive ar(&file,CArchive::load,4096);
将store改成load,也就是加载。
总结
简单介绍了序列化代码的使用,将数据以序列化的形式写入文件!