MFC(六)框架理论

news2024/11/22 19:29:44

关键类

,MFC中关键类有:

CMFCAPP:最底层的类,也是最重要的类,统筹全局,管理DOCUMENT TEMPLATE

CFRAMEWND:框架窗口,包括菜单栏、工具栏、状态栏等等,主要是负责窗口的布局

CVIEW:负责展示具体的数据

CDOCUMENT:负责提供具体的数据

我们可以从CMFCAPP中直接看到他的三个类

点击 类视图 ==CMFCpaintApp===转到InitInstance定义

注意一下,这里三个类前面都有RUNTIME_CLASS,这是什么意思呢 ,我们查看其指针的定义,发现它的本质为struct CRuntimeClass,它里面有个成员函数,CObject* CreateObject();,这个函数的作用是一个虚函数,通过子类重构,来接收不同的消息,用以生成不同的窗口,即多态,另外

CRuntimeClass里还有一些成员变量及方法,可以获取RUNTIME_CLASSS的类的名字、和一些信息

 它们的关系

1.查看CMFCAPP,发现它父类的父类的父类CWinThread,有一个成员变量,CDocManager* m_pDocManager,查看CDocManager定义,它里面又有一个CPtrList m_templateList链表,包含了所有的文档,它的用处是维护所有的DOCUMENTTEMPLATE,CMFCAPP会把所有的DOCUMENTTEMPLATE加入到链表中

什么是DOCUMENTTEMPLATE,即VIEW、DOC、FRAME

2.查看CMFCpaintDoc,直接查看它的父类CDocument,它里面有两个重要的成员变量,CDocTemplate* m_pDocTemplate;和CPtrList m_viewList,这两个类 ,一个类回指OCUMENTTEMPLATE,一个指向视图列表,文档和视图是多对多的关系

3.查看CFRAMEWND,查看父类CFrameWndEx,再查看父类CFrameWnd,它里面有

CView* m_pViewActive,这个指针指向当前活动的view,称为“当前视图指针”

4.查看CVIEW,它的父类CView里面有个成员函数,CDocument* m_pDocument;,它指向相关的document

启动流程

 

这里还有很多问题

1.当我想跟踪调试的时候,无法打开appmodul.cpp文件

https://ask.csdn.net/questions/7956074?spm=1001.2014.3001.5501

2.关于图2的一些问题

消息分类

标准消息:除WM_COMMAND消息以外,所有以WM开头的消息

命令消息:WM_COMMAND消息,来自菜单、工具栏 的消息

通告消息:由控件产生的消息,例如:按钮的单击,列表框的选择,通告消息会发给框架,框架又会发送命令消息给相应的控件,比如单击保存按钮,会发送通告给框架,框架又会发送保存命令给相应的控件

另外,凡是从CWND派生的类,都可以接收以上三类消息,而从CCMDTARGET派生的类,只能接收命令和通告消息,CCMDTARGET就是CWND的父类

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python内置变量介绍

Python内置变量介绍 Python是一种高级编程语言,具有简单易学、可读性强、可扩展性强等特点。在Python中,有许多内置变量(built-in variables),以方便用户在编写程序时进行使用。本文将会对Python中的内置变量进行介绍…

基于SpringBoot+Vue的逍遥大药房管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

干货,一文弄懂RF检波器那些事

WiFi、4G、蓝牙等各种无线连接技术的普及带动各种终端设备井喷式增长,包括物联网、可穿戴等各种基于无线连接技术的新兴产业迅速成长起来,各种无线信号链解决方案涌现推动这种热潮的持续发展。在无线信号链中,很久没有听到有人提起一个关键的…

快速开发和使用Android串口

一、什么是串口 串口叫做串行接口,也称串行通信接口,也可以叫做COM口,按电气标准及协议来分包括RS-232-C、RS-422、RS485、USB等。串行接口是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现…

计算机视觉—YOLO V4

计算机视觉—YOLO V4 1、YOLO V41.1、网络结构1.1.1、BackBone:CSPDarknet531.1.2、Neck:SPP结构1.1.3、Neck:PAN结构1.1.4、YOLO v4整体结构 1.2、优化策略 1、YOLO V4 原论文下载地址:https://arxiv.org/abs/2004.10934 1.1、…

Windows中安装GCC教程

