第1章 概述 1
1.1 Windows家族简介 1
1.1.1 Windows 3.x/NT/95/98 1
1.1.2 Windows 2000 2
1.1.3 Windows XP 2
1.2 Win32 API基础 3
1.2.1 什么是API 3
1.2.2 为什么程序员需要API 4
1.2.3 WindowsXPAPI的新特性 5
1.3 Win32 API应用程序框架结构 5
1.3.1 概述 5
1.3.2 应用程序实例 5
1.3.3 头文件的类型 8
1.3.4 函数和数据结构 8
1.3.5 消息机制 11
1.3.6 句柄、标识符和数据类型 15
1.4 Unicode字符 17
第2章 文本输出和滚动条 20
2.1 窗口过程与消息处理 20
2.2 文本输出 22
2.2.1 文本输出程序示例 22
2.2.2 获取设备描述表 25
2.2.3 WM_PAINT消息的响应和处理 27
2.2.4 字体的设置 28
2.2.5 文本的格式化输出 33
2.2.6 文本输出函数比较 38
2.3 滚动条 40
2.3.1 滚动条的特性和设置 40
2.3.2 改进的文本输出程序实例 40
2.3.3 滚动条消息处理 44
2.3.4 滚动条信息结构和相关函数 45
2.3.5 进一步了解滚动条 46
第3章 深入GDI 48
3.1 Windows GDI的基本概念和原理 48
3.2 颜色、画笔和画刷 49
3.2.1 颜色的表示和设置 49
3.2.2 关于画笔 51
3.2.3 画笔程序实例 53
3.2.4 画刷相关函数和结构 56
3.2.5 画刷程序实例 59
3.3 GDI绘图函数 61
3.3.1 GDI函数简介 61
3.3.2 GDI绘图函数与结构 62
3.3.3 绘图函数实例 68
3.4 GDI映射模式 70
3.4.1 坐标系统 70
3.4.2 窗口和视口 71
3.4.3 几种映射模式的比较 71
3.4.4 映射模式程序实例 73
3.5 位图 75
3.5.1 设备相关位图 75
3.5.2 DDB位图程序实例 79
3.5.3 设备无关位图 81
3.5.4 DIB位图程序实例 85
第4章 键盘、鼠标和计时器 89
4.1 键盘 89
4.1.1 键盘输入模型和键盘消息 89
4.1.2 击键消息 90
4.1.3 字符消息 92
4.1.4 理解插入符 93
4.1.5 键盘输入程序实例 94
4.2 鼠标 98
4.2.1 鼠标基础 98
4.2.2 鼠标消息 99
4.2.3 鼠标响应程序实例 101
4.3 计时器 105
4.3.1 计时器和计时器消息 105
4.3.2 计时器程序实例 106
第5章 资源 111
5.1 资源和资源脚本文件 111
5.2 菜单和快捷键资源 113
5.2.1 菜单的结构 113
5.2.2 菜单和菜单项相关操作 114
5.2.3 菜单消息 120
5.2.4 实现更复杂的菜单项 120
5.2.5 快捷键资源 121
5.2.6 菜单和快捷键程序实例 122
5.3 图标、光标和字符串资源 130
5.3.1 图标 130
5.3.2 使用自定义的光标 131
5.3.3 使用字符串资源 132
5.3.4 图标、光标和字符串资源的应用实例 132
5.4 对话框 135
5.4.1 模态对话框 136
5.4.2 模态对话框程序实例 139
5.4.3 非模态对话框 142
5.4.4 非模态对话框程序实例 143
5.4.5 通用对话框 146
5.4.6 通用对话框程序实例 149
第6章 Windows 2000标准控件 155
6.1 控件概述 155
6.1.1 子窗口 155
6.1.2 控件概述 156
6.1.3 消息通信 158
6.1.4 补充说明 159
6.2 标准控件 159
6.2.1 按钮控件 159
6.2.2 静态控件 161
6.2.3 标准控件程序实例之一 162
6.2.4 滚动条控件 167
6.2.5 编辑框控件 170
6.2.6 标准控件程序实例之二 172
6.2.7 列表框控件 177
6.2.8 组合框控件 179
6.2.9 标准控件程序实例之三 181
第7章 驱动器、目录和文件 187
7.1 驱动器和目录 187
7.1.1 获取驱动器类型列表 187
7.1.2 获取驱动器信息 188
7.1.3 获取目录信息 190
7.1.4 获取驱动器和目录信息实例 192
7.2 内存映射共享数据 193
7.2.1 内存管理 194
7.2.2 为何使用内存映射文件 198
7.2.3 如何使用内存映射文件 199
7.2.4 保持一致性 201
7.2.5 使用内存映射文件实例分析 201
7.3 文件的输入/输出(I/O) 203
7.3.1 创建和打开文件 203
7.3.2 读取、写入、移动和删除文件 205
7.3.3 查找文件 208
7.3.4 文件操作实例分析 210
第8章 使用剪贴板 214
8.1 剪贴板的一般使用方法 214
8.1.1 剪贴板数据格式 214
8.1.2 打开和关闭剪贴板 215
8.1.3 文本在剪贴板上的输入输出 216
8.1.4 剪贴板文本格式应用实例分析 216
8.2 剪贴板的复杂使用方法 218
8.2.1 利用剪贴板传递多个数据格式 218
8.2.2 剪贴板数据的延迟生成 218
8.2.3 使用私有数据格式 219
8.2.4 剪贴板延迟生成应用实例分析 220
8.3 剪贴板查看器 222
8.3.1 剪贴板查看器链接列表 222
8.3.2 有关剪贴板查看器的函数和消息 222
第9章 创建多文档界面 226
9.1 MDI的基本概念 226
9.1.1 MDI的架构 226
9.1.2 MDI的子窗口设计 227
9.2 MDI的函数和消息 227
9.2.1 相关函数 227
9.2.2 相关消息 230
9.3 MDI的示例分析 232
9.3.1 初始化程序 232
9.3.2 架构分析 238
9.3.3 子窗口分析 239
第10章 多任务与多线程 250
10.1 多任务和线程及纤程简介 250
10.1.1 多任务的不同模式 250
10.1.2 纤程 251
10.2 Windows进程及线程 252
10.2.1 进程、线程和纤程的函数说明 252
10.2.2 实例分析 260
10.3 线程同步和事件 274
10.3.1 临界区的设立 274
10.3.2 互斥和信号量 276
10.3.3 事件对象 280
10.3.4 实例分析 283
10.4 线程局部存储 289
10.4.1 线程局部存储简介 289
10.4.2 实例分析 290
第11章 调用DLL中的API 294
11.1 DLL的基本概念 294
11.1.1 准备知识 294
11.1.2 DLL的入口点和出口点 295
11.1.3 有关函数介绍 295
11.1.4 实例分析 298
11.2 DLL中的共享内存 305
11.3 纯资源库 311
11.4 DLL的前期绑定和后期绑定 314
11.4.1 DLL前期绑定 314
11.4.2 DLL后期绑定 315
11.4.3 实例分析 315
第12章 多媒体 324
12.1 MCIWnd窗口用户界面 324
12.2 MCIWnd API 326
12.2.1 窗口管理 326
12.2.2 文件和设备管理 327
12.2.3 回放选项 330
12.2.4 录音 333
12.2.5 定位 333
12.2.6 暂停与恢复回放 336
12.2.7 性能调整 337
12.2.8 图像调整 339
12.2.9 事件与错误通知 341
12.2.10 时间格式 343
12.2.11 设备能力 344
12.2.12 MCI设备设置 345
12.3 MCIwnd实例分析 346
12.3.1 MCIWnd自动回放 346
12.3.2 暂停与恢复回放 348
12.3.3 限制回放范围 349
12.3.4 定制录音过程 350
12.3.5 剪裁图像 352
12.3.6 伸展图像 353
12.3.7 伸展图像和窗口 354
12.3.8 制作媒体播放器 355
第13章 网络 358
13.1 winsock简介 358
13.2 Winsock API 359
13.2.1 winsock结构 359
13.2.2 Winsock API函数 361
13.3 Winsock API实例分析 370
13.3.1 面向连接协议的服务器和客户程序 370
13.3.2 无连接协议的接收端和发送端程序 376
第14章 Windows XP用户界面 381
14.1 Windows XP视觉风格 381
14.1.1 Windows XP的新外观 381
14.1.2 在应用程序中使用Windows XP视觉风格 382
14.2 Theme API及杂项 384
14.2.1 API介绍 384
14.2.2 实例分析——TaskSwitcher 388
14.3 SysLink控件 394
14.3.1 SysLink简介 394
14.3.2 SysLink API 396
14.3.3 SysLink实例分析 399
14.4 List-View控件 403
14.4.1 List-View新特色简介 403
14.4.2 List-View新增API 405
14.4.3 List-View实例分析 414
第15章 DirectX for Windows XP 418
15.1 DirectX图形处理 418
15.1.1 DirectDraw 418
15.1.2 Direct3D 425
15.2 DirectX音频和视频 437
15.2.1 DirectSound 438
15.2.2 DirectMusic 446
15.2.3 DirectShow 451
15.3 DirectInput 462
15.3.1 使用键盘 462
15.3.2 使用鼠标 466
15.4 DirectPlay 472
第16章 GDI+ 475
16.1 GDI+简介 475
16.1.1 GDI+的三个部分 475
16.1.2 基于类的接口的结构 476
16.1.3 编程模型的变化 477
16.2 直线、曲线和形体 480
16.2.1 向量图形简介 480
16.2.2 画笔、直线和矩形 481
16.2.3 椭圆与弧 482
16.2.4 多边形 482
16.2.5 基数样条曲线 483
16.2.6 Bézier样条曲线 483
16.2.7 路径 484
16.2.8 画刷和形体填充 485
16.2.9 开放曲线与闭合曲线 486
16.2.10 区域 487
16.2.11 剪裁 487
16.3 图像、位图和元文件 488
16.3.1 位图类型 488
16.3.2 元文件 491
16.3.3 绘制、定位与克隆图像 493
16.3.4 剪裁与缩放图像 494
16.4 GDI+程序设计初步 496
16.4.1 绘制直线 496
16.4.2 绘制字符串 498
16.5 用画笔绘制直线和形体 499
16.5.1 用画笔绘制直线和矩形 499
16.5.2 设置画笔宽度和对齐 500
16.5.3 绘制带线帽的直线 501
16.5.4 连接直线 501
16.5.5 绘制自定义虚线 502
16.5.6 绘制用纹理填充的直线 502
16.6 用画刷填充形体 503
16.6.1 用纯色填充形体 503
16.6.2 用影线图案填充形体 503
16.6.3 用图像纹理填充形体 504
16.6.4 用图像平铺形体 504
16.7 使用图像、位图和元文件 507
16.7.1 装入与显示位图 507
16.7.2 装入与显示元文件 507
16.7.3 记录元文件 507
16.7.4 剪裁与缩放图像 509
16.7.5 旋转、反射和滞后图像 510
16.7.6 用插补模式来控制缩放期间的图像质量 511
16.8 使用文本和字体 512
16.8.1 构造字体家族和字体 512
16.8.2 绘制文本 513
16.8.3 格式化文本 514
16.8.4 枚举已安装的字体 517
16.8.5 创建私有字体集合 519
16.8.6 获取字体尺寸 523
16.9 构造与绘制曲线 525
16.9.1 绘制基数样条曲线 525
16.9.2 绘制Bézier样条曲线 526
16.10 用梯度画刷填充形体 527
16.10.1 创建线性梯度 527
16.10.2 创建路径梯度 530
16.11 构造与绘制路径 536
16.11.1 从直线、曲线和形体创建图形 537
16.11.2 填充开放图形 538
16.12 使用区域 539
16.12.1 用区域进行命中测试 539
16.12.2 用区域进行剪裁 540
16.13 打印 540
16.13.1 将GDI+输出发送到打印机 541
16.13.2 显示打印对话框 544