没有合适的资源?快使用搜索试试~ 我知道了~
首页VC++mfc介绍文档
VC++mfc介绍文档
需积分: 10 65 下载量 105 浏览量
更新于2023-03-16
评论
收藏 1.22MB DOC 举报
VC++亮点,初学VC编程使用,MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
资源详情
资源评论
资源推荐
1. MFC 概述
1. MFC 是一个编程框架
MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员
在此基础上来建立 Windows 下的应用程序,这是一种相对 SDK 来说更为简单的方法。因为总体上,MFC 框架定义了
应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东
西填入这个轮廓。Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard 可以用来生成初步的框架
文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard 用来协助添加代码到框架文件;最
后,编译,则通过类库实现了应用程序特定的逻辑。
1. 封装
构成 MFC 框架的是 MFC 类库。MFC 类库是 C++类库。这些类或者封装了 Win32 应用程序编程接口,或者封
装了应用程序的概念,或者封装了 OLE 特性,或者封装了 ODBC 和 DAO 数据访问的功能,等等,分述如下。
(1)对 Win32 应用程序编程接口的封装
用一个 C++ Object 来包装一个 Windows Object。例如:class CWnd 是一个 C++ window object,它把
Windows window(HWND)和 Windows window 有关的 API 函数封装在 C++ window object 的成员函数内,
后者的成员变量 m_hWnd 就是前者的窗口句柄。
(2)对应用程序概念的封装
使用 SDK 编写 Windows 应用程序时,总要定义窗口过程,登记 Windows Class,创建窗口,等等。MFC 把
许多类似的处理封装起来,替程序员完成这些工作。另外,MFC 提出了以文档-视图为中心的编程模式,MFC 类
库封装了对它的支持。文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。
(3)对 COM/OLE 特性的封装
OLE 建立在 COM 模型之上,由于支持 OLE 的应用程序必须实现一系列的接口(Interface),因而相当繁琐。
MFC 的 OLE 类封装了 OLE API 大量的复杂工作,这些类提供了实现 OLE 的更高级接口。
(4)对 ODBC 功能的封装
以少量的能提供与 ODBC 之间更高级接口的 C++类,封装了 ODBC API 的大量的复杂的工作,提供了一种数据
库编程模式。
2. 继承
首先,MFC 抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中,最重要的类是
CObject 和 CCmdTarget。CObject 是 MFC 的根类,绝大多数 MFC 类是其派生的,包括
CCmdTarget。CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支
持,等等。所有从 CObject 派生的类都将具备或者可以具备 CObject 所拥有的特性。CCmdTarget 通过封装
一些属性和方法,提供了消息处理的架构。MFC 中,任何可以处理消息的类都从 CCmdTarget 派生。
针对每种不同的对象,MFC 都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多
更具体的类。这些对象包括以下种类:窗口对象,基类是 CWnd;应用程序对象,基类是 CwinThread;文档
对象,基类是 Cdocument,等等。
程序员将结合自己的实际,从适当的 MFC 类中派生出自己的类,实现特定的功能,达到自己的编程目的。
3. 虚拟函数和动态约束
MFC 以“C++”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个问题必须解决:如果仅
仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。例如,CWnd 封装
Windows 窗口对象时,每一条 Windows 消息对应一个成员函数,这些成员函数为派生类所继承。如果这些函
数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,MFC 建立了消息映射机制,以一种富有效率、
便于使用的手段解决消息处理函数的动态约束问题。
这样,通过虚拟函数和消息映射,MFC 类提供了丰富的编程接口。程序员继承基类的同时,把自己实现的虚拟
函数和消息处理函数嵌入 MFC 的编程框架。MFC 编程框架将在适当的时候、适当的地方来调用程序的代码。本
书将充分的展示 MFC 调用虚拟函数和消息处理函数的内幕,让读者对 MFC 的编程接口有清晰的理解。
4. MFC 的宏观框架体系
如前所述,MFC 实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样
封装的结果对程序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,
SDI 应用程序的模板,MDI 应用程序的模板,规则 DLL 应用程序的模板,扩展 DLL 应用程序的模板,OLE/ACTIVEX
应用程序的模板,等等。
这些模板都采用了以文档-视为中心的思想,每一个模板都包含一组特定的类。典型的 MDI 应用程序的构成将在下一节
具体讨论。
为了支持对应用程序概念的封装,MFC 内部必须作大量的工作。例如,为了实现消息映射机制,MFC 编程框架必须要
保证首先得到消息,然后按既定的方法进行处理。又如,为了实现对 DLL 编程的支持和多线程编程的支持,MFC 内部
使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然,这些内部处理对程序员来说是透明的,
但是,懂得和理解 MFC 内部机制有助于写出功能灵活而强大的程序。
总之,MFC 封装了 Win32 API,OLE API,ODBC API 等底层函数的功能,并提供更高一层的接口,简化了
Windows 编程。同时,MFC 支持对底层 API 的直接调用。
MFC 提供了一个 Windows 应用程序开发模式,对程序的控制主要是由 MFC 框架完成的,而且 MFC 也完成了大部分
的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程
序员的代码来处理应用程序特定的事件。
MFC 是 C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事
件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是 C++对继承的支持,对虚拟函数的支持,
以及 MFC 实现的消息映射机制。
2. MDI 应用程序的构成
本节解释一个典型的 MDI 应用程序的构成。
用 AppWizard 产生一个 MDI 工程 t(无 OLE 等支持),AppWizard
创建了一系列文件,构成了一个应用程序框架。这些文件分四类:头文
件(.h),实现文件(.cpp),资源文件(.rc),模块定义文件(.def),等。
1. 构成应用程序的对象
图 1-1 解释了该应用程序的结构,箭头表示信息流向。
从
CWinApp、CDocument、CView、CMDIFrameWnd、CMD
IChildWnd 类对应地派生出
CTApp、CTDoc、CTView、CMainFrame、CChildFrame 五个类,这五个类的实例分别是应用程序对象、文
档对象、视对象、主框架窗口对象和文档边框窗口对象。主框架窗口包含了视窗口、工具条和状态栏。对这些类
或者对象解释如下。
(1)应用程序
应用程序类派生于 CWinApp。基于框架的应用程序必须有且只有一个应用程序对象,它负责应用程序的初始化、
运行和结束。
(2)边框窗口
如果是 SDI 应用程序,从 CFrameWnd 类派生边框窗口类,边框窗口的客户子窗口(MDIClient)直接包含视窗
口;如果是 MDI 应用程序,从 CMDIFrameWnd 类派生边框窗口类,边框窗口的客户子窗口(MDIClient)直接
包含文档边框窗口。
如果要支持工具条、状态栏,则派生的边框窗口类还要添加 CToolBar 和 CStatusBar 类型的成员变量,以及在
一个 OnCreate 消息处理函数中初始化这两个控制窗口。
边框窗口用来管理文档边框窗口、视窗口、工具条、菜单、加速键等,协调半模式状态(如上下文的帮助
(SHIFT+F1 模式)和打印预览)。
(3)文档边框窗口
文档边框窗口类从 CMDIChildWnd 类派生,MDI 应用程序使用文档边框窗口来包含视窗口。
(4)文档
剩余63页未读,继续阅读
ZHANG83962909
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0