02MFC基础 - 图文(5)

2019-01-26 17:05

构图。

可以在VS08的帮助系统中,先选“Visual C++”或“未筛选”作为“筛选依据”的选项,然后再定位“目录\\开发工具和语言\\Visual Studio文档\\Visual C++\\参考信息\\库参考(或Libraries Reference)\\MFC”(主要内容在其中的“Classes”子目录中),就可以进入MFC的(英文)帮助系统。

VC08 功能包(MFC 9.0 Update)的帮助位于“目录\\开发工具和语言\\Visual Studio文档\\Visual C++\\参考信息\\Libraries Reference\\MFC Feature Pack for Visual C++ 2008”(主要内容在其中的“Reference\\Classes”子目录中,全为英文)。

2.2.2 特点

MFC是Windows API的C++类封装,它为程序员提供了一个优秀的应用程序框架(支持文档-视图结构,并可自动生成大量有用的源代码)和一套实用的消息映射机制(避免了冗长的switch-case语句,便于程序的编写和维护)。

1.优点

与Windows API和三其他Windows类库(如Borland公司的OWL)相比,MFC(应用程序框架)有如下优点:

? 能自动生成应用程序框架的大量基本源代码,可使程序员从繁琐的编程细节中解放

出来,而将主要精力集中在应用问题和业务逻辑、以及具体响应代码的编写上。 ? IDE具有智能感知(IntelliSense)功能,能够自动完成(Autocomplete)许多源代

码的输入工作。如在程序员键入代码时,动态提供函数的参数格式、类对象的数据成员和成员函数列表等。

? 允许传统的API与MFC混合使用:因为MFC并没有封装全部的API,有时还需

要用到API的函数和结构等。 ? 支持与.NET/CLR的混合编程。

? 提供许多功能强大的工具:如可视的资源编辑器、应用程序向导、属性编程等。 ? 具有灵活的程序结构,可用文档来管理应用数据,用视图来管理用户与文档的交互

作用模式。

? 具有各种API的封装类,封装的对象有窗口、对话框、DC、绘图对象和控件等。

21

? 自动实现标准的菜单、对话框、工具条和状态条。 ? 可创建多种程序类型:EXE、DLL、LIB。

? 按确定传送路径传送用户接口对象(如菜单项/工具按钮)命令(消息),由最终的

命令目标对象来执行(响应),如“文件\\打开”的传送路径为

应用程序(CWinApp)→框架窗口(CFrameWnd)→视图(CView)

? 支持视图的滚动与窗口的分割。

? 支持多种视图窗口,如编辑窗(CEditView)、树形窗(CTreeView)、列表窗(CListView)、

窗体窗(CFormView)、滚动窗(CScrollView)。 ? 支持打印和打印预览。

? 通过数据映射机制 为对话框中的对象进行动态数据交换 提供简单的编程接口,同

时自动对输入的数据进行有效性检查。

? 支持ActiveX控件、DDE、OLE、COM、.NET框架。 ? 支持上下文相关的帮助。 ? 提供各种数据库接口及其相关类。 ? 提供具有I/O功能的文件类。 ? ??

2.缺点

任何事物都是一分为二的,MFC也不是全是优点。例如,封装得好而且自动化程度高是MFC的最大的优点,但同时也是很大的缺点。下面是在编程过程中大家需要十分注意的MFC的两个主要缺点:

? 因为MFC封装得太好,很多内容对外都是黑箱。程序员对MFC编程,很难做到

像MS C/C++和Turbo C++编程那样(什么都是一清二楚的、所有的都在掌握之中),往往是一头雾水。解决方法是,认真阅读本书和MSDN帮助文档的内容,仔细体会Windows和MFC的工作原理,慢慢弄清MFC的文档视图结构、主要类(CWnd、CView、CDC等等)、特别是可视化对象(窗口、客户区、对话框、控件等等)的工作机制和过程步骤。

? MFC自动化程度高是好事,许多事情都是MFC代劳了,但是这同样也是缺点。因

为如果希望用手工来修改自动生成的代码内容,简直就是一场噩梦,往往顾此失彼,

22

困难重重,而且对因此出现的(特别是运行)错误很难排查。解决办法是,尽量利用自动化方式进行编程(包括添加和删除代码),不要随便手工修改自动生成的代码。还要弄清MFC自动生成的各项具体内容,这样才能保证手工修改的全面周到。

2.2.3 类层次结构

MFC 类库中的几百个类组成了一个庞大的类层次结构,其中大多数类都是从根类CObject派生的,但是为了效率和兼容,MFC中也有一些独立的类。在CObject的派生类中,数量最多(同时也是最重要的)是窗口类CWnd及其派生类。

从2.0版到9.0版的MFC类库,变化都不太大。但是Visual C++ 2008功能包(Feature Pack)所带的MFC类库,为了支持功能区和Aero界面,增加了近一倍的新类。

1.MFC 9.0

Visual C++ 2008所带的MFC 9.0类库,包含237个类、4个结构和4个接口。图2-7中的a)图和b)图,分别是MFC 9.0的类库层次结构简图和全图。

a) 简图

23

b) 全图

图2-7 MFC 9.0类库层次结构图

红色——9.0版新增部分、绿色——8.0版新增部分、蓝色——7.0版新增部分

2.功能包

Visual C++ 2008功能包(包含在Visual Studio 20008 SP1版中)所带MFC 类库,在MFC 9.0的基础上,又增加137个新类(及86个内部类)和1个新结构。图2-8是MFC 9.0功能包类库的层次结构图,因为类太多,图被分成了三个部分:a) CObject的派生类、b) CWnd和CCmdTarget的派生类、c)(不是从CObject派生的)独立类。

24

a) CObject的派生类

25


02MFC基础 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:加气混凝土砌块墙施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: