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,也就是加载。
总结
简单介绍了序列化代码的使用,将数据以序列化的形式写入文件!
相关文章:
MFC/C++学习系列之简单记录——序列化机制
MFC/C学习系列之简单记录——序列化机制 前言简述六大机制序列化机制使用反序列化总结 前言 MFC有六大机制,分别是程序启动机制、窗口创建机制、动态创建机制、运行时类信息机制、消息映射机制、序列化机制。 简述六大机制 程序启动机制:全局的应用程序…...
二十、服务发布Ingress
Ingress Kubernetes使用了一个Ingress策略定义和一个具体提供转发服务的Ingress Controller,两者结合,实现了基于灵活Ingress策略定义的服务路由功能。如果是对Kubernetes集群外部的客户端提供服务,那么IngressController实现的是类似于边缘路由器(Edge Router)的功能。需…...
计算机网络 八股青春版
什么是HTTP?HTTP和HTTPS的区别 HTTP HTTP是超文本运输协议,是一种无状态(每次请求都是独立的)的应用层协议。用于在客户端和服务器之间传输超文本数据(如HTML文件)。默认端口是80数据以明文形式传输&#…...
java全栈day18--Web后端实战(java操作数据库2)
前言:在上节入门程序当中我们见到了JDBC所提供的API,本节来详细说明一下。 一、JDBC--API详解 1.1DriverManager(驱动管理器) 回顾:作用获取连接,调用它里面的getConnection。即如下 作用 1.注册驱动解…...
electron-vite【实战】自定义标题栏【组件封装】(含异形标题栏,指定区域拖拽,窗口置顶,窗口最小化,窗口最大化,取消最大化,隐藏窗口到托盘等)
效果预览 技术要点 透明背景 src/main/index.ts 的 new BrowserWindow 中添加 transparent: true, // 设置窗口背景透明frame: false, // 隐藏窗口边框仅图标和标题部分可拖拽 仅图标和标题部分添加样式 drag .drag {-webkit-app-region: drag; }图标与标题栏的融合 标题栏的…...
vue2 项目webpack 4升5
项目背景 公司项目需要将进行微前端改造.主应用和子应用会需要共享依赖,考虑使用模块联邦进行依赖共享. 由于模块联邦要升级到webpack 5才能用,所以老项目要从webpack 4升级到webpack 5 实现思路 原来的项目用的是vue-cli 3,查了一下可以vue-cli 5用的就是webpack 5,所以可以…...
前端开发性能监控中的数据采集与性能调优方法
🌟 前端开发性能监控中的数据采集与性能调优方法 📖 前言 在现代 Web 应用中,性能是用户体验的关键因素之一。性能问题不仅会影响用户满意度,还可能导致业务损失。如何高效地监控前端性能并进行性能调优,成为每个开发…...
S32K324 Stack异常分析及解决方案
文章目录 前言正向排查尝试反向排查问题原因分析问题解决处理总结前言 在项目开发过程中,在一次软件变更时,调整了task优先级之后导致应用层软件中的float数据经常性的变为NAN,导致应用层功能失效。本文记录下这个bug的分析及解决过程。 正向排查尝试 由于问题复现的概率…...
[创业之路-202]:任正非管理华为的思想与毛泽东管理党、军队、国家的思想的相似性与差异性
目录 一、相似性 1、指导思想 2、管理策略 3、危机意识与自我否定 4、理想主义与奋斗精神 二、差异性 1、哲学基础与思想倾向 2、管理方法与策略 3、组织文化与价值观 一、相似性 任正非管理华为的思想与毛泽东管理党、军队、国家的思想在多个方面存在相似性。 以下…...
SAP PP ECN CSAP_MAT_BOM_MAINTAIN
刚开始的时候ECN总是加不上, 参考kimi给出的案例 点击链接查看和 Kimi 智能助手的对话 https://kimi.moonshot.cn/share/cth1ipmqvl7f04qkggdg 效果 加上了 FUNCTION ZPBOM_PLM2SAP. *"------------------------------------------------------------------…...
html中实用标签dl dt dd(有些小众的标签 但是很好用)
背景描述 html <dl> <dt> <dd>是一组合标签,他们与ol li、ul li标签很相似 但是他却是没有默认前缀并且有缩进的标签 使用方式与table表格的标签一致 使用方式 dt和dd是放于dl标签内,dt与dd处于dl下相同级。就是dt不能放入dd内&am…...
ONES 功能上新|ONES Copilot、ONES Wiki 新功能一览
ONES Copilot 可基于工作项的标题、描述、属性信息,对工作项产生的动态和评论生成总结。 针对不同类型的工作项,总结输出的内容有对应的侧重点。 应用场景: 在一些流程步骤复杂、上下游参与成员角色丰富的场景中,工作项动态往往会…...
实现Python将csv数据导入到Neo4j
目录 一、获取数据集 1.1 获取数据集 1.2 以“记事本”方式打开文件 1.3 另存为“UTF-8”格式文件 1.4 选择“是” 二、 打开Neo4j并运行 2.1 创建新的Neo4j数据库 2.2 分别设置数据库名和密码 编辑 2.3 启动Neo4j数据库 2.4 打开Neo4j数据库 2.5 运行查看该数据库…...
QML Rectangle组件
文章目录 前言主体**简单的矩形****渐变的矩形****带边框的矩形****圆角矩形****圆形 & 圆环** 总结 前言 在 QML 中,Rectangle 是一个常见且非常实用的元素,它允许开发者轻松创建矩形形状的图形。通过调整 Rectangle 的多种属性,我们不…...
uniapp开发app,cover-view不能隐藏,使用v-if,v-show都不行的解决办法
先上解决方案 在最后多写一个v-else <cover-view class"point-info" v-if"selectedPoint"><cover-view class"info-content"><cover-view class"info-item">。。。</cover-view><cover-view class"i…...
用adb命令给APP做压力测试,有什么不同?
压力测试 app做压力测试目的是模拟用户在使用软件时随意向软件发出指令,例如操作app的点击,滑动,返回等一系列随机事件,来检测app的承受能力 第一步:手机安装包需要待测的app 第二步:输入adb start-ser…...
netcore 集成Prometheus
一、安装包 <ItemGroup><PackageReference Include"prometheus-net" Version"8.2.1" /><PackageReference Include"prometheus-net.AspNetCore" Version"8.2.1" /> </ItemGroup> 二、添加代码 #region Pro…...
同城外卖系统源码扩展指南:搭建海外外卖APP平台详解
本篇文章,笔者将探讨如何基于同城外卖系统源码,搭建适合不同国家的海外外卖APP平台,涵盖多语言支持、支付接口对接、本地化适配等方面的实践经验和技术要点。 一、确定目标市场与用户需求 在开发海外外卖APP平台之前,首先需要深…...
JavaScript 中常见内置对象的知识点及示例总结
一、String(字符串)对象 知识点: 用于处理文本数据,它有许多内置的属性和方法来操作字符串,比如获取字符串长度、提取子字符串、替换字符等。字符串在 JavaScript 中是不可变的,即一旦创建,就不…...
CSSmodule的作用是什么
CSS Modules的作用主要体现在以下几个方面: 1. 解决全局样式污染问题 在传统的CSS管理方式中,样式定义通常是全局的,这很容易导致全局样式污染。当多个组件或页面共享同一个样式时,可能会出现样式冲突和覆盖的情况,从…...
振弦采集模块设计:从传感器选型到数字信号处理的完整指南
1. 振弦采集读数模块:从物理振动到数字信号的完整旅程在工程测量、结构健康监测以及乐器数字化等领域,我们常常需要精确地捕捉一根弦或类似结构的振动信息。比如,监测桥梁拉索的张力变化、分析古筝琴弦的声学特性,或者检测工业设备…...
seo优化具体需要做什么?老站长每天必做的4件日常工作
早上8点15分,启动电脑,打开百度统计与Google Search Console后台。接手一个上线刚满两周的新域名,查看昨日的独立访客(UV)和页面浏览量(PV)数字。B2B机械设备类的展示型网站,前30天的自然搜索点击量极少数能突破100次。每天只发企…...
# 040、实战项目五:多 Agent 协作系统 —— 项目经理、开发者、测试者角色模拟
从一次凌晨三点的事故说起 去年做智能客服系统重构,我犯了个低级错误——让单个Agent既写代码又自测。结果上线当天,它把“用户退款”的SQL写成了DELETE FROM orders WHERE status‘refund’,还自信满满地标注“测试通过”。凌晨三点被运维电…...
ChatGPT对技术从业者的影响:机遇与挑战
在人工智能技术飞速发展的当下,ChatGPT这类大语言模型的横空出世,无疑在科技领域投下了一颗重磅炸弹。对于软件测试从业者而言,这既是一场前所未有的机遇,也是一次严峻的挑战。它不仅重塑了测试工作的模式与效率,更对从…...
保姆级教程:手把手教你搞定OpenPnP主次基准点矫正(附PCB制作与避坑心得)
OpenPnP主次基准点矫正实战指南:从硬件准备到精准调试 1. 准备工作:构建稳定的校准环境 在开始OpenPnP主次基准点矫正之前,充分的准备工作能避免80%的常见问题。首先需要理解基准点在贴片机坐标系中的核心作用——它们如同地图上的经纬度&…...
别再死循环了!手把手教你用Python实现D*算法(附完整代码与避坑指南)
从理论到实践:Python实现D*算法的工程化指南与避坑策略 路径规划中的动态适应挑战 在机器人导航和游戏AI开发中,路径规划算法扮演着至关重要的角色。传统算法如A*和Dijkstra虽然能有效解决静态环境下的路径规划问题,但在动态变化的环境中却显…...
UE5动画进阶:用Control Rig的Aim节点,5分钟搞定角色头部平滑跟随任意Actor
UE5动画进阶:Control Rig的Aim节点实现角色头部动态跟随 在游戏开发中,角色与环境的动态交互是提升沉浸感的关键要素之一。想象一个场景:NPC能够自然地跟随玩家的移动而转动头部,或是怪物精准锁定目标时的头部动作——这些细节往往…...
Claude Code 上下文管理机制深度拆解:超长 Agent 任务如何不崩盘
在一个真正复杂的企业级软件设计与编码任务里,Coding Agent 面对的从来不是一句简单的“帮我写个小游戏”。 它要理解用户的原始需求,要读取项目里的既有代码,要遵守架构约束、编码规范、接口协议,还要调用各种工具、加载不同的技能和规则,甚至记住用户十分钟前随口补充的…...
BBDown实用指南:高效下载B站视频的完整解决方案
BBDown实用指南:高效下载B站视频的完整解决方案 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown BBDown是一个功能强大的命令行式哔哩哔哩视频下载器,专为技术爱…...
3分钟掌握OBS智能跟拍:告别手动调焦的直播神器
3分钟掌握OBS智能跟拍:告别手动调焦的直播神器 【免费下载链接】obs-face-tracker Face tracking plugin for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-face-tracker 您是否曾因直播时频繁调整镜头位置而分心?是否希望有一个…...
