Visual C++ 6.0
应用编程 150 例
尹立民 王兴东 等编著
内 容 提 要
本书主要是为具有一定 Visual C++应用基础的读者编写的,全书通过 150 个实例,全面、深入地介绍
了利用 Visual C++ 6.0 开发应用程序的常用方法和技巧。全书共分为 6 章,主要讲解了 Visual C++ 6.0 中
界面效果、图形图像处理、文件与系统功能控制、控件应用与 MFC 编程、数据库开发等内容。这些实例
简单实用、典型性强、功能突出,很多实例使用的技术可以解决一类问题,读者在掌握实例中的技术或技
巧后,使用这些技术可以试着实现更复杂的功能、应用到更多方面。
本书内容丰富、结构合理,叙述简明,可以作为广大编程爱好者提高编程水平的自学教材,也可以供
程序开发人员和大专院校有关师生作为参考资料。
未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。
版权所有,侵权必究。
图书在版编目(CIP)数据
Visual C++ 6.0 应用编程 150 例/尹立民编著.—北京:电子工业出版社,2004.3
(编程沙龙丛书)
ISBN 7-5053-9674-9
Ⅰ.V... Ⅱ.尹... Ⅲ.C 语言-程序设计 Ⅳ.TP312
中国版本图书馆 CIP 数据核字(2004)第 011551 号
责任编辑: 张瑞喜
印 刷: 北京市天竺颖华印刷厂
出版发行: 电子工业出版社出版
北京市海淀区万寿路 173 信箱 邮编 100036
经 销: 各地新华书店
开 本: 787×1092 1/16 印张:31 字数:678 千字
印 次: 2004 年 7 月第 2 次印刷
印 数: 6001~8000 册 定价:42.00 元
凡购买电子工业出版社的图书,如有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部
联系。联系电话:(010)68279077。质量投诉请发邮件至 zlts@phei.com.cn,盗版侵权举报请发邮件至
dbqq@phei.com.cn。
策划说明
很多初学编程的读者,在看过一些讲述基础应用的书籍后学会了软件的基本操作,或
者在学校里学习了一些基本编程语言之后,常常陷入困境——对进一步的应用一知半解,
对用该软件进行开发并完成一项具体的课题或项目感到困难和茫然。一些指导开发的实例
图书所讲的实例往往是工程实例,对一些基本的编程模块着墨甚少,使读者学起来很吃力。
《编程沙龙》丛书就是在这样的情况下产生的,我们希望这套丛书能够交给广大初学编程
的读者一把钥匙,使大家能够快速掌握软件开发技术并能切实投入实际应用。
本套丛书将那些庞大的应用开发实例分解成 150 个小的开发实例模块,并以实例为主
线,引导读者步步深入,掌握各种开发语言和开发工具的应用。每本书的实例均以“应用”
和“编程”为主题,绝大部分实例都可以完整地实现一个功能。读者通过对这些小的编程
实例进行模仿和变化,可以学会利用自己学到的基础知识编写简单的实际应用案例。当然
在理解范例的讲解过程中,读者又会学到新的软件开发技术,并且进一步扩展,从而在学
习实例的过程中得到了双重提高——一方面把自己以前掌握的知识应用到实例上;另一方
面从这些实例中又可以学习到新的知识,最后达到融会贯通的目的。
本套丛书的作者都是长期从事软件开发实践的一线程序员,他们对这些实例的编程要
点进行了简单明了的总结,对实例的扩展应用进行了画龙点睛的提示,这些宝贵经验对于
读者深入掌握书中实例所包含的技术知识是非常有益的。
需要特别说明的是,如果读者对编程是一个完全的新手,直接阅读这套书是有一定困
难的。建议读者在学习这套书之前,首先学习编程的基础知识(在此,向您推荐我们出版的
《新世纪电脑应用培训教程》系列中有关程序设计培训教程的图书)。
《编程沙龙》丛书首批推出了 6 本,内容涵盖目前主流编程软件:Visual Basic.NET、
Visual C#.NET、Visual C++.NET、Visual FoxPro、Delphi 及 Java 等,出版后受到了读者的
欢迎。很多读者反映希望出版 Visual Stutio 6.0 方面的实例书,为此,我们又组织了《Visual
Basic 6.0 应用编程 150 例》、《Visual C++ 6.0 应用编程 150 例》,以及 ASP、网页特效应用
编程等方面的实例图书,希望能满足不同读者多方面的需求。
今后我们还会根据读者的反馈和技术的发展推出更多新的品种。
我们将这套丛书命名为“编程沙龙”,也希望借此机会建立一个与学习编程和从事编程
工作的读者交流的真正的沙龙,让我们一起交流,共同进步!
把你编程的经验与困难告诉我们,把你学习的快乐与苦恼告诉我们,那么下一批“编
程沙龙”的书中,闪耀的将是你的智慧!
编 者
2004 年 1 月
实例源代码下载说明
为了最大限度地降低读者的购书成本,本书中的实例源代码可免费从网上下载。
网 址:http://www.firstarcicl.com.cn
编程沙龙丛书已出版以下品种:
书 号
TP8937
TP8947
TP8946
TP8936
TP9367
TP9142
TP9673
TP9674
书 名
Visual Basic.NET 应用编程 150 例
Delphi 7 应用编程 150 例
Visual C++.NET 应用编程 150 例
Visual C#.NET 应用编程 150 例
Visual FoxPro 7.0 应用编程 150 例
Java 2 应用编程 150 例
Visual Basic 6.0 应用编程 150 例
Visual C++ 6.0 应用编程 150 例
定 价
¥38.00
¥36.00
¥35.00
¥35.00
¥48.00
¥42.00
¥39.00
¥42.00
各册图书的实例代码均可从 http://www.firstarcicl.com.cn 之“资源下载”栏目中免费下
载,另有:
Visual Studio .NET 安装与设置
Visual Studio .NET 实例运行的条件
《Visual FoxPro 7.0 应用编程 150 例》说明文件
等超值服务文件免费供读者学习参考,敬请随时关注网站内容更新。
如果读者下载源代码有困难,可来信来电与我们联系,联系方法如下。
地 址:北京市海淀区玉渊潭南路 85 号君安写字楼 4 层
邮 编:100036
电 话:(010)68253127
联 系 人:鄂卫华
服务邮箱:lilye@phei.com.cn
编辑邮箱:zhangruixi@phei.com.cn
前 言
Visual C++ 6.0 是运行于 Windows 平台上的可视化集成开发环境,它是 Microsoft 公司
开发的 Microsoft Visual Studio 系列的一部分。Visual C++ 6.0 集程序的界面设计、代码编辑、
编译、连接和调试等功能于一体,为编程人员提供了一个方便而又完整的开发界面和许多
有效的辅助开发工具。
本书通过 150 个编程实例,介绍了以下技术内容。
第 1 章通过 20 个实例演示如何利用 Visual C++ 6.0 来美化应用程序的界面,主要内容
包括半透明的对话框、显示图标的菜单、异型窗口、切分窗口、动画效果窗口等。通过本
章的学习,可以轻松实现别具匠心的界面效果,增强人机交互功能。
第 2 章通过 30 个实例介绍图形图像处理技术,包括橡皮筋功能、透明图像、捕捉屏幕
图像、文字的旋转、图像平铺形状、创建线性梯度、演示多种风格的端点和绘制自定义虚
线等。掌握这些内容,可以绘制非常复杂的图形,满足常用的图形图像处理要求。
第 3 章通过 31 个实例介绍了文件处理和系统控制技术,内容涵盖了系统右键菜单的修
改、程序的互斥运行、读写 ini 文件、设置程序热键、应用 CFile 和 CStdioFile 类读写文件、
序列化数据、向 IE 工具栏上添加按钮等。通过本章可以掌握基本的文件处理功能,并且能
够实现一些系统控制功能。
第 4 章通过 24 个实例介绍了控件和 MFC 类编程技术,主要内容包括用 Animate 控件
播放 AVI 动画、动态创建控件、List Control 和 Tree Control 控件操作列表信息、操作字符
串、链表的遍历和查找、通用对话框等。
第 5 章通过 22 个实例介绍了数据库开发过程中经常用到的一些技巧和编程方法,包括
应用 DAO 获取数据库信息、动态创建数据库、自定义 CRecordset 类、执行 SQL 语句、记
录的筛选和排序等。通过本章的学习读者可以掌握常用的数据库处理功能,从而为实现更
加复杂的数据库操作打下良好基础。
第 6 章通过 23 个实例介绍了 Visual C++ 6.0 中其他技术的应用实例,主要内容包括用
OPENGL 制作简单的动画、如何建立 OLE 容器程序、MMControl 控件播放多媒体、rtf 文
件的显示、在局域网内使用信使服务、递归调用和枚举对话框上的所有控件等。
参加本书编写的主要人员有:尹立民、王兴东、吴静、马骁、王兴艳、樊琳、尹立宏、
王二丽、王容、娄竞秋、李娜、冯欢、谭旭东、汪宝明、刘仙等。由于编写时间紧,作者
水平有限,书中难免存在一些不足之处,恳请读者批评指正。
作者的电子邮箱:yinlimin@sina.com
作者
2004 年 1 月
目 录
第 1 章 界面编程实例....................................................................................1
实例 1 为单文档程序制作真彩色启动封面 ......................................................................2
实例 2 为对话框程序制作真彩色启动封面 ......................................................................2
实例 3 在菜单中显示图标 ..................................................................................................3
实例 4 制作圆角矩形窗口 ..................................................................................................6
实例 5 静态切分窗口 ..........................................................................................................8
实例 6 在切分窗口中使用多个视类 ................................................................................11
实例 7 动态切分窗口 ........................................................................................................13
实例 8 设计字符形状的窗口 ............................................................................................15
实例 9 窗口的动画效果 ....................................................................................................18
实例 10 设置窗口的光标 ..................................................................................................21
实例 11 为对话框添加主菜单 ..........................................................................................24
实例 12 带有工具栏的对话框 ..........................................................................................26
实例 13 为对话框添加状态条 ..........................................................................................28
实例 14 添加对话框条 ......................................................................................................31
实例 15 在窗口中应用“橡皮带” ..................................................................................32
实例 16 为对话框添加右键菜单 ......................................................................................36
实例 17 动态设置窗口的图标 ..........................................................................................40
实例 18 为应用程序添加多语言菜单 ..............................................................................41
实例 19 在窗口的状态栏中显示时间 ..............................................................................45
实例 20 显示半透明的对话框窗口 ..................................................................................49
第 2 章 图形图像处理实例 ..........................................................................51
实例 21 在绘图过程中捕获鼠标 ......................................................................................52
实例 22 橡皮筋功能的实现 ..............................................................................................56
实例 23 显示透明图像 ......................................................................................................59
实例 24 捕捉屏幕图像 ......................................................................................................63
实例 25 创建逻辑字体 ......................................................................................................68
实例 26 显示资源中的位图 ..............................................................................................72
实例 27 显示磁盘上的外部 BMP 文件............................................................................72
·5·
实例 28 以透明图像构造窗口形状 ..................................................................................74
实例 29 空心字体效果演示 ..............................................................................................79
实例 30 显示动画光标 ......................................................................................................82
实例 31 在剪辑路径内绘图 ..............................................................................................85
实例 32 绘制颜色渐变的图形 ..........................................................................................88
实例 33 旋转文本 ..............................................................................................................92
实例 34 绘制旋转效果的图形 ..........................................................................................96
实例 35 枚举字体 ..............................................................................................................99
实例 36 用图像平铺形状 ................................................................................................102
实例 37 图案填充的文字 ................................................................................................107
实例 38 在一个区域中剪辑 ............................................................................................110
实例 39 创建线性梯度 ....................................................................................................114
实例 40 多种风格的端点 ................................................................................................117
实例 41 使用颜色矩阵设置图像中的 Alpha .................................................................120
实例 42 绘制半透明线条 ................................................................................................124
实例 43 创建轨迹梯度 ....................................................................................................128
实例 44 使用颜色再变换表 ............................................................................................131
实例 45 绘制自定义虚线 ................................................................................................135
实例 46 旋转和扭曲图像 ................................................................................................138
实例 47 字符路径 ............................................................................................................141
实例 48 绘制用纹理填充的图形 ....................................................................................144
实例 49 绘制基数样条 ....................................................................................................147
实例 50 显示 JPG 和 GIF 图像.......................................................................................150
第 3 章 文件与系统控制编程实例.............................................................. 153
实例 51 系统右键菜单的修改 ........................................................................................154
实例 52 程序的互斥运行 ................................................................................................156
实例 53 禁止用户关闭 Windows....................................................................................159
实例 54 读写 ini 文件......................................................................................................162
实例 55 设置程序热键 ....................................................................................................164
实例 56 获取系统的实时时间 ........................................................................................167
实例 57 列举系统中有效的驱动器 ................................................................................169
实例 58 关闭操作系统 ....................................................................................................172
实例 59 用 CFile 类进行文件读写 .................................................................................176
实例 60 用 CStdioFile 类进行文件读写.........................................................................178
实例 61 序列化数据 ........................................................................................................180
实例 62 获取环境变量 ....................................................................................................183
实例 63 获取文件属性 ....................................................................................................187
·6·
实例 64 获取系统文件夹的路径 ....................................................................................190
实例 65 查找文件 ............................................................................................................193
实例 66 向 IE 工具栏上添加按钮(1)..............................................................................196
实例 67 向 IE 工具栏上添加按钮(2)..............................................................................200
实例 68 获取扩展名对应的图标 ....................................................................................201
实例 69 将文件删除到回收站 ........................................................................................204
实例 70 获得 Windows 2000 中用户名称列表..............................................................207
实例 71 获取所有进程的路径信息 ................................................................................215
实例 72 调用指定的 Windows 程序...............................................................................220
实例 73 建立运行后会自动删除自己的程序 ................................................................225
实例 74 文件关联 ............................................................................................................227
实例 75 建立快捷方式 ....................................................................................................230
实例 76 创建线程 ............................................................................................................236
实例 77 用全局变量在线程间通信 ................................................................................239
实例 78 用自定义消息在线程间通信 ............................................................................242
实例 79 用 Event 对象在线程间通信.............................................................................245
实例 80 模拟键盘操作 ....................................................................................................248
实例 81 模拟鼠标操作 ....................................................................................................251
第 4 章 控件与 MFC 编程实例 ..................................................................255
实例 82 用 Edit Box 显示当前时间................................................................................256
实例 83 用 Animate 控件播放 AVI 动画........................................................................256
实例 84 应用 Tab Control 制作复杂界面.......................................................................259
实例 85 动态创建按钮 ....................................................................................................263
实例 86 在 List Box 中显示列表信息 ............................................................................263
实例 87 用 Combo Box 控件显示列表信息...................................................................267
实例 88 用 Tree Control 中显示分级信息......................................................................271
实例 89 用 List Control 中显示信息...............................................................................276
实例 90 用 IP Address 控件编辑 IP 地址 .......................................................................281
实例 91 用 Rich Edit 控件编辑文档...............................................................................284
实例 92 用 Date Time Picker 选择时间 ..........................................................................289
实例 93 Slider 控件的应用 .............................................................................................292
实例 94 应用 Hot Key 控件设置热键 ............................................................................297
实例 95 字符串的格式化 ................................................................................................301
实例 96 字符串的查找和提取 ........................................................................................303
实例 97 CArray 类的应用 ...............................................................................................305
实例 98 读写 CTypedPtrArray 类 ...................................................................................307
实例 99 应用 CPtrArray 类进行数据存储 .....................................................................310
·7·