第1部分 Visual C++编程入门 1
第1章 Windows编程入门 2
1.1 Windows开发简介 2
1.1.1 Windows应用编程接口(API) 2
1.1.2 软件开发工具包(SDK) 3
1.2 Windows编程基础知识 3
1.2.1 Windows编程的基本概念 3
1.2.2 Windows应用程序框架结构 6
1.3 Visual C++编程库概要 12
1.3.1 C++标准库 12
1.3.2 C运行时(CRT)库 15
1.3.3 活动模板库(ATL) 15
1.3.4 微软基础库(MFC) 16
1.4 Visual C++6.0使用介绍 16
1.4.1 Visual C++6.0简介 16
1.4.2 Visual C++6.0集成开发环境 17
1.4.3 Visual C++6.0编程操作介绍 27
1.5 小结 31
第2章 C++编程基础 33
2.1 类和数据抽象 33
2.1.1 如何抽象数据为类 33
2.1.2 类与结构体 35
2.1.3 类的访问权限 36
2.1.4 构造函数与析构函数 37
2.2 类的继承 40
2.2.1 子类如何继承父类 41
2.2.2 子类对父类的访问权限 42
2.2.3 多态 43
2.3 函数和运算符的重载 45
2.3.1 函数重载 45
2.3.2 运算符重载 46
2.4 函数和类的模板 49
2.4.1 创建函数模板 50
2.4.2 函数模板的调用 52
2.4.3 创建类模板 53
2.4.4 类模板调用 54
2.5 小结 56
第2部分 Visual C++分类应用编程 57
第3章 窗口和窗口消息 58
3.1 窗口和窗口类 58
3.1.1 CObject、CCmdTarget和CWnd类简介 58
3.1.2 MFC创建一个窗口 61
3.1.3 窗口显示与隐藏 64
3.1.4 设置窗口的位置和大小 64
3.2 窗口消息 66
3.2.1 窗口消息概况 67
3.2.2 窗口移动以及大小改变 67
3.2.3 按键消息 70
3.2.4 鼠标消息 73
3.2.5 自定义发送窗口消息 76
3.3 小结 80
第4章 Win32应用程序和控制台程序 81
4.1 Win32应用程序和控制台程序简介 81
4.2 Win32应用程序编程 81
4.2.1 Win32应用程序编程必备知识 81
4.2.2 Win32应用程序简例 83
4.2.3 常见消息处理 85
4.2.4 在Win32应用程序中加入控件 87
4.2.5 在Win32应用程序中加入对话框 89
4.3 Win32控制台程序编程 91
4.3.1 Win32控制台程序简例 91
4.3.2 控制台程序的输出控制 93
4.3.3 操作控制台 95
4.4 小结 98
第5章 GDI绘图 99
5.1 CDC类介绍 99
5.1.1 CDC类 99
5.1.2 CDC类的派生类 101
5.2 画笔和画刷 101
5.2.1 画笔 101
5.2.2 画刷 102
5.3 图形绘制 104
5.3.1 点的绘制 104
5.3.2 直线的绘制 105
5.3.3 矩形的绘制 105
5.3.4 椭圆的绘制 109
5.4 文字绘制 109
5.4.1 绘制文字的函数 110
5.4.2 文字的背景色和前景色 112
5.4.3 文字的字体 113
5.5 位图显示 116
5.5.1 位图介绍 117
5.5.2 位图显示 118
5.5.3 实例:桌面涂鸦 119
5.6 小结 125
第6章 MFC控件 126
6.1 MFC控件简介 126
6.1.1 什么是MFC 126
6.1.2 控件简介 127
6.2 MFC控件介绍 127
6.2.1 按钮控件 128
6.2.2 静态控件 130
6.2.3 文本框控件 132
6.2.4 下拉列表框 135
6.2.5 列表框 138
6.2.6 列表视图控件 140
6.2.7 树视图控件 143
6.3 控件编程 145
6.3.1 实例:文本框控件的使用 146
6.3.2 实例:下拉列表框控件的使用 147
6.3.3 实例:列表框控件的使用 148
6.3.4 实例:列表视图控件的使用 150
6.4 小结 152
第7章 动态链接库(DLL) 154
7.1 动态链接库程序架构 154
7.1.1 DLL的入口 154
7.1.2 Lib文件 155
7.1.3 Def文件 156
7.1.4 头文件 157
7.2 Non-MFC DLL 159
7.2.1 Non-MFC DLL编写规范说明 159
7.2.2 实例:Non-MFC DLL例子程序 160
7.3 MFC规则DLL 161
7.3.1 MFC规则DLL编写规范说明 162
7.3.2 实例:MFC规则DLL例子程序 163
7.4 MFC扩展DLL 164
7.4.1 MFC扩展DLL编写规范说明 164
7.4.2 实例:MFC扩展DLL例子程序 166
7.5 调用DLL 167
7.5.1 隐式调用 167
7.5.2 实例:隐式调用DLL例子程序 168
7.5.3 显式调用 170
7.5.4 实例:显式调用DLL例子程序 171
7.6 小结 175
第8章 单文档应用程序(SDI) 176
8.1 单文档的基本组成 176
8.1.1 单文档结构概述 176
8.1.2 单文档中文档和视图的创建 177
8.1.3 文档类 177
8.1.4 视图类 179
8.1.5 框架类 180
8.2 单文档的主要编程技巧 180
8.2.1 切分窗口 181
8.2.2 单文档中显示位图 184
8.3 工具栏、状态栏和菜单 187
8.3.1 工具栏 187
8.3.2 状态栏 191
8.3.3 菜单 193
8.4 小结 197
第9章 多文档应用程序(MDI) 199
9.1 多文档应用程序的结构 199
9.1.1 多文档应用程序典型结构 199
9.1.2 MDI多文档模板应用程序 201
9.1.3 无视图的MDI应用程序 203
9.2 多文档的主要编程技巧 204
9.2.1 实例:MDI应用程序启动时子窗口默认最大化 205
9.2.2 实例:创建带滚动条的窗体 206
9.2.3 实例:MDI应用程序启动时主窗口默认最大化 207
9.2.4 实例:保存窗口状态 208
9.3 小结 210
第10章 对话框应用程序 211
10.1 对话框应用程序架构 211
10.1.1 无模式对话框 211
10.1.2 模式对话框 213
10.1.3 对话框数据的交换和验证 214
10.1.4 使用对话框的一个实例 215
10.2 通用对话框 220
10.2.1 文件选择对话框 221
10.2.2 颜色选择对话框 223
10.2.3 查找和替换对话框 224
10.2.4 打印对话框 225
10.2.5 打印页面设置对话框 226
10.2.6 字体选择对话框 227
10.2.7 选择多个文件的实例 228
10.3 创建一个不规则形状窗体 230
10.4 小结 234
第11章 GDI+基础编程 236
11.1 GDI+的基本图形绘制 236
11.1.1 直线与曲线 236
11.1.2 矩形与椭圆 237
11.1.3 弧与扇形 239
11.2 GDI+显示图片 241
11.2.1 显示图片 241
11.2.2 显示动态Gif图片 243
11.3 GDI+画笔与画刷 246
11.3.1 画笔 246
11.3.2 画刷 248
11.4 图像处理技巧 249
11.4.1 半透明图像 249
11.4.2 图形的大小、平移和旋转 252
11.5 小结 254
第12章 ActiveX控件 256
12.1 ActiveX控件的概要介绍 256
12.1.1 ActiveX程序的基本结构 256
12.1.2 ActiveX控件分类 257
12.1.3 ActiveX程序的开发 257
12.2 ActiveX控件的开发范例 259
12.2.1 在网页上显示ActiveX控件 259
12.2.2 在网页中显示带控件的ActiveX控件 262
12.2.3 通过网页向ActiveX控件传递参数 263
12.2.4 实现ActiveX控件的事件 265
12.3 小结 267
第3部分 Visual C++功能应用编程 269
第13章 文件操作 270
13.1 读写文件 270
13.1.1 使用Windows API 270
13.1.2 使用C运行时库 273
13.1.3 使用CFile类 275
13.1.4 使用CStdioFile类 277
13.1.5 案例:使用4种文件操作方式读写文件 278
13.2 读写INI文件 283
13.2.1 使用Windows API 283
13.2.2 案例:使用API函数读写INI文件 284
13.3 读写注册表 287
13.3.1 使用Windows API 287
13.3.2 使用CRegKey类 291
13.3.3 实例:使用两种方式对注册表进行操作 295
13.4 小结 300
第14章 数据处理 301
14.1 字符串处理 301
14.1.1 分割字符串 301
14.1.2 自定义格式化字符串 304
14.1.3 实例:字符串处理例子程序 306
14.2 格式转换 309
14.2.1 数值型与字符串型的转换 310
14.2.2 大写与小写的转换 311
14.2.3 Unicode编码简介 313
14.2.4 Unicode配置开发环境 314
14.2.5 实例:格式转换例子程序 316
14.3 小结 320
第15章 系统时间 322
15.1 使用Windows API 322
15.1.1 使用Windows API函数 322
15.1.2 实例:基于Windows API的系统时间例子程序 323
15.2 使用C运行时库 327
15.2.1 时间格式分类 327
15.2.2 时间格式的转换 329
15.2.3 实例:基于C运行时库的系统时间程序 333
15.3 使用MFC类 335
15.3.1 CTime与CTimeSpan 335
15.3.2 COleDateTime与COleDateTimeSpan 337
15.3.3 实例:基于MFC类的系统时间程序 339
15.4 小结 343
第16章 错误与异常处理 345
16.1 错误处理 345
16.1.1 Windows API的错误处理 345
16.1.2 用户程序的错误处理 347
16.1.3 实例:错误处理程序 351
16.2 异常处理 356
16.2.1 异常的抛出 358
16.2.2 异常的捕获 361
16.2.3 异常的处理 363
16.2.4 实例:异常处理程序 364
16.3 小结 368
第17章 多线程 370
17.1 单线程与多线程 370
17.2 辅助线程与主线程 371
17.2.1 辅助线程的开启 371
17.2.2 辅助线程的结束 374
17.2.3 辅助线程一般的代码结构 374
17.3 线程的通信与同步 376
17.3.1 全局变量 377
17.3.2 事件 377
17.3.3 自定义消息 378
17.3.4 信号量 380
17.3.5 临界区 381
17.3.6 互斥 382
17.3.7 实例:线程通信与同步程序 383
17.4 共享数据保护 389
17.4.1 什么是共享数据 389
17.4.2 如何保护共享数据 390
17.4.3 实例:线程共享数据例子程序 391
17.5 线程与进程的优先级 396
17.5.1 优先级的意义 396
17.5.2 进程的优先级 397
17.5.3 线程的优先级 398
17.5.4 实例:线程与进程优先级例子程序 399
17.6 小结 407
第18章 定时器 409
18.1 定时器介绍 409
18.2 一般定时器 410
18.2.1 定时器的创建 410
18.2.2 定时器的销毁 412
18.2.3 定时器的计时方式 412
18.2.4 实例:一般定时器例子程序 412
18.3 多媒体定时器 417
18.3.1 多媒体定时器的计时方式 417
18.3.2 多媒体定时器创建 417
18.3.3 多媒体定时器的回调函数 419
18.3.4 实例:多媒体定时器程序 420
18.4 自定义定时器 425
18.5 小结 428
第19章 消息处理 429
19.1 消息概要介绍 429
19.1.1 消息结构 429
19.1.2 消息分类 430
19.1.3 消息队列 432
19.1.4 消息的发送 433
19.1.5 消息的接收 436
19.2 Windows消息处理 438
19.3 自定义消息 440
19.3.1 使用ON_MESSAGE 440
19.3.2 使用ON_REGISTERED_MESSAGE 441
19.4 实例:自定义消息例子程序 442
19.5 小结 447
第20章 输入设备控制 449
20.1 主要的输入设备 449
20.1.1 鼠标输入设备 449
20.1.2 键盘输入设备 450
20.2 鼠标输入方法 450
20.2.1 更改鼠标光标 450
20.2.2 模拟鼠标输入 452
20.3 键盘输入方法 453
20.3.1 控制键盘输入 454
20.3.2 模拟键盘输入 456
20.4 实例:鼠标与键盘例子程序 457
20.5 钩子程序 461
20.5.1 钩子(Hook) 461
20.5.2 实例:键盘钩子例子程序 464
20.6 小结 467
第21章 串口编程 468
21.1 串口编程概要介绍 468
21.1.1 串口的种类 468
21.1.2 串口的通信方式 469
21.1.3 XMODEM协议 470
21.2 使用Windows API 472
21.2.1 串口的打开 472
21.2.2 串口的初始化 474
21.2.3 串口通信事件处理 478
21.2.4 串口数据的收发 480
21.2.5 串口的超时设置 482
21.2.6 串口通信状态与通信错误 484
21.2.7 实例:基于Windows API的串口例子程序 484
21.3 使用ActiveX控件 497
21.3.1 使用MSComm控件 498
21.3.2 MSComm控件的属性设置 498
21.3.3 数据的收发 504
21.3.4 实例:基于MSComm控件的串口例子程序 504
21.4 小结 507
第22章 网络编程 509
22.1 网络编程概要 509
22.1.1 网络参考模型 509
22.1.2 通信连接方式 511
22.1.3 WinSock技术 513
22.2 WinSock详解 514
22.2.1 WinSock基本函数讲解 514
22.2.2 WinSock信息获取函数 519
22.2.3 WinSock辅助函数 524
22.3 TCP程序 527
22.3.1 TCP概要 527
22.3.2 TCP客户端与服务端的流程 528
22.3.3 实例:TCP客户端例子程序 529
22.3.4 实例:TCP服务器例子程序 530
22.4 UDP程序 532
22.4.1 UDP概要 532
22.4.2 点对点通信 534
22.4.3 实例:UDP点对点例子程序 534
22.4.4 广播通信 538
22.4.5 实例:UDP广播例子程序 538
22.4.6 组播通信 541
22.4.7 实例:UDP组播例子程序 541
22.5 小结 545
第23章 数据库编程 547
23.1 常用数据库简介 547
23.1.1 Microsoft Office Access 547
23.1.2 Microsoft SQL Server 548
23.1.3 MySQL 549
23.2 ODBC数据库编程 549
23.2.1 ODBC简介 549
23.2.2 使用CDatabase类 551
23.2.3 数据库的连接与关闭 552
23.2.4 使用CRecordset类 553
23.2.5 记录集的建立和关闭 555
23.2.6 数据的查询 557
23.2.7 修改、添加和删除记录 558
23.2.8 使用CRecordView类 560
23.2.9 实例:ODBC数据库管理例子程序 562
23.3 ADO数据库编程 571
23.3.1 ADO技术简介 571
23.3.2 引用ADO库的3种方式 571
23.3.3 数据库的连接与关闭 573
23.3.4 执行SQL命令 575
23.3.5 获取记录集 577
23.3.6 添加、删除和修改记录 580
23.3.7 实例:ADO数据库管理例子程序 581
23.4 小结 587
第24章 内存管理 588
24.1 Windows内存管理 588
24.1.1 虚拟内存 588
24.1.2 内存映射文件 591
24.1.3 内存堆栈 595
24.2 C/C++的内存操作 597
24.2.1 C的内存操作 597
24.2.2 C++的内存操作 600
24.3 内存优化 602
24.3.1 防止内存泄露 602
24.3.2 防止访问内存违例 604
24.4 小结 606
第25章 程序调试 607
25.1 调试器 607
25.1.1 VC6.0自带调试器 607
25.1.2 调试工具WinDbg 612
25.2 程序调试排错的一般方法 615
25.2.1 程序的错误分类 616
25.2.2 排错过程的常用小工具 617
25.3 WinDbg调试实例 619
25.4 小结 622
第26章 网络安全 623
26.1 网络安全简介 623
26.2 网络安全重要性 624
26.3 网络安全方法 624
26.3.1 物理安全策略 624
26.3.2 访问控制 625
26.3.3 信息加密策略 626
26.3.4 防火墙控制 626
26.4 黑客与病毒防范 627
26.4.1 黑客及防范技术 627
26.4.2 病毒简介 629
26.5 案例:进程注入技术实例 630
26.6 小结 637
第27章 Windows拖放协议 638
27.1 拖放介绍 638
27.2 拖放方法 638
27.2.1 文件管理器拖放 638
27.2.2 文件管理器拖放原理与实例 640
27.2.3 OLE拖放原理 641
27.2.4 OLE拖放原理与实例 642
27.3 拖放与剪贴板 645
27.3.1 剪贴板相关的API函数 645
27.3.2 使用剪贴板复制文本 647
27.4 案例:控件之间进行拖放 648
27.5 小结 652
第4部分 Visual C++编程杂项 653
第28章 界面控制 654
28.1 使用托盘图标 654
28.1.1 托盘图标的介绍 654
28.1.2 增加托盘图标 656
28.1.3 为托盘图标添加消息响应 657
28.1.4 修改托盘图标 660
28.2 对话框中显示工具栏与状态栏 662
28.2.1 对话框中显示工具栏 662
28.2.2 对话框中显示工具栏的例子程序 665
28.2.3 对话框中显示状态栏 667
28.2.4 实例:对话框中显示状态栏的例子程序 669
28.3 控件自绘 671
28.3.1 文本框控件自绘 671
28.3.2 颜色间隔的列表视图控件 672
28.3.3 自绘进度条 675
28.3.4 显示颜色的下拉列表框控件 678
28.3.5 自绘列表框控件 680
28.4 小结 684
第29章 读写Office文件 685
29.1 OLE自动化与VBA 685
29.1.1 OLE自动化概述 685
29.1.2 VBA概述 686
29.2 读写Word文件 686
29.2.1 使用OLE自动化接口 686
29.2.2 实例:Word操作 689
29.3 读写Excel文件 692
29.3.1 使用ODBC 692
29.3.2 使用OLE自动化接口 693
29.3.3 实例:Excel操作 694
29.4 小结 697
第30章 文件与文件夹 698
30.1 创建快捷方式 698
30.1.1 快捷方式概述 698
30.1.2 创建应用程序快捷方式 698
30.2 文件与文件夹的复制与删除 701
30.2.1 使用Windows API 701
30.2.2 使用Windows外壳(Shell) 703
30.2.3 实例:文件与文件夹操作例子程序 706
30.3 系统文件夹与文件 714
30.3.1 获取Windows文件夹 714
30.3.2 获取System文件夹 715
30.3.3 获取当前文件夹 716
30.4 系统临时文件 716
30.4.1 获取系统临时文件夹——GetTempPath函数 717
30.4.2 获取系统临时——GetLongPathName函数 717
30.5 小结 718
第31章 程序控制 719
31.1 只运行一个程序实例 719
31.1.1 查找窗口控制程序实例 719
31.1.2 互斥信号量 721
31.1.3 属性名与属性值 724
31.1.4 实例:只运行一个实例的例子程序 725
31.2 获取可执行程序的图标 727
31.3 运行外部程序 728
31.3.1 API函数介绍 729
31.3.2 不等待外部程序执行完毕 731
31.3.3 等待外部程序执行完毕 731
31.3.4 向外部程序发消息 732
31.3.5 强制终止外部程序 733
31.3.6 实例:强制终止例子程序 736
31.4 小结 738
第32章 系统控制 739
32.1 系统控制概要 739
32.2 关闭与打开显示器 739
32.2.1 关闭显示器 739
32.2.2 打开显示器 740
32.3 关闭与重启系统 741
32.3.1 关闭系统 741
32.3.2 重启系统 744
32.4 获取操作系统版本 745
32.5 获取系统IP信息 746
32.6 打开与关闭CD-ROM 747
32.7 实例:系统控制例子程序 748
32.8 小结 753
第33章 延时处理 755
33.1 延时概要 755
33.1.1 为什么要延时 755
33.1.2 延时的数量级 755
33.2 简单的延时处理 758
33.2.1 使用Sleep函数 758
33.2.2 自己计时的延时处理 758
33.3 可处理消息的延时处理 759
33.3.1 使用GetTickCount 759
33.3.2 使用QueryPerformanceCounter 760
33.4 实例:延时例子程序 761
33.5 小结 763