友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
C语言实例教程(PDF格式)-第1部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
?…………………………………………………………Page 1……………………………………………………………
前 言
Visual C++是开发运行于Windows 95和Windows NT环境下的Win32应
用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提
供了完整的编辑、编译和调试工具和建立于Win32 API (Application
Programming Interface)基础上的MFC类库 (Microsoft Foundation
Class Library),从而有效的缩短了Windows应用程序的开发周期。
Windows操作系统本身大部分是使用C/C++语言写成的,而Visual C++
正是使用C/C++语言的Win32应用程序集成开发环境,因此,使用
Visual C++来进行Windows应用程序的开发便有着得天独厚的优势,
学习和掌握Visual C++,也自然地就成为了广大程序设计和开发人员
的迫切需要。
然而,尽管Visual C++使用了C/C++语言,由于Windows应用程序和过
去所熟悉的DOS程序在运行机制上的不同,以及可视化编程工具和常
规的程序开发语言在使用上的差异,再加上Visual C++本身的博大精
深,以至于不少由普通的C或C++语言转移到Visual C++开发环境的程
序开发人员感到不适应。本书以具有C/C++语言基础的读者为对象,
深入浅出地阐述使用Visual C++进行程序开发所需要的基本知识和技
巧。
全书共分为十三章,涵盖了三个部分的内容:
第一部分包括第一章到第三章。这一部分介绍了使用Visual C++进行
Windows程序开发的必备知识,其中
第一章: “Visual C++简介”介绍了Visual C++ 5。0的新增特性,
Microsoft Developer Studio集成开发环境的使用和定制,以及如何
从Visual C++ 5。0的在线文档中获得所需的资料和信息。通过这一
章,读者可以对Visual C++及其所使用的集成开发环境有一个大致的
了解,以为使用Visual C++开发应用程序打下必要的基础。
第二章: “面向对象编程与C++语言”试图分析和介绍一些在使用C++
语言进行面向对象的程序开发的过程中所常见的问题,而不是对C++
语言的完整的讲述。在这一章中,我们旨在通过指出一些可能引起程
序出错的语言问题,来避免读者的编程的过程中犯同样的错误。
第三章: “Win32应用程序设计”讲述了使用SDK和API进行32位
Windows应用程序设计的基本知识,这些知识是正确理解MFC的工作方
式的重要基础。
…………………………………………………………Page 2……………………………………………………………
第二部分包括第四章到第八章。这一部分介绍了如何使用Visual C++
来设计Windows应用程序的用户界面,其中
第四章: “基于对话框的应用程序”以基于对话框的应用程序为例讲
述MFC应用程序框架、应用程序类以及应用程序的消息映射和对话框
类等关于MFC的基本概念。
第五章: “响应用户命令”讲述一般的菜单命令、工具条按钮命令和
快捷键命令的响应和处理。此外,我们在本章了也附带讲述了两种
Windows控件——滑块控件和进度条的消息处理。
第六章: “使用Windows标准控件”讲述了几种标准的Windows控件的
使用。我们并没有在这一章中涵盖了所有的Windows标准控件,而只
是选取了其中一些具有代表性的来讲述,并希望通过它们来阐述使用
Windows标准控件的一般方法。
第七章: “使用ActiveX控件”讲述如何使用新的ActiveX控件来增强
应用程序的功能。作为示例,我们使用了功能强大的多媒体控件
ActiveMovie来完成了一个可以打开多种媒体文件的视频播放器。
第八章: “文档/视结构”讲述了如何在基于文档的应用程序中使用
MFC的文档/视结构,这种结构通过将文档中数据的维护和与用户的接
口相分离,从而使得程序的结构更加合理,更便于维护,同时也便于
实现一些有用的特性,如同一文档的多个视的同步更新等。
第三部分包括第九章到第十三章,在这一部分中,我们挑选了
Windows下的一些编程课题来进行了一些一般性的讨论。其中
第九章: “图形设备接口”讲述了如何通过Windows的设备上下文来
使用画笔、刷子及字体等多种绘图对象来进行图形的绘制和输出。在
讲述的过程中,我们还介绍了一些很有用的编程技巧,如使用路径和
剪辑区域来绘制特殊效果等。
第十章: “MFC通用类”介绍了MFC通用数据类型,它们包括集合类、
字符串类和日期及时间类等。这些通用类使用MFC应用程序的数据管
理和使用更加方便。
第十一章: “异常处理和诊断”介绍了如何处理程序中出现的异常事
件和使用MFC的诊断服务来检查程序中的错误,这些方法对于创建健
壮的和无错的应用程序十分必要。
第十二章: “多线程”介绍了32位编程中线程和进程的概念,以及如
…………………………………………………………Page 3……………………………………………………………
何充分使用Win32环境下的多任务功能。
第十三章: “动态链接库”介绍了动态链接库的创建和使用,以及如
何使用动态链接库来扩展MFC等。
熟悉MFC类库的内容和Win32 API中的有关函数是快速高效地进行
Win32程序设计的必要条件,然而一般情况下我们不可以记住数千个
函数的功能和用法,由于本书篇幅有限,在每一章中也不可能面面俱
到。立足于初中级Visual C++编程人员的实际需要,作者在本书中努
力介绍一些实用的编程技巧,指出一些大多数人在编程时可能犯的错
误,而不是全面的概括性的讲述MFC和Windows程序设计 (当然,本书
中出于完整性的考虑,仍有少量的这一类的概括性文字)。这本书不
是供查阅各个函数和类方法的使用的参考手册,也不是一本C++的教
科书,它完全立足于Visual C++的使用者,力图将他们引入编程的乐
趣中来。 “大而全”不是本书的目的, “少而精”才是我们所力图追
求的。我们希望通过本书的学习,不仅能够让一位对Visual C++少有
所知的C++程序开发人员学会熟练的使用Visual C++进行Win32应用程
序的开发,而且对于初中级Visual C++程序员,也能够从本书中找到
一些值得一看的内容。因此,本书可能会对MFC中的一些内容略去不
谈,但有时候可能会因为需要实现一些有趣的特性而深入到MFC的内
部或者绕过MFC而直接使用Windows API,这些都体现我们在实际编程
中所遇到的真实情况——应用程序的需求有可能多种多样,其实现方
式也不可能是千篇一律。完整地介绍Visual C++的方方面面不可能同
时也不应该是本书的宗旨,本书的任务在于教会读者如何在Visual
C++中使用以 “我”为中心的方式来开发Windows应用程序。
在本书中使用的示例代码都进行了精心的选择,细心的进行了编写和
调试,这也导致了本书的完稿时间一拖再拖。这里,我要感谢本书的
编辑,是他一次又一次的容忍我使用相同的理由来推迟交稿的时间。
此外,还需要感谢和我一同具有我正在使用的这台计算机的几位伙
伴,是他们我才得以以 “独 占”方式使用所有的系统资源来完成本
书。
必须感谢两位朋友的帮忙,否则这本书即使推迟交稿也不可能完成。
在最后的紧要关头,刘斌编写了本书的第十章、第十一章和第十二
章,赵仕健编写了本书的第五章和第八章,此外,他还替我修改了第
四章,并增加了一些很有用的内容,可惜的是,他的一些优秀的工作
成果,毁于一次意外事故中,在那次意外中,位于硬盘的数据,一夜
之间便消失得无影无踪了。
尽管我们细致的对书中的每一行程序进行了反复的调试,但是仍有可
…………………………………………………………Page 4……………………………………………………………
能在最后的一刻还包含着被未被虑及的问题。此外,在将Developer
Studio中的过程粘贴到Word文档的过程中,也有可能出现不该有的笔
误 (确切的说是敲错了键)和疏漏。我们努力避免发生这种情况,但
是,即使它的概率为零仍有可能发生,这就需要读者来批评指正了。
作者
一九九八年七月
…………………………………………………………Page 5……………………………………………………………
目 录
前言
第一章Visual C++简介
第一节 Visual C++和MFC的历史 *
第二节 Visual C++ 5。0的版本及新特性
*
第三节 Visual C++ 5。0的新特性
*
第四节 Developer Studio的使用 *
第五节 获得帮助 *
第六节 自定义Developer Studio *
第二章 面向对象编程与C++语言
第一节 面向对象的编程技术 *
第二节 类的声明和定义 *
第三节 类的继承
*
第四节 多态与虚函数 *
第五节 ClassView和WizardBar *
第三章 Win32应用程序设计
第一节 事件驱动的应用程序 *
第二节 Win32 API和SDK *
第三节 使用SDK编写Windows应用程序 *
第四节 32位编程的特点 *
第四章 基于对话框的应用程序
…………………………………………………………Page 6……………………………………………………………
第一节 使用AppWizard生成应用程序框架 *
第二节 应用程序类 *
第三节 MFC应用程序的消息循环 *
第四节 对话框类 *
第五节 小结 *
第五章 响应用户命令
第一节 菜单消息响应 *
第二节 工具条 *
第三节 快捷键消息响应 *
第四节 滑块控件消息响应 *
第五节 进度条消息响应 *
第六节 上下控件消息响应 *
第六章 使用Windows标准控件
第一节 使用对话框编辑器和ClassWizard *
第二节 所有窗口类的基类:CWnd *
第三节 按钮
*
第四节 静态控件 *
第五节 文本编辑控件 *
第六节 列表框控件 *
第七节 组合框 *
第八节 滚动条控件 *
第七章 使用ActiveX控件
…………………………………………………………Page 7……………………………………………………………
第一节 什么是ActiveX控件 *
第二节 使用ActiveXMovie控件的视频播放器 *
第八章 文档 视结构
/
第一节 文档/视结构概述 *
第二节 使用AppWizard创建框架应用程序 *
第三节 生成文档 *
第四节 生成视 *
第五节 视类
*
第六节 同一文档的多个视
*
第七节 添加对多文档类型的支持 *
第九章 图形设备接口
第一节 设备上下文 *
第二节 画笔对象
*
第三节 刷子对象
*
第四节 字体对象 *
第五节 映射模式
*
第十章 MFC通用类
第一节 数组类 *
第二节 列表类 *
第三节 映射类 *
第四节 字符串类 *
第五节 日期和时间类 *
…………………………………………………………Page 8……………………………………………………………
第十一章 异常处理和诊断
第一节 处理C++异常
*
第二节 MFC异常 *
第三节 诊断服务 *
第十二章 多线程
第一节 创建线程
*
第二节 线程间通信 *
第三节 线程同步
*
第十三章 动态链接库
第一节 概述 *
第二节 创建和使用动态链接库
*
第三节 使用动态链接连库扩展MFC *
附表1 MFC类库层次表
附表2 ASCII码表 (0~127)
附录 虚拟键码
3
…………………………………………………………Page 9……………………………………………………………
第一章Visual C++简介
只要提到在Windows 95和Windows NT下进行32位的应用程序开发,就
不能不提到Visual C++。相比其它的编程工具而言,Visual C++在提
供可视化的编程方法的同时,也适用于编写直接对系统进行底层操作
的程序,其生成代码的质量,也要优于其它的很多开发工具。随
Visual C++所提供的Microsoft基础类库 (Microsoft Foundation
Class Library,简写为MFC),对Windows 95/NT所用的Win32应用程
序接口 (Win32 Application Programming Interface)进行了十分彻
底的封装,这使得可以使用完全的面向对象的方法来进行Windows
95/NT应用程序的开发,从而大量的节省了应用程序的开发周期,降
低了开发成本,也使得Windows程序员从大量的复杂劳动中解救出
来,相信随着对Visual C++了解的逐步深入,你会亲 自感受到这一
点。Visual C++使Windows编程不再深奥和晦涩,而是一件有意义并
且有趣的事情,而且,你并没有因为获得这种方便而牺牲应用程序的
性能。
在本章中,我们将讲述:
l Visual C++和MFC历史
l Visual C++ 5。0的不同版本和它们的区别
l Visual C++ 5。0的新特性
l Visual C++ 5。0集成开发环境的使用
第一节 Visual C++和MFC的历史
Visual C++的核心是Microsoft基础类库,即通常所说的MFC。尽管使
用Visual C++进行编程并不一定要使用MFC,使用MFC也不一定就要使
用Visual C++,Borland C++的新版本也提供了对MFC的支持,然而事
实上,在很多情况下,我们提到Visual C++时指的就是MFC,而提到
MFC时指的也就是Visual C++。因此,当你看到关于Visual C++或是
MFC的资料时,要知道,在绝大多数情况下,它们都是指同一样东
西。
MFC相当彻底的封装了Win32软件开发工具包 (Software Development
Kit,即通常所说的SDK)中的结构、功能,它为编程者提供了一个应
用程序框架,这个应用程序框架为编程者完成了很多Windows编程中
的例行性工作,如管理窗口、菜单和对话框,执行基本的输入和输
…………………………………………………………Page 10……………………………………………………………
出、使用集合类来保存数据对象等等,并且,MFC使得在程序中使用
很多过去很专业、很复杂的编程课题,如ActiveX、OLE、本地数据库
和开放式数据库互联 (Open Database Connectivity,简写为ODBC)、
Windows套接字和Internet应用程序设计等,以及其它的应用程序界
面特性,如属性页(也叫标签对话框)、打印和打印预览、浮动的和可
定制的工具条变得更加的容易。
早在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++
的初学者和刚入门者来说,了解这些内容就不是那么有必要了,尤其
�
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!