资源说明:Visual C++ 6.0 程序设计从入门到精通
求是科技 王正军 编著
人民邮电出版社
图书在版编目(CIP)数据
Visual C++6.0 程序设计从入门到精通/求是科技编著.—北京:人民邮电出版社,2006.1
ISBN 7-115-14137-1
Ⅰ.V… Ⅱ.求… Ⅲ.C 语言—程序设计 Ⅳ.TP312
中国版本图书馆CIP 数据核字(2005)第130000 号
内 容 提 要
本书首先从Visual C++ 6.0 的基础知识入手,详细介绍了Visual C++6.0 的操作环境和应用程序的基本
框架,然后按照由易到难、由浅入深地顺序介绍了用Visual C++6.0 开发Windows 程序的方法,包括菜单和
加速键、对话框、常用控件、文本和字体类、图形图像、文件操作、多线程、动态连接库、网络编程和数据
库开发等内容。书中在每一个对应的知识点后面,给出了一个或多个示例。
本书适合想按部就班地学习Visual C++ 6.0 编程并很快应用到实践中的初学者阅读。
Visual C++ 6.0 程序设计从入门到精通
¨ 编著求是科技 王正军
责任编辑张立科
¨ 人民邮电出版社出版发行北京市崇文区夕照寺街14 号
邮编 100061 电子函件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
北京鸿佳印刷厂印刷
新华书店总店北京发行所经销
¨ 开本:787×1092 1/16
印张:23.75
字数:579 千字 2006 年1 月第1 版
印数:1 – 6 000 册 2006 年1 月北京第1 次印刷
ISBN 7-115-14137-1/TP·5056
定价:39.00 元(附光盘)
读者服务热线:(010)67132692 印装质量热线:(010)67129223
前 言
随着计算机技术的发展,可视编程技术占有了越来越重要的作用。Visual C++ 6.0 是微软
公司的重要产品—Visual Studio 工具集的组成部分。它用来在Windows(包括Windows 95、
Windows 98、Windows NT、Windows 2000 等)环境下开发应用程序,是一种功能强大、行
之有效的可视化编程工具,因此成为广大软件开发人员的首选。
本书为希望学习Visual C++的初学者而编写,按照由浅入深、循序渐进的顺序介绍了
Visual C++编程的相关方法和技巧。在介绍过程中,还在相应的知识点后给出了1 个或多个
相关的示例,以帮助读者尽快将所学知识应用到实践中。
全书的安排如下。
第1 章 主要介绍了Visual C++ 6.0 的集成开发环境(IDE),让读者对Visual C++先有
一个初步印象和了解。
第2 章 主要介绍在AppWizard 工具中创建应用程序框架的步骤,然后介绍生成的工程
文件中各部分所包含的类及相互间的关系,并着重阐述应用程序框架及整个应用程序的运行
机理。
第3 章 主要介绍了Windows 界面设计的两个基本元素—菜单和加速键的设计和使
用,同时还介绍了Windows 消息驱动机制的概念和遵循这一机制的程序设计方法。
第4 章 主要介绍了对话框的一般创建流程,模态和非模态的对话框、属性页对话框、
各种通用对话框以及消息对话框的使用方法。
第5 章 主要介绍了MFC 编程中常用控件的设计方法,包括传统的Windows 控件和新
型的Win32 控件。
第6 章 主要介绍了Windows GDI 输出文本和字体的方法。
第7 章 主要介绍了Windows 基本的绘图函数和主要的GDI 对象。
第8 章 主要通过示例介绍在MFC 中对文件进行操作的方法,包括串行化、CFile 文件
操作和文件对话框3 部分内容。
第9 章 主要介绍Windows 操作系统下多线程的基本概念、创建管理线程的方法,以及
线程的同步问题。
第10 章 主要介绍了在Visual C++平台下进行Win32 动态链接库的设计和应用。
第11 章 主要介绍了网络编程的基本知识及基本步骤,并且详细介绍了WinSock 类。
第12 章 主要介绍了数据库的基本概念和数据库开发的几种主要技术、Access 数据库
的创建和维护以及SQL 语句的基本知识。
在本书的编写过程中,借鉴了许多现行教材的宝贵经验,在此,谨向这些作者表示诚挚
的感谢。由于时间仓促,加之编者水平有限,书中难免有谬误或不足之处,敬请广大读者批
评指正。
编者
目 录
第1 章 Visual C++ 6.0 开发环境介绍.......................................................................................... 1
1.1 Visual C++ 6.0 概述....................................................................................................... 1
1.2 Visual C++ 6.0 的主要特点........................................................................................... 1
1.3 Visual C++ 6.0 主框架窗口........................................................................................... 3
1.3.1 工作区和客户区................................................................................................. 3
1.3.2 菜单栏................................................................................................................. 4
1.3.3 工具栏................................................................................................................. 4
1.3.4 输出窗口............................................................................................................... 4
1.4 资源编辑器...................................................................................................................... 4
1.5 本章小结.......................................................................................................................... 5
第2 章 应用程序基本框架......................................................................................................... 6
2.1 利用MFC AppWizard 自动生成应用程序................................................................... 6
2.1.1 关于工程及工作区的概念................................................................................. 6
2.1.2 利用向导生成应用程序框架............................................................................... 6
2.1.3 Visual C++工程文件的组成............................................................................... 12
2.2 程序的应用框架和运行过程........................................................................................ 14
2.2.1 应用框架............................................................................................................. 14
2.2.2 程序的运行过程................................................................................................. 15
2.3 应用程序类及其主要成员函数.................................................................................... 18
2.3.1 InitInstance()函数................................................................................................ 19
2.3.2 Run()函数............................................................................................................ 21
2.3.3 ExitInstance()函数.............................................................................................. 22
2.3.4 OnIdle()函数....................................................................................................... 22
2.4 文档类和视图类............................................................................................................ 23
2.4.1 文档类................................................................................................................. 23
2.4.2 视图类................................................................................................................. 25
2.4.3 文档类与视图类的相互关系............................................................................. 26
2.4.4 单文档(SDI)与多文档(MDI)应用程序................................................... 28
2.5 窗口类及其控件栏........................................................................................................ 30
2.5.1 主窗口类............................................................................................................. 30
2.5.2 子窗口类............................................................................................................. 31
2.5.3 工具栏................................................................................................................. 33
2.5.4 状态栏................................................................................................................. 36
2.6 应用程序框架中各类对象间的关系............................................................................ 40
2.7 本章小结........................................................................................................................ 41
Visual C++ 6.0 程序设计从入门到精通
·2·
第3 章 菜单与加速键................................................................................................................. 42
3.1 消息与事件.................................................................................................................... 42
3.1.1 事件驱动机制..................................................................................................... 42
3.1.2 消息和消息映射................................................................................................. 42
3.1.3 消息处理过程..................................................................................................... 46
3.2 菜单和加速键的创建.................................................................................................... 47
3.2.1 菜单的创建......................................................................................................... 47
3.2.2 加速键的创建..................................................................................................... 49
3.3 添加菜单所需处理函数................................................................................................ 51
3.3.1 添加普通菜单的处理函数................................................................................. 52
3.3.2 添加弹出式菜单的处理函数............................................................................. 57
3.4 创建加速键.................................................................................................................... 59
3.5 本章小结........................................................................................................................ 60
第4 章 对话框............................................................................................................................. 61
4.1 对话框的创建................................................................................................................ 61
4.1.1 对话框的创建流程............................................................................................. 61
4.1.2 创建对话框资源................................................................................................. 62
4.1.3 创建对话框类..................................................................................................... 67
4.2 模态对话框.................................................................................................................... 73
4.3 非模态对话框................................................................................................................ 74
4.4 属性页对话框................................................................................................................ 77
4.4.1 主要相关类介绍................................................................................................. 78
4.4.2 向导对话框的创建步骤..................................................................................... 82
4.4.3 一般属性页对话框的创建步骤......................................................................... 88
4.5 通用对话框.................................................................................................................... 88
4.5.1 打印设置对话框................................................................................................. 89
4.5.2 页面设置对话框................................................................................................. 90
4.5.3 查找对话框......................................................................................................... 91
4.5.4 文件对话框......................................................................................................... 94
4.5.5 字体对话框......................................................................................................... 95
4.5.6 颜色对话框......................................................................................................... 96
4.6 消息对话框.................................................................................................................... 97
4.7 本章小结........................................................................................................................ 98
第5 章 常用控件......................................................................................................................... 99
5.1 静态文本(Static text)控件........................................................................................ 99
5.1.1 传统控件通知消息........................................................................................... 100
5.1.2 静态控件的使用............................................................................................... 101
5.1.3 Cstatic 类的主要成员函数............................................................................... 101
5.2 文本编辑(Edit Box)控件........................................................................................ 103
目录
·3·
5.2.1 文本编辑控件的使用....................................................................................... 103
5.2.2 Cedit 类的主要成员函数.................................................................................. 104
5.3 滚动条(Scroll Bar)控件.......................................................................................... 108
5.3.1 滚动条控件的使用........................................................................................... 108
5.3.2 CscrollBar 类的主要成员函数......................................................................... 109
5.4 按钮(Button、Radio Box、Check Box、Group Box)控件................................... 111
5.4.1 按钮控件的使用............................................................................................... 111
5.4.2 Cbutton 类的主要成员函数............................................................................. 112
5.5 列表框(List Box)控件............................................................................................ 117
5.5.1 列表框控件的使用........................................................................................... 117
5.5.2 ClistBox 类的主要成员函数............................................................................ 119
5.6 组合框(Combo box)控件....................................................................................... 122
5.6.1 组合框控件的使用........................................................................................... 122
5.6.2 CcomboBox 类的主要成员函数...................................................................... 124
5.7 图片(Picture)控件................................................................................................... 125
5.8 列表(List Ctrl)控件................................................................................................. 128
5.8.1 Win32 新型控件概述....................................................................................... 128
5.8.2 列表控件的使用............................................................................................... 129
5.8.3 ClistCtrl 类的主要成员函数............................................................................ 133
5.9 树型(Tree Ctrl)控件................................................................................................ 135
5.9.1 树型控件的使用............................................................................................... 135
5.9.2 CtreeCtrl 类的主要成员函数........................................................................... 139
5.9.3 树型控件的通知消息....................................................................................... 141
5.10 选项卡(Tab Ctrl)控件........................................................................................... 141
5.10.1 选项卡控件的使用......................................................................................... 141
5.10.2 选项卡控件通知消息..................................................................................... 142
5.11 本章小结.................................................................................................................... 145
第6 章 文本和字体类............................................................................................................... 146
6.1 基础知识介绍.............................................................................................................. 146
6.2 CFont 类....................................................................................................................... 146
6.2.1 概述................................................................................................................... 146
6.2.2 主要成员函数................................................................................................... 147
6.3 文本输出过程.............................................................................................................. 151
6.4 字体和文本输出实例.................................................................................................. 153
6.5 本章小结...................................................................................................................... 161
第7 章 图形图像....................................................................................................................... 162
7.1 绘图的基础知识.......................................................................................................... 162
7.2 屏幕绘图的主要函数.................................................................................................. 163
7.3 图形设备接口(GDI) ............................................................................................... 165
Visual C++ 6.0 程序设计从入门到精通
·4·
7.3.1 设备环境类(CDC)....................................................................................... 165
7.3.2 GDI 对象........................................................................................................... 166
7.4 画笔和画刷.................................................................................................................. 166
7.4.1 画笔................................................................................................................... 167
7.4.2 画刷................................................................................................................... 171
7.5 本章小结...................................................................................................................... 173
第8 章 文件操作....................................................................................................................... 174
8.1 串行化基础知识.......................................................................................................... 174
8.1.1 文档类............................................................................................................... 174
8.1.2 Serialize()函数.................................................................................................. 177
8.1.3 CArchive 类....................................................................................................... 180
8.1.4 加入串行化代码............................................................................................... 182
8.2 文件CFile 类............................................................................................................... 186
8.2.1 打开操作........................................................................................................... 188
8.2.2 读写操作........................................................................................................... 190
8.2.3 定位操作........................................................................................................... 192
8.2.4 关闭操作........................................................................................................... 194
8.2.5 异常操作........................................................................................................... 195
8.2.6 管理操作........................................................................................................... 197
8.3 文件对话框.................................................................................................................. 203
8.3.1 多选文件对话框............................................................................................... 203
8.3.2 重载文件对话框............................................................................................... 204
8.4 本章小结...................................................................................................................... 206
第9 章 多线程........................................................................................................................... 207
9.1 多线程的基本概念...................................................................................................... 207
9.2 两种重要的线程.......................................................................................................... 207
9.2.1 用户界面线程................................................................................................... 207
9.2.2 工作者线程....................................................................................................... 208
9.3 线程的操作.................................................................................................................. 208
9.3.1 线程的创建....................................................................................................... 208
9.3.2 线程的终止....................................................................................................... 211
9.3.3 线程的管理和操作........................................................................................... 212
9.3.4 线程间的通信................................................................................................... 229
9.3.5 线程的同步....................................................................................................... 234
9.3.6 示例:串口通信............................................................................................... 243
9.4 本章小结...................................................................................................................... 250
第10 章 动态链接库................................................................................................................. 251
10.1 动态链接库的基础知识............................................................................................ 251
目录
·5·
10.2 DLL 的出入口函数................................................................................................... 252
10.2.1 DllMain()函数................................................................................................. 253
10.2.2 DLL 的导出函数............................................................................................ 255
10.3 两种链接DLL 的方式.............................................................................................. 257
10.3.1 隐式链接......................................................................................................... 257
10.3.2 显式链接......................................................................................................... 258
10.4 开发DLL ................................................................................................................... 259
10.4.1 创建Non-MFC DLL 动态链接库.................................................................. 259
10.4.2 MFC AppWizard[dll]方式生成常规/扩展DLL............................................. 261
10.4.3 导出函数调用约定......................................................................................... 261
10.4.4 模块定义文件(DEF 文件)......................................................................... 264
10.5 动态链接库中的资源................................................................................................ 264
10.6 界面汉化示例............................................................................................................ 267
10.7 使用钩子(Hook)函数........................................................................................... 271
10.7.1 钩子函数的类型............................................................................................. 271
10.7.2 使用钩子函数................................................................................................. 273
10.7.3 鼠标钩子应用实例......................................................................................... 274
10.7.4 键盘钩子应用实例......................................................................................... 278
10.8 本章小结.................................................................................................................... 279
第11 章 网络编程..................................................................................................................... 280
11.1 网络编程的基础知识................................................................................................ 280
11.1.1 Socket 简介..................................................................................................... 280
11.1.2 Windows 套接字规范简介............................................................................. 280
11.2 网络应用程序............................................................................................................ 281
11.2.1 网络应用程序的基本模型............................................................................. 281
11.2.2 建立套接字对象............................................................................................. 282
11.2.3 绑定地址......................................................................................................... 283
11.2.4 建立连接......................................................................................................... 283
11.2.5 监听socket ...................................................................................................... 284
11.2.6 数据传输......................................................................................................... 284
11.3 WinSock 类................................................................................................................ 285
11.3.1 CAsyncSocket 类............................................................................................. 285
11.3.2 CSocket 类....................................................................................................... 286
11.4 网络编程的实现........................................................................................................ 288
11.4.1 程序设计的基本任务..................................................................................... 288
11.4.2 服务器端程序设计......................................................................................... 288
11.4.3 客户端程序设计............................................................................................. 309
11.5 利用 MSComm 控件进行串口编程........................................................................ 322
11.5.1 MSComm 控件介绍........................................................................................ 322
Visual C++ 6.0 程序设计从入门到精通
·6·
11.5.2 利用MSComm 控件编程的基本流程........................................................... 323
11.5.3 利用MSComm 进行串口通信....................................................................... 324
11.6 本章小结.................................................................................................................... 328
第12 章 数据库开发................................................................................................................. 329
12.1 概述............................................................................................................................ 329
12.1.1 数据库的基本概念......................................................................................... 329
12.1.2 数据库相关技术介绍..................................................................................... 330
12.1.3 数据库应用程序的开发步骤......................................................................... 331
12.1.4 选择数据库管理系统的原则......................................................................... 332
12.2 设计创建和维护Access 数据库............................................................................... 333
12.2.1 创建Access 数据库........................................................................................ 334
12.2.2 创建数据表..................................................................................................... 334
12.2.3 设计和修改数据表的结构............................................................................. 335
12.2.4 设置表之间的关系......................................................................................... 336
12.2.5 编辑管理数据库记录..................................................................................... 338
12.3 标准的SQL 语句....................................................................................................... 340
12.3.1 SQL 的基本知识............................................................................................. 340
12.3.2 基本的SQL 语句............................................................................................ 341
12.3.3 关系数据库的联合查询技术......................................................................... 342
12.4 ADO 基础知识.......................................................................................................... 343
12.4.1 ADO 的技术特点........................................................................................... 344
12.4.2 ADO 的结构................................................................................................... 344
12.5 ADO 的对象和集合.................................................................................................. 345
12.5.1 连接对象......................................................................................................... 345
12.5.2 命令对象......................................................................................................... 346
12.5.3 记录集对象..................................................................................................... 346
12.5.4 ADO 的其他对象........................................................................................... 347
12.5.5 集合................................................................................................................. 349
12.6 数据库操作................................................................................................................ 350
12.6.1 动态链接库的引入和OLE/COM 库的初始化............................................. 351
12.6.2 ADO 与数据库的连接.................................................................................... 351
12.6.3 获得和遍历记录集......................................................................................... 352
12.6.4 对记录的操作................................................................................................. 354
12.6.5 关闭记录集..................................................................................................... 355
12.7 利用ADO 查询并操作数据库实例.......................................................................... 355
12.8 本章小结.................................................................................................................... 370
第1 章 Visual C++ 6.0 开发环境介绍
1.1 Visual C++ 6.0 概述
Visual C++是微软公司的重要产品之一—Visual Studio 工具集的重要组成部分。它用来
在Windows(包括Windows 95、Windows 98、Windows NT、Windows 2000 等)环境下开发
应用程序,是一种功能强大、行之有效的可视化编程工具。Visual C++以可视化技术为基础,
以C++语言为蓝本,以众多的集成工具为骨架,在计算机领域的诸多方面都发挥着重要的作
用。其以实用的开发环境和集成的工具集让用户高效率地开发应用程序。
Visual C++提供了MFC 类库,使用户可以很方便地开发自己想实现的功能。与Turbo C
等工具相比,Visual C++完成目标(尤其对于图形界面的程序)所花费的时间要少得多。
Visual C++ 6.0 是微软公司推出的Visual C++开发工具的6.0 版本,发行于Microsoft 的
Visual Studio 6.0 套装软件中。该工具在速度和代码量要求较高的场合中是首选工具。Visual
C++ 6.0 在以前版本的基础上又增加了许多特性。除了支持Internet 特性外,ADO 数据绑定、
ATL 复合控件、Auto Completion、编辑和继续特性、OLE-DB 提供者模块、延迟加载移入以
及新的调试特性等都给Visual C++6.0 增色不少。开发者可以充分利用Visual C++ 6.0 的这些
特性,构建出自己的Windows 应用程序。
1.2 Visual C++ 6.0 的主要特点
Visual C++ 6.0 中的MFC 类库和以前的版本中相比没有做太大的改进,只是增加了对微
软公司的IntelliMouse(智能鼠标)的支持,但Visual C++集成开发环境中做了一些改进,增
加了一些新特性,使其更易于使用。这些新特性包括以下几个方面。
1.自动化和宏功能
自动化(Automation)功能用于实现一些重复性过程和工作。宏记录功能可以根据用户
的操作自动生成宏操作序列。Visual Studio 及其组件都可以看作对象来处理,这意味着可以
进行自动化和诸如打开、编辑、关闭文档和调整窗口等操作。
2.可定制的工具栏和菜单
可以灵活地定制菜单和工具栏,使其更适合工作需要。如可以创建新的工具条和菜单(增
加、删除菜单命令和工具条按钮等)。
Visual C++ 6.0 程序设计从入门到精通
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。