没有合适的资源?快使用搜索试试~ 我知道了~
MFC简明入门教程
需积分: 10 3 下载量 103 浏览量
2018-10-30
21:36:30
上传
评论
收藏 2.17MB DOC 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/10754313/0001-7a4ad1624edf8ac8edba93ded9ff8666_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
64页
MFC简明入门教程,希望对大家有用,可以下载参看看的哈
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/release/download_crawler_static/10754313/bg1.jpg)
MFC 概述
MFC 是一个编程框架
中的各种类结合起
来构成了一个应用程序框架,它的目的就是让程序员在此基础上
来建立 下的应用程序,这是一种相对 来说更为简
单的方法。因为总体上, 框架定义了应用程序的轮廓,并提
供了用户接口的标准实现方法,程序员所要做的就是通过预定义
的接口把具体应用程序特有的东西填入这个轮廓。
提供了相应的工具来完成这个工作: ! 可
以用来生成初步的框架文件(代码和资源等);资源编辑器用于
帮助直观地设计用户接口;! 用来协助添加代码到框
架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
封装
构成 框架的是 类库。 类库是 类库。
这些类或者封装了 "# 应用程序编程接口,或者封装了
应用程序的概念,或者封装了 $% 特性,或者封装了
$& 和 $ 数据访问的功能,等等,分述如下。
()对 "# 应用程序编程接口的封装
用一个 $'( 来包装一个 $'(。例
如: 是一个 '(,它把
)*和 有关
的 +, 函数封装在 '( 的成员函数内,
后者的成员变量 -./ 就是前者的窗口句柄。
(#)对应用程序概念的封装
使用 编写 应用程序时,总要定义窗口过程,
登记 ,创建窗口,等等。 把许多类
似的处理封装起来,替程序员完成这些工作。另外,
提出了以文档0视图为中心的编程模式, 类库封装了
对它的支持。文档是用户操作的数据对象,视图是数据操
作的窗口,用户通过它处理、查看数据。
(")对 $1$% 特性的封装
$% 建立在 $ 模型之上,由于支持 $% 的应用程序必
须实现一系列的接口(,((),因而相当繁琐。
的 $% 类封装了 $%+, 大量的复杂工作,这些类
提供了实现 $% 的更高级接口。
![](https://csdnimg.cn/release/download_crawler_static/10754313/bg2.jpg)
(2)对 $& 功能的封装
以少量的能提供与 $& 之间更高级接口的 类,封
装了 $&+, 的大量的复杂的工作,提供了一种数据库
编程模式。
# 继承
首先, 抽象出众多类的共同特性,设计出一些基类作
为实现其他类的基础。这些类中,最重要的类是 $'(
和 -34(。$'( 是 的根类,绝大多数
类是其派生的,包括 -34(。$'(实现
了一些重要的特性,包括动态类信息、动态创建、对象序
列化、对程序调试的支持,等等。所有从 $'( 派生的
类都将具备或者可以具备 $'( 所拥有的特性。
-34( 通过封装一些属性和方法,提供了消息处理
的架构。 中,任何可以处理消息的类都从
-34( 派生。
针对每种不同的对象, 都设计了一组类对这些对象进
行封装,每一组类都有一个基类,从基类派生出众多更具
体的类。这些对象包括以下种类:窗口对象,基类是
;应用程序对象,基类是 3/(;文档对象,
基类是 -(,等等。
程序员将结合自己的实际,从适当的 类中派生出自己
的类,实现特定的功能,达到自己的编程目的。
" 虚拟函数和动态约束
以“5为基础,自然支持虚拟函数和动态约束。但
是作为一个编程框架,有一个问题必须解决:如果仅仅通
过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃
肿,消耗内存,效率低下。例如, 封装
窗口对象时,每一条 消息对应一个成员函数,
这些成员函数为派生类所继承。如果这些函数都设计成虚
拟函数,由于数量太多,实现起来不现实。于是, 建
立了消息映射机制,以一种富有效率、便于使用的手段解
决消息处理函数的动态约束问题。
这样,通过虚拟函数和消息映射, 类提供了丰富的编
程接口。程序员继承基类的同时,把自己实现的虚拟函数
和消息处理函数嵌入 的编程框架。 编程框架将
在适当的时候、适当的地方来调用程序的代码。本书将充
![](https://csdnimg.cn/release/download_crawler_static/10754313/bg3.jpg)
分的展示 调用虚拟函数和消息处理函数的内幕,让读
者对 的编程接口有清晰的理解。
2 MFC 的宏观框架体系
如前所述, 实现了对应用程序概念的封装,把类、类的继承、
动态约束、类的关系和相互作用等封装起来。这样封装的结果对
程序员来说,是一套开发模板(或者说模式)。针对不同的应用
和目的,程序员采用不同的模板。例如,, 应用程序的模板,
, 应用程序的模板,规则 应用程序的模板,扩展 应
用程序的模板,$%13,%6 应用程序的模板,等等。
这些模板都采用了以文档0视为中心的思想,每一个模板都包含一
组特定的类。典型的 , 应用程序的构成将在下一节具体讨论。
为了支持对应用程序概念的封装, 内部必须作大量的工作。
例如,为了实现消息映射机制, 编程框架必须要保证首先得
到消息,然后按既定的方法进行处理。又如,为了实现对 编
程的支持和多线程编程的支持, 内部使用了特别的处理方法,
使用模块状态、线程状态等来管理一些重要信息。虽然,这些内
部处理对程序员来说是透明的,但是,懂得和理解 内部机制
有助于写出功能灵活而强大的程序。
总之, 封装了 "#+,,$%+,,$&+, 等底层函
数的功能,并提供更高一层的接口,简化了 编程。同
时, 支持对底层 +, 的直接调用。
提供了一个 应用程序开发模式,对程序的控制主
要是由 框架完成的,而且 也完成了大部分的功能,预
定义或实现了许多事件和消息处理,等等。框架或者由其本身处
理事件,不依赖程序员的代码;或者调用程序员的代码来处理应
用程序特定的事件。
是 类库,程序员就是通过使用、继承和扩展适当的类
来实现特定的目的。例如,继承时,应用程序特定的事件由程序
员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基
础是 对继承的支持,对虚拟函数的支持,以及 实现的
消息映射机制。
# MDI 应用程序的构成
本节解释一个典型的 , 应用程序的构成。
用 ! 产生一个 , 工程 (无 $% 等支持),
! 创建了一系列文件,构成了一个应用程序框架。这些
![](https://csdnimg.cn/release/download_crawler_static/10754313/bg4.jpg)
文件分四类:头文件
(/),实现文件
,资源文件
,模块定义文件
(,等。
构成应用程序
的对象
图 0 解释了
该应用程序的
结构,箭头表
示信息流向。
从
、-(、(、,-(、
,/ 类对应地派生出
3 、3、3(、-(、/
-( 五个类,这五个类的实例分别是应用程序对象、文档
对象、视对象、主框架窗口对象和文档边框窗口对象。主
框架窗口包含了视窗口、工具条和状态栏。对这些类或者
对象解释如下。
()应用程序
应用程序类派生于 。基于框架的应用程序必须
有且只有一个应用程序对象,它负责应用程序的初始化、
运行和结束。
(#)边框窗口
如果是 , 应用程序,从 -( 类派生边框窗口
类,边框窗口的客户子窗口,(直接包含视窗口;
如果是 , 应用程序,从 ,-( 类派生边框
窗口类,边框窗口的客户子窗口,(直接包含文档
边框窗口。
如果要支持工具条、状态栏,则派生的边框窗口类还要添
加 3& 和 & 类型的成员变量,以及在一
个 $(( 消息处理函数中初始化这两个控制窗口。
边框窗口用来管理文档边框窗口、视窗口、工具条、菜单、
加速键等,协调半模式状态(如上下文的帮助),3
模式和打印预览)。
![](https://csdnimg.cn/release/download_crawler_static/10754313/bg5.jpg)
(")文档边框窗口
文档边框窗口类从 ,/ 类派生,, 应用程
序使用文档边框窗口来包含视窗口。
(2)文档
文档类从 -( 类派生,用来管理数据,数据的变
化、存取都
是通过文档
实现的。视
窗口通过文
档对象来访
问和更新数
据。
(7)视
视类从
( 或它
的派生类派
生。视和文
档联系在一
起,在文档
和用户之间起中介作用,即视在屏幕上显示文档的内容,
并把用户输入转换成对文档的操作。
(8)文档模板
文档模板类一般不需要派生。, 应用程序使用多文档模
板类 3(- (;, 应用程序使用单文档模
板类 4(3(- (。
应用程序通过文档模板类对象来管理上述对象(应用程序
对象、文档对象、主边框窗口对象、文档边框窗口对象、
视对象)的创建。
# 构成应用程序的对象之间的关系
这里,用图的形式可直观地表示所涉及的 类的继承或
者派生关系,如图 0# 所示意。
图 0# 所示的类都是从 $'( 类派生出来的;所有处理
消息的类都是从 -34( 类派生的。如果是多文档
应用程序,文档模板使用 3(- (,主框架
剩余63页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
fcc2008
- 粉丝: 55
- 资源: 243
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 关于如何快速入手Kotlin
- ALTIUM库 常用电阻电容芯片类2D3D PCB封装库AD库(2D3D封装库).zip
- keil5安装教程keil5安装教程
- 所得到的多多多多多多多
- GNSS芯片 AG3335M芯片的,EVB 硬件设计图
- 阿云主机网络连接详细操作.docx
- 网络爬虫软件研究与开发pdf
- Java项目-基于SSM+JSP的母婴用品网站的设计与实现(源码+数据库脚本+部署视频+代码讲解视频+全套软件)
- 基于微信小程序的购物商城app设计带Java后端+源代码+文档说明+数据库.zip
- 基于51单片机外设应用设计.DSN后缀PROTEUS仿真仿真源文件及C语言实例源码例程合集(300个).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)