GCC的安装教程 GCC简介 GCC编译器通常在Linux系统下使用,一般来说大部分发行的系统会默认安装,GCC编译器使用gcc指令在终端进行shell操作。 对于新接触Linux的朋友来说,简单的在Windows中练习过渡一下应该就足够了。(我就是因为…

Apache IoTDB 荣获国家网信办 2022 年中国开源创新大赛决赛一等奖,三位核心研发荣获表彰!...

项目获得权威认可! 2023 年 5 月 15 日,2022 年中国开源创新大赛组委会对外公布“2022 中国互联网发展创新与投资大赛公益项目暨2022年中国开源创新大赛”决赛获奖名单,并于 2023 年 5 月 31 日在北京举办“2022年中国开源创新大赛总结发布活…

chatgpt赋能python:用Python编写FizzBuzz——解析最简单的编程题

用Python编写FizzBuzz——解析最简单的编程题 作为每个程序员的入门题目,FizzBuzz是一个简单但常见的问题。FizzBuzz要求我们用数字1到100来打印输出,但是当数字是3的倍数时,需要输出Fizz;当数字是5的倍数时,需要输出…

力扣高频SQL50题(基础版)——第三天

力扣高频SQL50题(基础版)——第三天 1 产品销售分析Ⅰ 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT p.product_name,s.year,s.price FROM Sales s INNER JOIN Product p …

chatgpt赋能python:Python几次方函数介绍

Python几次方函数介绍 Python作为一门高级编程语言,具有丰富的数学函数库。其中,几次方函数在许多数值计算、数据分析和科学计算中都得到广泛应用。Python中的几次方函数有多种实现方式,包括内置函数pow()、运算符**、NumPy库的numpy.power(…

(3)NUC 980 kenerl编译

解压 用到的配置文件位置: /NUC980-linux-4.4.y-master/arch/arm/configs/nuc980_defconfig 执行: 编译linux内核源码。了解其 配置文件在 arch/arm/configs/nuc980_defconfig (1) make nuc980_defconfig 载入配置文件 (2) make menuconfig --->Devi…

机器龙的制作

1. 功能说明 本文示例将实现R326样机机器龙边张合嘴巴、边煽动翅膀、边摆动尾巴运动的功能。 2. 结构说明 本项目使用的机器龙样机是用可以用探索者零件或者探索者兼容零件制作。样机主要由头部模块、翅膀模块、尾巴模块、四足行走模块四部分组成。其中头部模块由2自由度并联关…

从元宇宙到生成式AI:炒作、现实和未来前景

不久前,科技界充斥着一种被称为元宇宙的未来主义概念。这个相互关联的虚拟现实空间宇宙,个人可以在模拟环境中进行交互,被誉为技术的未来。如今围绕元宇宙的炒作已经彻底失败了。技术重点现在已经转向生成AI,重点是像GPT-4和谷歌的…

一文搞懂Flutter的手势事件——事件分发与冲突处理详解

本文字数:43617字 预计阅读时间:110分钟 前言 之前有两篇文章都围绕着runApp()进行展开,讲解了布局绘制的详细过程。 https://www.jianshu.com/p/2ef749ff4d40/https://www.jianshu.com/p/f37f8da235ec 那么接下来我们想详细的说一说Flutter是…

哔哩哔哩视频云画质与窄带高清AI落地实践

视频赛道卷到下半场,一定会面临体验与成本的对抗,尤其是在行业大环境“过冬”的背景下,想要在有限带宽下获得最佳的画质观感变得异常具备挑战性。从视频云业务场景的视角来看,如何有效解决cross-domain问题、如何突破低业务延迟下…

留学生用ChatGPT写论文?真的会被开除!!!

转眼进入6月,大家的论文完成的怎么样了?很多留学生都有这样的疑问,用ChatGPT写论文靠谱吗? 其实在最近,,ChatGPT被学生用来辅助写论文,已经不是什么新鲜事了。它作为新型人工智能,搜…

二十三种设计模式:状态模式

状态模式,就是把所有的状态抽象成一个个具体的类,然后继承一个抽象状态类,在每一个状态类内封装对应状态的行为,符合开放封闭原则,当增加新的状态或减少状态时,只需修改关联的类即可。很适合多分支行为方法…

SpringBoot使用flywaydb实现数据库版本管理【附源码】

一、项目背景 本文主要是配合SpringBoot使用用户输入的自定义数据源启动一文附带产出。前文主要介绍了SpringBoot无数据源启动,然后通过用户录入自定义数据库配置后,连接数据库的操作。但是当整个项目交给用户使用时,谁使用都不知道情况下&a…

JetBrains的.NET和ASP.NET集成开发环境Rider 2023版本在Linux系统的下载与安装配置教程

目录 前言一、Rider 安装二、使用配置总结 前言 Rider是一款专为.NET和ASP.NET开发人员设计的集成开发环境(IDE)。它提供了丰富的功能和工具,可以帮助开发人员更高效地编写、调试和部署.NET和ASP.NET应用程序。注:已在CentOS7.9和…

Java课程设计之购物车管理系统

一、项目准备 1、开发工具:JDK、Eclipse 2、需求分析: 包括商品管理和购物车管理。 1)商品管理主要功能 商品信息导入 显示所有商品信息 2)购物车主要功能 添加商品到购物车 修改购物车中的商品数量 显示购物车中的所有商…