【上位机——MFC】文档
相关类
CDocument提供了一个用于管理数据的类,封装了关于数据的管理(数据提取、数据转换、数据存储等),并和视图类进行数据交互。
文档类使用
定义一个自己的文档类,派生自CDocument
程序的创建过程
1.利用框架类对象地址pFrame调用LoadFrame函数,创建框架窗口
2.在处理框架窗口的WM_CREATE消息时,动态创建视图类对象,并创建视图窗口
3.在处理视图窗口的WM_CREATE消息时,将文档类对象和视图类对象建立关联关系。
文档类对象用一个链接成员变量,保存视图类对象地址
视图类对象用一个普通成员变量,保存文档类对象地址
一个文档类对象可以对应多个视图类对象,而一个视图类对象只能对应一个文档类对象。
窗口切分
相关类
CSplitterWnd-不规则框架窗口类,封装了关于不规则框架窗口的操作。
窗口切分的使用
- 重写CFrameWnd类的成员虚函数OnCreateClient
- 在虚函数中调用CSplitterWnd::CreateStatic创建不规则框架窗口
- 在虚函数中调用CSplitterWnd::CreateView创建视图窗口
文档类和视图类的关系
视图类成员函数
获取和视图类对象关联的文档类对象,调用GetDocument()
文档类成员函数
当文档类数据发生变化时,调用UpDataAllViews刷新和文档类对象相关联的视图类对象(视图窗口)。
代码示例
#include <afxwin.h>
#include <afxext.h>
#include "resource.h"class CMyDoc : public CDocument {DECLARE_MESSAGE_MAP()public:afx_msg void OnNew();CString str;};BEGIN_MESSAGE_MAP(CMyDoc, CDocument)ON_COMMAND(ID_NEW, &CMyDoc::OnNew)
END_MESSAGE_MAP()void CMyDoc::OnNew()
{str = "Hello World"; // 接收到的数据//this->UpdateAllViews(NULL); // 刷新和这个文档类对象关联的所有视图窗口//this->m_viewList;POSITION pos = this->GetFirstViewPosition();//拿到m_viewList链表的迭代器CView* pView = this->GetNextView(pos); //得到第一个节点 再调一遍this->GetNextView(pos); 获取第二个节点this->UpdateAllViews(pView); // 刷新除了pView 这个视图窗口之外的其他视图窗口}class CMyView : public CView {DECLARE_DYNCREATE(CMyView) // 动态创建机制 声明DECLARE_MESSAGE_MAP()
public :virtual void OnDraw(CDC* pDC);afx_msg int OnCreate(LPCREATESTRUCT pcs);
};
IMPLEMENT_DYNCREATE(CMyView, CView) // 动态创建机制 实现BEGIN_MESSAGE_MAP(CMyView, CView)//ON_WM_CREATE()
END_MESSAGE_MAP()int CMyView::OnCreate(LPCREATESTRUCT pcs) {return CMyView::OnCreate(pcs);
}void CMyView::OnDraw(CDC* pDC) {//获取与当前视图对象相关的文档类// 方式一//CMyDoc* pDoc = (CMyDoc*)this->m_pDocument;// 方式二CMyDoc* pDoc = (CMyDoc*)this->GetDocument();pDC->TextOut(100,100, pDoc->str);
}class CMyFrameWnd :public CFrameWnd {DECLARE_MESSAGE_MAP()
public:afx_msg int OnCreate(LPCREATESTRUCT pcs);virtual BOOL OnCreateClient(LPCREATESTRUCT pcs ,CCreateContext* pContext);public:CSplitterWnd split;};
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)ON_WM_CREATE()
END_MESSAGE_MAP()int CMyFrameWnd::OnCreate(LPCREATESTRUCT pcs) {return CFrameWnd::OnCreate(pcs);// 动态创建视图类对象,并创建视图窗口
}//窗口切分
BOOL CMyFrameWnd::OnCreateClient(LPCREATESTRUCT pcs, CCreateContext* pContext) {//创建2个视图窗口 split.CreateStatic(this,1,2);split.CreateView(0,0,pContext->m_pNewViewClass,CSize(100,100),pContext);split.CreateView(0,1,pContext->m_pNewViewClass, CSize(100, 100), pContext);return true;
}class CMyWinApp :public CWinApp {
public:virtual BOOL InitInstance();
};BOOL CMyWinApp::InitInstance() {CMyFrameWnd* pFrame = new CMyFrameWnd;CMyDoc* pDoc = new CMyDoc;CCreateContext cc;cc.m_pNewViewClass = RUNTIME_CLASS(CMyView);// 拿到CMyView类的静态变量&CMyView::classCMyViewcc.m_pCurrentDoc = pDoc;//创建了框架窗口pFrame->LoadFrame(IDR_MENU1,WS_OVERLAPPEDWINDOW,NULL,&cc);m_pMainWnd = pFrame;pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();return TRUE;
}CMyWinApp theApp;
相关文章:
【上位机——MFC】文档
相关类 CDocument提供了一个用于管理数据的类,封装了关于数据的管理(数据提取、数据转换、数据存储等),并和视图类进行数据交互。 文档类使用 定义一个自己的文档类,派生自CDocument 程序的创建过程 1.利用框架类对象地址pFrame调用Load…...
JavaEE-多线程实战02
接上 多线程编程实战01 第三个多线程程序 package thread.test;//定义了一个叫MyThread3的类,实现了Runable接口,所以它必须重写run()方法 class MyThread3 implements Runnable {Overridepublic void run() {//线程执行的具体内容//进入一个无限循环,…...
计算机网络 | 应用层(6) -- 套接字编程
💓个人主页:mooridy 💓专栏地址:《计算机网络:自顶向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 💓本博客内容为《计算机网络:自顶向下方法》第二章应用层第七节知识梳理 关注我…...
基于大模型的急性肠套叠全流程预测与诊疗方案研究报告
目录 一、引言 1.1 研究背景与目的 1.2 研究意义与创新点 二、急性肠套叠概述 2.1 定义与分类 2.2 病因与发病机制 2.3 流行病学特征 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 用于急性肠套叠预测的可行性分析 四、术前风险…...
游戏遭遇DDoS攻击如何快速止损?实战防御策略与应急响应指南
是不是很抽象 我自己画的 一、游戏DDoS攻击特征深度解析 游戏行业DDoS攻击呈现复合型特征,2023年监测数据显示,针对游戏服务器的攻击中,63%采用UDP反射放大HTTP慢速攻击组合,攻击峰值达3.2Tbps。攻击者利用游戏协议特性ÿ…...
Linux电源管理(2)_常规的电源管理的基本概念和软件架构
原文: Linux电源管理(2)_Generic PM之基本概念和软件架构 1. 前言 Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些…...
回文链表力扣234
思路: 对于这个题同样的找出题目的要求 1.判断回文 那么我们思考一下判断回文的方法,对于字符串我们只需要翻转一下就行,但是这不是通用的方法,在思考一下,我们是不是可以用双指针,一个在前一个在后,向中…...
互联网的下一代脉搏:深入理解 QUIC 协议
互联网的下一代脉搏:深入理解 QUIC 协议 互联网是现代社会的基石,而数据在其中高效、安全地传输是其运转的关键。长期以来,传输层的 TCP(传输控制协议)一直是互联网的主力军。然而,随着互联网应用场景的日…...
榕壹云国际版短剧系统:基于Spring Boot+MySQL+UniApp的全球短剧创作平台
一、项目背景与简介 在短视频行业高速发展的今天,短剧内容已成为全球用户娱乐消费的新宠。为满足市场对高质量、多样化短剧的需求,我们基于Spring Boot + MySQL + UniApp技术栈开发了榕壹云国际版短剧系统,这是一款面向全球市场的短剧创作与分发平台。系统不仅提供丰富的基…...
为什么选择 Spring Boot? 它是如何简化单个微服务的创建、配置和部署的?
为什么选择 Spring Boot? Spring Boot 的核心目标就是简化 Spring 应用的初始搭建以及开发过程。它并不是要取代 Spring Framework,而是构建在其之上,通过一系列“约定优于配置”的原则和自动化手段,让开发者能够更快的创建出独立…...
方向倒数、梯度和梯度下降的对比关系
一、方向导数与梯度的定义 方向导数 方向导数描述多元函数在某点沿特定方向的变化率。对于函数f(x,y),在点(x0,y0)沿单位向量u(u1,u2)的方向导数定义为: 其物理意义是函数值沿该方向的瞬时变化速率,正负表示增减趋势,…...
全星APQP软件系统:驱动芯片半导体行业研发管理迈向高效与合规新高度
全星APQP软件系统:驱动芯片半导体行业研发管理迈向高效与合规新高度 在芯片半导体行业,一款芯片的研发周期长达数年,涉及设计验证、工艺开发、良率爬坡、量产交付等数百个关键节点,任何一个环节的偏差都可能导致数千万美元的损失…...
文章记单词 | 第50篇(六级)
一,单词释义 fun:英 [fʌn] 美 [fʌn],名词,意为 “享乐;乐趣;快乐;嬉戏;有趣的事;玩笑;逗乐”;形容词,意为 “逗乐的;有…...
RISC-V MCU定时器架构与低功耗设计
RISC-V核低功耗MCU在定时器架构和功耗控制方面具有以下特点: 定时器配置 高级控制定时器:支持互补PWM输出和刹车功能,适合电机控制等场景 通用定时器:提供输入捕获、输出比较和单脉冲模式等基础功能 系统定时器:内置6…...
redis_Windows中安装redis
①Windows安装包下载地址:https://github.com/tporadowski/redis/releases 当前最新版本截图 ②根据自己系统平台的实际情况选择对应的安装包,如:64位win10系统可选择Redis-x64-5.0.14.msi ③下载完成后运行安装,没有特殊要求的话…...
Spring中生成Bean的方式总结-笔记
1. 概略版 Spring生成Bean方式有如下几种,可根据需求选择合适的方式,通常优先使用注解驱动的声明式配置(如Component、Bean),复杂场景结合条件或作用域控制。 方式特点适用场景Component 组件扫描简单直观ÿ…...
学习insightface 的人脸识别
1.Insightface_pytorch版本的自定义数据准备过程 https://github.com/artintel/LearningCode/blob/master/insightface_pytorch_datasets_make/README.md https://github.com/artintel/LearningCode/tree/master/insightface_pytorch_datasets_make 2.mxnet_insightface开源…...
【MQ篇】RabbitMQ之消费失败重试!
目录 引言:消息不丢是底线,失败了优雅重试是修养!消费失败了,为啥不能老是原地复活?🤔智能重试策略一:本地重试(Spring Retry 的魔法)🏠✨智能重试策略二&…...
权力结构下的人才价值重构:从 “工具论” 到 “存在论” 的转变
引言 在现在的公司管理里,常常能听到这样一种说法:“我用你,你才是人才;不用你,你啥都不是。” 这其实反映了一种很常见的评判人才价值的标准,就是只看公司的需求,把人才当作实现公司目标的工…...
【上位机——MFC】视图
相关类 CView及其子类,父类为CWnd类,封装了关于视图窗口的各种操作,以及和文档类的数据交互。 视图窗口的使用 1.定义一个自己的视图类(CMyView),派生自CView,并重写父类成员纯虚函数OnDraw。 2.其余框架类和应用程…...
Unity:Sprite Shapes(精灵形状)
游戏世界的基本构建单位——精灵(Sprite) Sprite(精灵)是什么? Sprite指的是一张小图片,在游戏里代表一个角色、道具、背景元素。 在2D游戏里,比如滑雪游戏,角色、小树、雪地……很…...
火语言RPA--钉钉群通知
【组件功能】:向钉钉群发送文本或markdown消息 在钉钉群创建自定义机器人(Webhook),在组件配置Webhook地址、密钥、文本内容即可向钉钉群发送文本或markdown消息,还可以at群成员或所有人。 配置预览 配置说明 Webho…...
详细图解 Path-SAM2: Transfer SAM2 for digital pathology semantic segmentation
✨ 背景动机 数字病理中的语义分割(semantic segmentation)是非常关键的,比如肿瘤检测、组织分类等。SAM(Segment Anything Model)推动了通用分割的发展,但在病理图像上表现一般。 病理图像(Pa…...
驯龙日记:用Pandas驾驭数据的野性
引言:为什么选择Pandas? "NumPy是手术刀,Pandas是急救箱" 手术刀(NumPy):精密的数值计算 急救箱(Pandas):处理现实数据的全套工具 维度NumPy数组Pandas Se…...
产品经理面经(1)
今天开一个新的栏目,是关于产品经理方面的。产品经理这个岗位每年的需求都是不少的,尤其是近年来AI的兴起造就了产品经理与AI方面深度融合从而催生了“AI产品经理”这种类型的岗位。具体数据如下 总体规模: 2020 年:受疫情影响&am…...
【黑马JavaWeb+AI知识梳理】前端Web基础02 - JS+Vue+Ajax
JS(行为/交互效果) JavaScript(JS)跨平台、面向对象,是用来控制网页行为,实现页面交互效果的脚本语言。 和Java完全不同,但基础语法类似。 组成: ECMAScript:规定了JS…...
Unity Post Processing 小记 【使用泛光实现灯光亮度效果】
一、前言 本篇适用于Unity 2018 - 2019及以上版本,以默认渲染管线为例。文章内容源于个人研究尝试与网络资料收集,可能存在不准确之处。初衷是因新版本制作时老的Bloom插件失效,经研究后分享开启Bloom效果的方法。若在项目中使用Post Proces…...
NFC 碰一碰发视频贴牌技术,音频功能的开发实践与技术解析
在数字化营销与信息交互场景中,NFC 碰一碰技术凭借其便捷性和高效性,成为快速传递多媒体内容的新选择。通过 NFC 实现视频音频的快速传输,不仅能提升用户体验,还能为各类场景带来创新应用。本文将深入探讨该功能开发过程中的关键技…...
新型“电力寄生虫“网络钓鱼攻击瞄准能源企业与知名品牌
本周发布的综合威胁报告显示,自2024年以来,一场名为"电力寄生虫"(Power Parasites)的复杂网络钓鱼活动持续针对全球能源巨头和知名品牌展开攻击。 该攻击活动主要通过精心设计的投资骗局和虚假招聘信息,冒用…...
如何将数据输入到神经网络中
引言 在前面的文章学习中,我们初步了解到神经网络在人工智能领域扮演着至关重要的角色,它具备实现真正人工智能的潜力。真正的人工智能意味着机器能够像人类一样进行感知、学习、推理和决策等复杂活动。而神经网络作为实现这一目标的关键技术,…...
【quantity】2 Unit 结构体(unit.rs)
一、源码 下面代码实现了一个基于类型级别的物理量单位系统,使用Rust的类型系统在编译期保证单位运算的正确性。 use typenum::{Integer, Sum, Diff, Z0, // 0P1, P2, P3, P4, // 1, 2, 3, 4N1, N2, N3 // -1, -2, -3 }; use std::marker::PhantomData; use st…...
OpenCV 图形API(66)图像结构分析和形状描述符------将一条直线拟合到三维点集上函数fitLine3D()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 拟合一条直线到3D点集。 该函数通过最小化 ∑iρ(ri) 来将一条直线拟合到3D点集,其中 ri 是第 i 个点与直线之间的距离,…...
uniapp: 低功耗蓝牙(BLE)的使用
在微信小程序中实现蓝牙对接蓝牙秤的重量功能,主要依赖微信小程序提供的低功耗蓝牙(BLE)API。以下是一个清晰的步骤指南,帮助你完成从连接蓝牙秤到获取重量数据的开发流程。需要注意的是,具体实现可能因蓝牙秤的协议和…...
谢飞机的Java面试之旅:从Spring Boot到Kubernetes的挑战
场景:互联网大厂Java求职 在一家知名互联网大厂的面试现场,严肃的面试官坐在谢飞机的对面,开始了面试。 第一轮:基础技术与平台 面试官: 谢先生,您能简单介绍一下Java SE 8的主要新特性吗? 谢飞机: 当然,Java 8引入了Lambda表达式、Stream API和新的日期时间API。 …...
Shadertoy着色器移植到Three.js经验总结
Shadertoy是一个流行的在线平台,用于创建和分享WebGL片段着色器。里面有很多令人惊叹的画面,甚至3D场景。本人也移植了几个ShaderToy上的着色器。本文将详细介绍移植过程中需要注意的关键点。 1. 基本结构差异 想要移植ShaderToy的shader到three.js&am…...
基于BenchmarkSQL的OceanBase数据库tpcc性能测试
基于BenchmarkSQL的OceanBase数据库tpcc性能测试 安装BenchmarkSQL及其依赖安装软件依赖编译BenchmarkSQLBenchmarkSQL props文件配置数据库和测试表配置BenchmarkSQL压测装载测试数据TPC-C压测(固定事务数量)TPC-C压测(固定时长)生成测试报告重复测试流程梳理安装Benchmar…...
Flutter 泛型 泛型方法 泛型类 泛型接口
目录 泛型简单使用 泛型类的简单使用 泛型接口的使用 通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验) 泛型简单使用 main(){print(getData2("XXX"));getData2<String>("XXX");getData2<int>(1);}Str…...
边缘函数:全栈开发的最后1毫秒性能革命
一、边缘计算的时空折叠术 1. 传统CDN vs. 智能边缘网络 全球电商平台实测数据: 场景云端处理延迟边缘处理延迟转化率提升搜索建议320ms8ms18%个性化推荐450ms12ms27%实时库存检查680ms9ms42%欺诈检测920ms15ms63% 二、边缘全栈架构的量子纠缠 1. 代码的时空分布…...
网店专用版批量转账系统,覆盖淘宝、拼多多、抖店订单信息自动核对+插旗自动备注,支持微信支付宝批量转账
不少电商人在运营过程中,需要用转账工具来解决日常运营过程中的返款问题。 但在实际操作过程中,往往有很多问题。东哥在这里梳理下,方便大家了解: 1.错返/漏返的情况时有发生 为什么会错返和漏返? 实际来看&#x…...
AUTOSAR_RS_ClassicPlatformDebugTraceProfile
AUTOSAR经典平台调试、跟踪与分析支持 AUTOSAR组件调试、跟踪与分析功能详解 目录 简介ARTI核心扩展 核心特定ARTI扩展结构核心参数定义 操作系统和任务扩展 OS特定ARTI扩展任务特定ARTI扩展软件组件特定扩展 总体架构 组件结构接口定义 错误处理 默认错误跟踪器(DET) 总结 1.…...
vue中将html2canvas转成的图片传递给后台 Python Flask 服务
下面将详细介绍如何在 Vue 项目里把 html2canvas 转换得到的图片传递给后台的 Python Flask 服务。 前端(Vue)步骤 1. 安装依赖 首先要确保已经安装了 html2canvas 和 axios,若未安装,可在终端执行以下命令: npm i…...
基于深度学习的智能交通流量监控与预测系统设计与实现
基于深度学习的智能交通流量监控与预测系统设计与实现 摘要 随着城市化进程的加速和机动车保有量的激增,交通拥堵、事故频发、环境污染等问题日益严峻,对传统的交通管理方式提出了巨大挑战。智能交通系统(ITS)作为解决这些问题的…...
鸿蒙系统应用开发全栈指南
一、开发环境搭建与工具链配置 1. DevEco Studio深度解析 作为鸿蒙生态的官方IDE,DevEco Studio 4.2版本已集成ArkTS 3.0编译器与AI代码助手功能。安装过程需注意: 系统要求:Windows 10 21H2或macOS Monterey以上环境依赖:Node…...
STC32裸机项目集成FreeRTOS的实战问题解析
目录 🍅点击这里查看所有博文 随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记…...
振弦式应变计在混凝土结构长期监测中的应用与特点 久岩传感 GEO-explorer
振弦式应变计在混凝土结构长期监测中的应用与特点 久岩传感 GEO-explorer 振弦式应变计是一种专为长期埋设于水工建筑物及各类混凝土结构内部而设计的测量仪器,可广泛应用于梁体、柱体、桩基、挡土墙、隧道衬砌、桥墩及基岩等结构的应变与应力监测,同时具…...
AVFormatContext 再分析
说明 :将 avfromatContext 的变量依次打印分析,根据ffmpeg 给的说明,猜测,结合网上的文章字节写测试代码分析。 从常用到不常用依次分析 1. unsigned int nb_streams; 代表 avfromatContext 中 AVStream **streams 的个数 /** …...
力扣hot100,739每日温度(单调栈)详解
时隔多久又遇到单调栈的题了,上次记得是接雨水的题,简单讲一下单调栈的适用场景和定义。 意义:看名字就知道单调栈是一个栈里面的数据是单调的 。 解决问题: 单调栈主要用于解决需要**快速找到某个元素附近更大或更小的元素**的问题,其核心…...
怎么检测代理IP延迟?如何选择低延迟代理?
在跨境电商、数据采集以及社交媒体管理等活动中,代理IP的延迟是评估其性能的关键指标之一。高延迟的代理IP可能显著影响任务效率,特别是在需要高并发或大量请求的情况下。本文将介绍几种测试海外代理IP延迟的方法。 一、使用Ping命令测试延迟 Ping命令…...
QEMU 10.0 发布
QEMU 10.0 于 2025 年 4 月 23 日发布。此版本包含 2800 多个提交,来自 211 位作者。以下是一些主要的更新内容: CPU 和主板支持增强 x86 架构:优化了字符串操作指令,显著缩短启动时间。新增了 Intel Clearwater Forest 和 Sierra…...
C++和Java该如何选择?
我真诚的建议你选择C。因为国内Java程序员内卷太严重了,某些公司发布一个Java岗位,立刻就有几百人打招呼;而发布一个C岗位,打招呼的人数就那么十几个。 要知道,无论什么时候,只要你能够学得动C,…...