【MFC】09.MFC视图-笔记
MFC视图窗口:CView类 显示数据/画面
我们之前的绘图消息,都是在框架类上画出来的
视图窗口就覆盖在框架窗口上
视图窗口本质上也是窗口,只是和框架窗口风格不同
CView类也继承于CWnd类
CView也能处理消息,因为它继承于CWnd类
试图窗口没有边框等
视图窗口是框架窗口的子类 WS_CHILD
在框架窗口创建的时候,创建视图窗口
class CMyView:public CView{virtual void OnDraw(CDC* pDC){}
}MyView m_View;
//我们发现不能定义对象:
C++:抽象类不能定义对象,就说明:CView是一个纯虚类(抽象类)
我们返回去重写纯虚函数重写了OnDraw函数之后,我们就可以定义对象了
然后我们在我们自己的框架类的Create中:
int CMyFrameWnd::OnCreate(LPCREATESTRUCT)
{RECT rect;GetWindowRect(&rect);m_View.Create(NULL, L"MFCView", WS_CHILD | WS_VISIBLE | WS_BORDER, rect, this, 1);return 0;
}
这样创建出来视图窗口之后,关闭窗口,会报错
原因:在父类中释放了对象,也就是说,我们的视图类是继承于CWnd类,在释放CWnd类的时候,析构了一次,而在框架类上又要释放一次,导致报错
解决方法:
在框架类Create中:
m_view = new MyView;
通过指针调用
这样只有当delete的时候,才会释放
上面创建视图窗口的时候,需要我们提供ID,这样在窗口分割的时候可以用到,如果无法获取ID,MFC提供了一个宏,可以自动帮我们识别窗口大小:
AFX_IDW_PANE_FIRST
内部调用了MoveWindow
-
OnDrow函数:
调用这个函数画出文档的图像,用于屏幕显示,打印或打印预览。需要提供其实现
在Wind32编程中 只有WM_PAINT消息
class CMyView :public CView {virtual void OnDraw(CDC* pDc) {pDc->TextOutW(50, 50, L"CMyView");} };在我们的视图类中,也可以处理WM_PAINT消息用于绘图
如果我们处理了WM_PAINT消息,就不会调用OnDraw函数
如果我们没有处理WM_PAINT消息,就会调用OnDraw函数
视图类继承与框架类,也有一条消息链表
如果我们没有重写处理WM_PAINT消息的话,就不会有消息链表
遍历消息的时候,就去父类的消息链表上去寻找
如果我们重写了处理WM_PAINT消息的话,就会到自己的消息链表上去抓消息,处理完了之后就退出,不会到父类消息链表中去抓消息
那既然视图类有消息链表,那视图类肯定也能够处理消息,我们在视图类中处理菜单消息
我们实现了代码之后,发现菜单变成了灰色,但是我们点击视图窗口的时候,发现又可以点击了
这是因为视图分割,只有当活动试图在我们处理消息的试图上的时候,就可以处理消息
点击就是给框架类窗口一个成员赋值(活动视图是我们处理消息的视图)
this->m_pViewActive = m_view
- 试图分割
- 机制:动态创建
- RTTI:运行时类信息 代码在运行当中,也能拿到类的信息来判断是否属于哪个类
相关文章:
【MFC】09.MFC视图-笔记
MFC视图窗口:CView类 显示数据/画面 我们之前的绘图消息,都是在框架类上画出来的 视图窗口就覆盖在框架窗口上 视图窗口本质上也是窗口,只是和框架窗口风格不同 CView类也继承于CWnd类 CView也能处理消息,因为它继承于CWnd类…...
【字节跳动青训营】后端笔记整理-2 | Go实践记录:猜谜游戏,在线词典,Socks5代理服务器
**本人是第六届字节跳动青训营(后端组)的成员。本文由博主本人整理自该营的日常学习实践,首发于稀土掘金:🔗Go实践记录:猜谜游戏,在线词典,Socks5代理服务器 | 青训营 我的go开发环境…...
GPT的第一个创作
嗨,大家好,我是赖兴泳!今天,我要和大家聊一聊前端开发,就像我用音符创造音乐一样,前端开发也是创造美丽的用户界面的过程。 前端开发是构建网站和应用程序用户界面的关键部分。就像音乐家需要精心编排音符…...
Spring Boot 获取前端参数
Spring Boot 获取前端参数 在开发 Web 应用程序时,前端参数是非常重要的。Spring Boot 提供了多种方法来获取前端参数,本文将介绍其中的一些常用方法。 1. 使用 RequestParam 注解 RequestParam 注解是 Spring MVC 提供的一种常用方式,用于…...
java应用运行在docker,并且其他组件也在docker
docker启动redis容器 # create redis docker run -d --name redis-container -p 6379:6379 redis:latest创建java 应用 dockerfile FROM openjdk:17##Pre-create related directories RUN mkdir -p /data/etax/ms-app WORKDIR /data/etax/ms-appEXPOSE 10133 COPY ./target…...
Java真实面试题,offer已到手
关于学习 在黑马程序员刚刚开始的时候学习尽头非常足,到后面逐渐失去了一些兴趣,以至于后面上课会出现走神等问题,但是毕业时后悔晚矣。等到开始学习项目一的时候,思路总会比别人慢一些,不看讲义写不出来代码。 建议…...
在序列化、反序列化下如何保持单例(Singleton)模式
1、序列化、反序列化 在 Java 中,当一个对象被序列化后再被反序列化,通常情况下会创建一个新的对象实例。这是因为序列化将对象的状态保存到字节流中,而反序列化则是将字节流重新转化为对象。在这个过程中,通常会使用类的构造函数…...
【数据结构】二叉树篇|超清晰图解和详解:二叉树的最近公共祖先
博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: 是瑶瑶子啦每日一言🌼: 你不能要求一片海洋,没有风暴,那不是海洋,是泥塘——毕淑敏 目录 一、题目二、题解三、代码 一、题目 …...
android ndk clang交叉编译ffmpeg动态库踩坑
1.ffmpeg默认使用gcc编译,在android上无法使用,否则各种报错,所以要用ndk的clang编译 2.下载ffmpeg源码 修改configure文件,增加命令 cross_prefix_clang 修改以下命令 cc_default"${cross_prefix}${cc_default}" cxx…...
简单记录牛客top101算法题(初级题C语言实现)BM24 二叉树的中序遍历 BM28 二叉树的最大深度 BM29 二叉树中和为某一值的路径
1. BM24 二叉树的中序/后续遍历 要求:给定一个二叉树的根节点root,返回它的中序遍历结果。 输入:{1,2,#,#,3} 返回值:[2,3,1]1.1 自己的整体思路(与二叉树的前序遍…...
前后端分离------后端创建笔记(05)用户列表查询接口(上)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
性能测试|App性能测试需要关注的指标
一、Android客户端性能测试常见指标: 1、内存 2、CPU 3、流量 4、电量 5、启动速度 6、滑动速度、界面切换速度 7、与服务器交互的网络速度 二、预期标准指定原则 1、分析竞争对手的产品,所有指标要强于竞品 2、产品经理给出的预期性能指标数据…...
Termux SFTP 进行远程文件传输
文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP(SSH File Transfer Protocol)是一种基于SSH(Secure Shell)安全协议的文件传输协议。与FTP协议相比,SFTP使用了…...
Sqlite3简介
SQLite3 简介 SQLite3 是一种轻量级的嵌入式数据库引擎,被广泛应用于各种应用程序中,包括移动设备、桌面应用程序和嵌入式系统。它以其简单、高效和零配置的特点而受到开发者的喜爱。 以下是 SQLite3 的一些重要特点: 嵌入式数据库引擎&…...
K8S调度
K8S调度 一、List-Watch 机制 controller-manager、scheduler、kubelet 通过 List-Watch 机制监听 apiserver 发出的事件,apiserver 通过 List-Watch 机制监听 etcd 发出的事件1.scheduler 的调度策略 预选策略/预算策略:通过调度算法过滤掉不满足条件…...
vue+element多层表单校验prop和rules
核心点:外层循环是item和index,内层循环是item2和index2 如果都是定义的同一个属性名 外层循环得写:prop"block.index.numerical" 同理内层循环就得写:prop"objectSpecs. index2 .numerical" 校验函数方法 :rules"getRules(it…...
Dubbo 核心概念和架构
以上是 Dubbo 的工作原理图,从抽象架构上分为两层:服务治理抽象控制面 和 Dubbo 数据面 。 服务治理控制面。服务治理控制面不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管…...
【数据结构OJ题】反转链表
原题链接:https://leetcode.cn/problems/reverse-linked-list/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 方法一:三指针翻转法 使用三个结构体指针n1,n2,n3,原地修改结点…...
Java8 Stream 之groupingBy 分组讲解
本文主要讲解:Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /** * 使用java8 stream groupingBy操作,按城市分组list */ public void groupingByCity() { Map<String, List<Em…...
优哲SSD大文件写性能测试
SDD磁盘性能测试: 空盘: 大文件读,写,读写(4/6)性能测试,删除性能测试,N进程,N线程 小文件读,写,读写(4/6)性能测试&am…...
别再复制粘贴了!手把手带你用DEFINE_PROFILE宏实现一个正弦变化入口速度
从零实现Fluent正弦速度入口:DEFINE_PROFILE宏实战指南 在计算流体力学(CFD)仿真中,标准边界条件设置往往无法满足复杂工况需求。想象这样一个场景:你需要模拟风力发电机叶片在阵风条件下的受力情况,入口风速并非恒定值࿰…...
安卓截屏限制FLAG_SECURE原理与MT管理器绕过实战
1. 截屏限制不是“锁”,而是“提示灯”——先破除一个普遍误解 很多人一看到“App禁止截屏”,第一反应是“这App在防我”,继而联想到银行类App、考试系统、视频平台的“安全策略”,甚至下意识觉得背后有某种“硬隔离”或“内核级防…...
MyBinder实战:零配置在iPad上运行Python数据分析
1. 项目概述:当iPad遇上Python,一次环境配置的“降维打击” 几年前,当我第一次在编程工作坊里,看到有学员掏出iPad,一脸期待地问我“老师,这个能跑今天的代码吗?”时,我的回答通常是…...
【VibeCoding系列教程02】2026年AI编程避坑实录:这三大误区,让我多走了半年弯路
你们有没有发现,人这辈子最大的敌人不是别人,是自己脑子里那些乱七八糟的想法。前两天有个粉丝私信我,说老哥,我看你上次说Vibe Coding挺猛的,我也想学,但我有三个顾虑。我说你说说看。他说第一,…...
Jupyter C内核:在Notebook中实现C语言交互式编程的完整指南
Jupyter C内核:在Notebook中实现C语言交互式编程的完整指南 【免费下载链接】jupyter-c-kernel Minimal Jupyter C kernel 项目地址: https://gitcode.com/gh_mirrors/ju/jupyter-c-kernel Jupyter C内核是一个开源项目,为Jupyter Notebook提供完…...
ESP32如何实现专业级音频录制?探索开源录音解决方案
ESP32如何实现专业级音频录制?探索开源录音解决方案 【免费下载链接】esp32_SoundRecorder ESP32 Sound recorder with simple code in arduino-esp32. (I2S interface) 项目地址: https://gitcode.com/gh_mirrors/es/esp32_SoundRecorder 在物联网和嵌入式开…...
如何在5分钟内彻底改变你的Illustrator工作流程:批量替换脚本终极指南
如何在5分钟内彻底改变你的Illustrator工作流程:批量替换脚本终极指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Adobe Illustrator中重复的替换操作浪费宝贵…...
通过curl命令快速测试Taotoken大模型聚合接口的连通性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过curl命令快速测试Taotoken大模型聚合接口的连通性 在接入大模型服务时,直接使用curl命令进行接口测试是一种高效且…...
黑苹果终极简化方案:OpCore Simplify 让你的OpenCore配置变得前所未有的简单
黑苹果终极简化方案:OpCore Simplify 让你的OpenCore配置变得前所未有的简单 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的…...
用动态主题建模挖掘科学文献中的真实研究趋势
1. 项目概述:用主题建模“听懂”科学文献的集体心跳 你有没有翻过arXiv上每天新增的上千篇机器学习论文,却越看越迷糊——到底哪类研究正在真正升温?不是靠刷标题、不是靠猜作者名气,而是让成千上万篇论文自己“开口说话”&#x…...
