按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
定制的工具条变得更加的容易。
早在1989年,Microsoft的程序员们开始试图将C++和面向对象的编程
概念应用于Windows编程中,以编写出一个可以使Windows编程更加简
便的应用程序框架。他们把这个应用程序框架叫做AFX (AFX这个词来
源于Application Framework,但奇怪的是这个词组中并没有包含
“X”这个字母)。直到今天,AFX小组早已不存在了,AFX这个名称也
于1994年初不再使用,但在Visual C++和MFC中,AFX的影子却随处可
见,很多全局函数、结构和宏的标识符都被加上了AFX的前缀。
最初的AFX版本在经过一年的艰苦之后诞生,却未能被大多数Windows
程序员所接受。AFX的确是经过了精心的规划和编码,并且,它也提
供了对Windows API的高度抽象,建立了全新的面向对象的AFX API,
但最要命的是AFX API库根本不兼容于现有的Windows API。由此导致
的最严重后果是大量的SDK代码无法移植,而程序员将学习两种完全
不同的编程方法。
AFX不得不重新做所有的一切,他们所创建的新的应用程序框架是一
套扩展的C++类,它封装和映射了Windows API,这就是MFC的前身。
过去的AFX小组也变成了MFC小组。最终,MFC的第一个公开版本于
1992年3月随Microsoft C/C++ 7。0 (而不是Visual C++ 1。0)一起推
出。那时距Windows 3。1发布尚有好几个月。在MFC 1。0中还没有文
档/视结构,但有类CObject和CArchive。在12个月之后,MFC 2。0随
Microsoft新的编程工具Visual C++ 1。0一道出炉。与MFC 1。0一样,
MFC 2。0仍是16位的,因为32位的Windows NT 3。1直到1993年7月才问
世。在MFC 2。0中,增加了对文档/视结构、OLE 1。0、Windows 3。1公
用对话框的支持和消息映射等。在Windows NT 3。1面世一个月以后,
Microsoft推出了32版本的Visual C++和MFC 2。1,它实际上是MFC
2。0的Win32接口。
最后一个16位的Visual C++编译器是1993年12月推出的Visual C++
1。5,直到今天,一些为Windows 3。1编写16位应用程序的程序员还在
使用这个版本。1994年9月,32位的MFC 3。0伴随着Visual C++ 2。0的
一道面市,在今天的计算机图书市场上,还有着的大量的关于Visual
C++ 2。0和MFC 3。0 的图书出售,因此,你可以想象得出Visual C++
2。0所取得的成功和它所产生的影响。并不象你预想的那样,在
…………………………………………………………Page 11……………………………………………………………
Visual C++ 5。0中包括的MFC版本不是MFC 5。0,而是MFC 4。21。发展
到今天,MFC已发展成一个稳定和涵盖极广的C++类库,为成千上万的
Win32程序员所使用。MFC库是可扩展的,它和Windows技术的最新发
展到目前为止始终是同步的。并且,MFC类库使用了标准的Windows命
名约定和编码格式,所以有经验的Windows SDK程序员很容易过渡到
MFC。MFC结合了Windows SDK编程概念和面向对象的程序设计技术,
从而具有极大灵活性和易用性。
第二节 Visual C++ 5。0的版本及新特性
Visual C++ 5。0是Microsoft于1997年4月推出的最新的Visual C++编
译器,它包括三个版本。各个版本之间的区别如表1。1所示:
第三节 Visual C++ 5。0的新特性
如果你没有使用过Visual C++ 4。x,或者虽然使用过Visual C++
4。x,但对它还不是非常之熟悉,那么你可以跳过这一节的内容,继
续阅读本书的其它内容。在这一节里列举了Visual C++ 5。0中新增的
所有特性,这些内容对熟练掌握了Visual C++ 4。x的程序员来说是很
有用处的,他们可以通过阅读本节了解到Visual C++ 5。0所做的改
进,从而知道自己应该补充的是哪一方面的内容。而对于Visual C++
的初学者和刚入门者来说,了解这些内容就不是那么有必要了,尤其
是当你急切地想进入Visual C++ 5。0的编程实践中去的时候。
表1。1 Visual C++ 5。0的不同版本
版本 特点
学习版 除了代码优化、剖析程序 (一种分析程度的运行时行为
(Learning 的开发工具)和到MFC库的静态链接外,Visual C++ 5。0
Edition) 学习版提供了专业版的其它所有功能。学习版的价格要
比专业版本低很多,这是为了使希望使用Visual C++
5。0来学习C++语言的个人也可以负担得起。但你不可以
使用Visual C++ 5。0学习版来开发供发布的软件,其授
权协议明确禁止这种做法。
专业版 Visual C++ 5。0可用来开发Win32应用程序、服务和控
(Professional 件。在这些应用程序、服务和控件中可使用由操作系统
Edition) 提供的图形用户界面或控制台API。
企业版 可用来开发和调试为Internet或企业内网(intranet)设
(Enterprise 计的客户…服务器应用程序。在Visual C++ 5。0企业版
Edition) 还包括了开发和调试SQL数据库应用程序和简化小组开
发的开发工具。
…………………………………………………………Page 12……………………………………………………………
下面我们分版本来讲述Visual C++ 5。0相对于上一个版本所新增加的
内容:
(1) 专业版
在Visual C++ 5。0专业版中包括如下的新增特性:
C++语言
l 新增下列C++关键字:bool、explicit、false、mutable、true和
typename。
l 允许使用__declspec来声明指定的存储类属性是应用于某一类型
还是某一类型的一个变量。
编译器、链接器和NMAKE
l 编译器添加了对的支持,从而简化了使用对象的C++客户的
开发。为了演示如何使用该特性来支持,新增了如表1。2所示
的示例程序。
表1。2 为演示编译器对的支持而新增的示例程序
示例程序 演示内容
ACDUAL MFC应用程序中双界面的支持
INPROC 进程内自动化服务器
MFCCALC 使用自动化服务器实现的一个简单计算器
EXCEL 单独运行的自动化客户程序。该程序创建一个新的
Microsoft Excel电子表格,并生成饼图。
IDE 单独运行的自动化客户程序。该程序自动操纵
Microsoft Developer Studio
续表1。2
示例程序 演示内容
MAIL 单独运行的自动化客户程序。该程序为Microsoft
Exchange 4。0 自动操纵了MAPI
MMAP 不同接口入口映射宏的使用
…………………………………………………………Page 13……………………………………………………………
LABRADOR ATL的使用。该程序实现了一个没有用户界面的EXE服
务器
FRETHREAD 使用编译器的支持编写多线程客户程序和自由线
程服务器
ALLINONE MAC、STL、ATL和的使用
l 使用/O1选项编译生成的代码大小将比Visual C++ 4。2版小5%到
10%。
l 链接器使用了/FIXED选项来创建更小的供发行的应用程序。因
此,在使用剖析程序时,由于需要重定位信息,链接器必须使
用/PROFILE和/FIXED:NO选项。这同样适用于其它如
BoundsChecker或Purify之类的链接后 (post…link)工具。
l 新增的/EH编译选项可以更有效的控制C++异常