目录 1
第1章系统服务介绍 1
1.1概述 1
1.2Win32扩展 1
1.2.1多线程进程结构 1
1.2.2连续地址空间 1
1.2.3可移值的32位函数 2
1.3基本功能概述 2
1.3.1原子管理函数 2
1.3.2通信设备函数 2
1.3.3字符方式应用程序的支持 3
1.3.4调试工具的支持 4
1.3.5对动态连接库的支持 4
1.3.6环境 5
1.3.7事件日志 5
1.3.8异常处理 5
1.3.9文件I/O函数 6
1.3.10句柄/对象管理 7
1.3.11映射文件 8
1.3.12初始文件函数 8
1.3.14内存管理函数 9
1.3.13安装/压缩 9
1.3.15模块管理函数 11
1.3.16管道 12
1.3.17进程和线程 12
1.3.18注册 13
1.3.19资源管理函数 13
1.3.20安全性 14
1.3.21段管理函数 16
1.3.22声音 16
1.3.23同步 16
1.3.25局部线程的存储空间 17
1.3.24时间 17
1.3.26版本管理 18
第2章内存管理 19
2.1关于内存 19
2.1.1Global和Local函数 19
2.1.2标准C库 20
2.1.3堆栈函数 20
2.1.4虚拟函数 20
2.1.5关于共享内存 20
2.1.6使用虚拟函数 21
2.1.7为共享内存使用文件映射 23
2.1.8使用堆栈函数 25
2.2小结 25
2.2.1虚拟函数 25
2.2.2堆栈函数 26
2.2.3文件映射函数 26
第3章进程和线程 27
3.1关于多任务 27
3.1.1进程和线程 27
3.1.2调度 28
3.2使用线程 29
3.2.1创建线程 29
3.2.2挂起线程的执行 30
3.2.3多线程的同步执行 31
3.2.4终止线程 31
3.2.5多线程和GDI对象 32
3.2.6实例:多线程MDI 32
应用程序 32
3.3.1命令行参数 38
3.3.2创建标志 38
3.3创建子进程 38
3.3.3继承性 39
3.3.4环境变量 40
3.3.5启动信息 41
3.3.6实例:有重定向I/O的子进程 42
3.4控制进程和线程的优先权 46
3.4.1进程函数 47
3.4.4STARTUPINFO标志 48
3.4.5创建标志 48
3.4.3调试函数 48
3.4.2线程函数 48
3.4.6线程优先权常数 49
3.4.7进程优先权常数 49
3.4.8结构 49
第4章同步 50
4.1介绍 50
4.1.1关于同步对象 50
4.1.2进程间同步 50
4.1.3单个进程的同步线程 51
第5章文件I/O 63
5.1关于文件 63
5.1.1系统组织 63
5.1.2文件操作 64
5.2使用文件 67
5.2.1实例:建立和打开文件 67
5.2.2实例:文件读、写和加锁 68
5.2.3实例:建立和使用临时性文件 69
5.2.4实例:查找文件和改变文件属性 71
5.3函数 72
第6章文件映射 74
6.1关于文件映射 74
6.1.1共享文件 74
6.2使用文件映射 75
6.1.3关闭文件视图 75
6.1.2共享内存块 75
6.3函数 76
第7章安全性 77
7.1目标 77
7.2USER32安全对象 77
7.2.1对象存取类型 78
7.3对象句柄 79
7.3.1创建桌面 79
7.3.2创建窗口 80
7.3.4创建DDE存取 81
7.3.3创建菜单 81
7.4打开对象 82
7.5存取对象 82
7.3.5创建DDE对话 82
7.6关闭对象 83
7.7窗口类 83
7.8SM_SECURE系统变量 83
7.9ES_PASSWORD风格 83
编辑控制 83
7.10枚举窗口 83
7.13.1注册 84
7.13.2对话 84
7.11存取屏幕内容 84
7.13DDE安全性 84
7.12存取剪贴板 84
7.14审核 85
7.15服务器初始化 85
7.16客户机初始化 85
7.16.1服务器连接 85
7.17.2注销 86
7.17.1注册 86
7.17注册处理 86
7.16.3线程初始化 86
7.16.2窗口工作站存取 86
7.17.3窗口工作站加锁 87
7.18关闭系统 87
第8章动态连接库 88
8.1关于动态连接库 88
8.1.1动态连接的优点 88
8.1.2动态连接中使用的文件 89
8.1.3调用DLL函数 90
8.1.4DLL数据作用范围:多进程、进程和线程 91
8.2使用动态连接库 92
8.2.1建立一个简单的动态连接库 92
8.2.2使用装入时动态连接 93
8.2.3使用运行时动态连接 93
8.2.4函数LibMain 94
8.3函数 95
第9章资源 96
9.1关于资源 96
9.1.1寻找和装入资源 96
9.1.3枚举资源 97
9.1.2增加、删除和替换资源 97
9.2使用资源 98
9.2.1更新资源 98
9.2.2建立资源列表 99
9.3函数 103
第10章管道 104
10.1关于管道 104
10.1.1无名管道 104
10.1.2命名管道 104
10.2.1使用无名管道 108
10.2使用管道 108
10.2.2使用命名管道 109
10.2.3命名管道的交互操作 120
10.3函数 120
第11章邮件槽 122
11.1关于邮件槽 122
11.1.1邮件槽的名字 122
11.1.2邮件槽与LANManager 123
11.1.3服务器与客户函数 123
11.2使用邮件槽 124
11.2.1创建邮件槽 124
11.2.3读邮件槽 125
11.2.2写邮件槽 125
11.3函数 127
第12章网络 128
12.1关于网络 128
12.1.1不依赖于网络的函数 128
12.1.2Netbios函数 129
12.2网络的使用 129
12.2.1使用连接对话框 130
12.2.2枚举网络资源 130
12.2.4恢复连接名 132
12.2.3增加网络连接 132
12.2.5恢复用户名 133
12.2.6取消网络连接 133
12.2.7恢复网络错误信息 134
12.3函数 135
第13章字符模式支持 136
13.1引言 136
13.2关于控制台 136
13.2.1File函数的输入输出 137
13.2.2使用Console函数进行输入输出 137
13.3控制台的使用 137
13.3.1获取控制台输入输出句柄 138
13.3.2控制台模式 139
13.3.3File函数的模式 139
13.3.4Console函数的模式 140
13.3.5通过File函数使用控制台 141
13.3.6移动与隐去光标 143
13.3.7用Console函数进行输入 143
13.3.8输入缓冲区 143
13.3.9键盘事件 144
13.3.10鼠标事件 144
13.3.11缓冲区大小改变事件 145
13.3.12使用Console函数的输出 146
13.3.13窗口和显示缓冲区的大小 147
13.3.14在显示缓存区中写字符串 147
13.3.15在显示缓存区中写颜色属性 148
13.3.16写字符和属性块 148
13.3.17读显示缓冲区 149
13.3.18滚动显示缓冲区 150
13.3.19控制句柄函数 152
13.4函数 153
14.2.1Win32服务 155
14.2服务的类型 155
第14章服务控制管理程序 155
14.1目标与局限 155
14.2.2Drivere服务 156
14.3Win32服务的用户帐号 156
14.4配置登记簿 157
14.5ServiceControlManager的客户 157
14.6ServiceContorlManaget函数 158
14.7SCManaager对象 159
14.7.1SCManager访问类型 159
14.8.1服务访问类型 160
14.8服务对象 160
14.8.2服务控制程序的数据类型 162
第15章时间 163
15.1关于日期和时间函数 163
15.1.1MS-DOS时间 163
15.1.2Windows时间 163
15.2日期和时间函数的使用 164
15.2.1文件时间 164
15.2.2实例:显示文件创建时间的文件目录 164
15.2.4系统时间 165
15.2.5实例:设置系统时间 165
15.2.3实例:改文件时间为当前时间 165
15.2.6函数 167
第16章调试 168
16.1关于调试支撑及性能监视 168
16.1.1其它Win32函数的调试支撑 168
16.1.2调试函数 169
16.1.3性能监视函数 171
16.2调试支持功能的使用 172
16.3函数 173
17.1.1目标 174
17.1.2异常的结构 174
17.1关于结构化的异常处理 174
第17章结构化的异常处理 174
17.1.3异常处理的语法 176
第18章通信 179
18.1关于通信 179
18.2Comm函数的使用 179
18.2.1获取通信资源的句柄 179
18.2.2初始化通信资源 179
18.2.3配置通信资源 179
18.2.4读通信资源 181
18.2.6其它通信函数 182
18.2.5写通信资源 182
18.3函数 184
第19章窗口管理介绍 185
19.1概述 185
19.1.1Win3和PM的输入处理问题 185
19.1.2Win32输入处理的目标 185
19.1.3多线程运行 185
19.1.4输入管道 186
19.1.5局部输入状态 186
19.1.7Z-序的相关活动 187
19.1.6受局部输入状态影响的函数 187
19.1.8擦掉和重画挂起应用程序的窗口框架或图标 188
19.1.9图标语言支持(NLS) 188
19.1.10单字编码 188
19.1.11通知消息 189
19.1.12热键 190
19.1.13窗口挂钩变化 190
19.1.14各种USER32函数的变化 191
19.2.2记号 196
19.2.3裁剪板 196
19.2USER功能概述 196
19.2.1加速键 196
19.2.4普通对话框 197
19.2.5光标 197
19.2.6DDE管理库 198
19.2.7对话框 199
19.2.8拖拉/放下 200
19.2.9错误 200
19.2.10挂钩 200
19.2.12键盘 201
19.2.13多文档界面 201
19.2.11图标 201
19.2.14菜单 202
19.2.15消息 203
19.2.16鼠标 204
19.2.17对象连接和嵌入 204
19.2.18刷新 206
19.2.19特征 206
19.2.20矩形 206
19.2.21滚动 207
19.2.22字符串 207
19.2.23窗口管理 208
20.1.2排队和非排队的消息 211
20.1.1消息 211
第20章消息和消息队列 211
20.1关于消息和消息队列 211
20.1.3消息处理 212
20.1.4邮寄和发送消息 214
20.1.5消息类型 214
20.1.6消息过滤 215
20.1.7消息死锁 215
20.2使用消息和消息队列 216
20.2.1创建消息循环 216
20.2.2检查消息队列 218
20.2.4发送消息 219
20.2.3邮寄消息 219
20.3函数 221
第21章键盘输入 222
21.1关于键盘输入 222
21.1.1键盘输入模式 222
21.1.2键盘焦点和激活 222
21.1.3击键消息 223
21.1.4字符消息 224
21.1.5键状态 225
21.2.1处理击键消息 226
21.2使用键盘输入 226
21.1.6击键和字符翻译 226
21.1.7热键支持 226
21.2.2翻译字符消息 228
21.2.3处理字符消息 228
21.2.4使用标记 229
21.2.5实例:显示键盘输入 229
21.3函数和消息 235
22.1.3鼠标配置 237
22.1.2鼠标捕获 237
22.1.1鼠标光标 237
22.1关于鼠标输入 237
第22章鼠标输入 237
22.1.4鼠标消息 238
22.1.5WM_NCHITTEST消息 240
22.1.6窗口活动 241
22.2使用鼠标输入 241
22.2.1跟踪鼠标光标 241
22.2.2实例:用鼠标画线 241
22.2.3处理连续两次按下鼠标的消息 244
22.2.4实例:选择一行文本 245
22.3鼠标输入函数和消息 247
第23章滚动条 249
23.1有关滚动条的描述 249
23.1.1滚动条的组成 249
23.1.2标准滚动条和滚动条控制 250
23.1.3滚动框的位置和滚动范围 251
23.1.4滚动条请求 251
23.1.5滚动条的键盘界面 253
23.1.6滚动客户区域 254
23.1.7滚动条的可见性 254
23.1.8滚动条的颜色和度量 255
23.2使用滚动条 255
23.2.1建立滚动条 255
23.2.2滚动文本 256
23.2.3滚动位图 261
23.2.4建立标准滚动条的键盘界面 269
23.3函数 270
23.4消息 271
第24章菜单 272
24.1有关菜单的描述 272
24.1.1菜单条和弹出式菜单 272
24.1.2菜单句柄 273
24.1.3类菜单 273
24.1.4菜单项 273
24.1.5用键盘访问菜单 277
24.1.6菜单的建立 278
24.1.7菜单的显示 278
24.1.10菜单的修改 279
24.1.9菜单消息 279
24.1.8撤消菜单 279
24.2怎样使用菜单 280
24.2.1使用菜单样板资源 280
24.2.2建立浮动弹出式菜单 284
24.2.3使用菜单项位图 286
24.2.4建立用户自己绘制的菜单项 291
24.2.5使用自己的选中标志位图 296
24.3函数和消息 304
第25章键盘加速键 305
25.1关于键盘加速表 305
25.1.1加速键表 305
25.1.2加速键的创建 306
25.1.3加速键的分配 306
25.1.4加速键和菜单 307
25.2.1使用加速键表资源 308
25.2使用键盘加速键 308
25.2.2使用运行时创建的加速键表 313
25.3函数 320
25.4消息 320
第26章图形设备接口 321
26.1简介 321
26.2GDI的增强 321
26.3GDI的改进 321
26.3.1调用的改进 322
26.3.2函数改进 322
26.3.3改进的详细描述 322
26.3.4新的函数调用 324
26.4GDI函数概述 325
26.4.2绘图工具 326
26.4.1位图 326
26.4.3剪裁 327
26.4.4颜色 327
26.4.5曲线输出 328
26.4.6设备环境关系函数 328
26.4.7字模 328
26.4.8线输出 329
26.4.9映射 329
26.4.10元文件 330
26.4.11GDI对象 330
26.4.12调色板的管理 331
26.4.13路径 332
26.4.14定位 332
26.4.15打印 332
26.4.16区域 333
26.4.17字符文本输出 334
第27章位图 335
27.1位图 335
27.1.1位图、绘图平面和设备环境 337
27.1.2两种类型的位图 337
27.1.3位图旋转 338
27.1.4位图缩放 339
27.1.5位图作为画刷 339
27.1.6位图存储 340
27.2位图的使用 342
27.2.1利用位图来捕捉图象 342
27.2.2利用位图来缩放图象 343
27.2.3利用位图来存储图象 344
27.3函数 347
28.1画刷 349
第28章画刷 349
28.1.1实心画刷 350
28.1.2备用画刷 350
28.1.3阴影画刷 350
28.1.4图案画刷 350
28.1.5画刷起点 351
28.2画刷的使用 351
28.3函数 357
第29章画笔 358
29.1关于画笔 358
29.1.1装饰画笔 358
29.1.2几何画笔 359
29.2如何使用画笔 360
29.2.1修改选择颜色公共对话框 360
29.3函数 363
第30章区域 364
30.1关于区域 364
30.1.1区域的创建和选择 364
30.1.2区域的操作 364
30.2如何使用区域 365
30.2.1使用区域来剪取输出 365
30.2.2使用区域来执行探测 370
30.3函数 370
第31章直线和曲线 371
31.1关于直线和曲线 371
31.1.1直线 371
31.1.2曲线 372
39.4.4管理波形记录 373
39.4.3打开波形输入设备 373
31.1.3直线与曲线的组合 373
31.1.4线的属性 373
31.2如何使用直线和曲线 374
31.2.1使用线函数来绘制浮标 374
31.2.2使用直线及曲线画饼图 376
31.3有关函数 379
第32章颜色和调色板 380
32.1关于颜色 380
32.1.1颜色的物理特性 380
32.1.2彩色视频显示技术 380
32.2如何使用颜色 381
32.1.3颜色的操作 382
32.2.1创建一个彩色画笔 384
32.3有关函数 385
32.4有关消息 385
第33章坐标位置及变换 386
33.1关于坐标位置及其变换 386
33.1.2变换 387
33.1.1坐标位置 387
33.2如何使用坐标位置及其变换 393
33.1.3缺省变换 393
33.2.1使用预定义的单位绘制图形 394
33.2.2在应用程序使用区内使图形居中 394
33.2.3图形缩放 394
33.2.4图形平移 395
33.2.5图形旋转 395
33.2.6图形剪切 395
33.2.7图形镜像 396
33.3有关函数 396
第34章元文件 397
34.1关于元文件 397
34.2增强型格式元文件 397
34.2.1增强型元文件的记录 397
34.2.2增强型元文件的操作 398
34.3Windows格式元文件 399
34.5.1创建一个增强型的元文件 400
34.4从Windows格式到增强型格式的转换 400
34.5如何使用元文件 400
34.5.2显示图象并将其存储到增强型元文件中 402
34.5.3打开增强型元文件并显示其内窗 406
34.6有关函数 408
第35章多媒体服务器 409
35.1Windows的多媒体服务器 409
41.8.4与其它应用程序共享I/O过程 409
35.3Windows多媒体设计的要点 410
35.5调试多媒体应用程序 410
35.4构造多媒体应用程序 410
35.2Windows多媒体服务器的体系结构 410
36.1MCI概述 411
36.1.1MCI的体系结构 411
36.1.2MCI的编程接口 411
第36章.媒体控制接口 411
36.1.3MCI命令集 412
36.1.4MCI设备 412
36.1.5打开MCI设备 413
36.2使用命令消息接口 414
36.2.1关于命令消息 414
36.2.2MCI指令消息小结 415
36.2.4打开设备 417
36.2.3发送指令消息 417
36.2.5关闭设备 420
36.2.6使用等待和通知标志 421
36.2.7获得MCI系统信息 422
36.3关于指令串接口 423
36.3.1使用MciSendString函数发送指令字符串 423
36.3.2关于指令串的附加信息 423
37.1.1音响服务器的类型 424
37.1.2音响服务器的级别 424
37.1音响服务器 424
第37章音响系统 424
37.3音响文件格式 425
37.2.3MIDI映射器 425
37.2.2低级音响函数 425
37.2.1高级音响函数 425
37.2Windows音响结构 425
37.4参考文献 426
37.3.1使用RIFF文件 426
第38章高级音响 427
38.1函数前辍 427
38.2播放波形音响 427
38.2.1播放波形音响中的限制 427
38.2.2使用SndPlaySound函数 428
38.3使用MCI播放和记录音响 430
38.2.3播放系统警告音响 430
38.3.1MCI音响数据类型 431
38.3.2MCI音响命令 431
38.3.3打开MCI音响设备 432
38.3.4MCI错误处理 435
38.3.5启动重播 436
38.3.6改变当前位置 439
38.3.7设置时间格式 440
38.3.8关闭MCI音响设备 441
38.3.9获取设备和媒体的信息 441
38.3.10波形音响设备的记录 444
38.3.11使用MCIMIDI序列发生器 447
38.4MIDI绘图仪 448
38.4.1MIDI符号规定 448
38.4.2MIDI绘图仪和Windows 449
38.4.3MIDI绘图仪的体系结构 449
38.4.4通道映射 449
38.4.5插补映射 449
38.4.6键映射 450
38.5授权的MIDI文件 450
38.4.7映射和MIDI消息 450
小结 450
38.5.2MIDI文件的偏写说明 451
38.5.1关于基础级和扩展级的合成器 451
38.5.5使用MARKMIDI 452
实用程序 452
38.5.3标准的MIDI插补分配 452
38.5.4标准的MIDI键分配 452
第39章低级音响 453
39.1函数前缀 453
39.2使用低级音响服务 453
39.2.1询问音响设备 453
39.2.2打开及关闭音响设备 455
39.2.3分配及配备音响数据块 455
39.2.4管理音响数据块 456
39.2.5使用MMTIME结构 458
39.3播放波形音响 459
39.3.1波形输出数据类型 459
39.2.6用音响函数来处理错误 459
39.3.2查询波形输出设备 460
39.3.4指定波形数据格式 462
39.3.3打开波形输出设备 462
39.3.5写波形数据 466
39.3.6获取当前重放位置 470
39.3.7停止、暂停及重新启动重放 470
39.3.9改变波形重放音量 471
39.3.8关闭波形输出设备 471
39.4记录波形音响 472
39.4.1波形输入数据类型 472
39.4.2查询波形输入设备 472
39.3.10改变音调及重放速率 472
39.5播放MIDI音响 475
39.5.1MIDI输出数据类型 475
39.5.2查询MIDI输出设备 475
39.5.3打开MIDI输出设备 476
39.5.4发送MIDI消息 477
39.5.5发送缓冲区消息 478
39.5.8改变内部MIDI合成器音量 479
39.5.6用运行状态来发送MIDI消息 479
39.5.7重新设置MIDI输出 479
39.5.10使用带低级MIDI函数的MIDI绘图仪 480
39.5.9预装入带内部MIDI合成器的助音器 480
39.6记录MIDI音响 481
39.6.1MIDI输入数据类型 481
39.6.2询问MIDI输入设备 481
39.6.3打开MIDI输入设备 481
39.6.4管理MIDI记录 482
39.7.1查询辅助音响设备 484
39.7辅助音响设备 484
39.6.6接收运行状态消息 484
39.6.5接收带时间标记的MIDI消息 484
39.7.2改变辅助音响设备的音量 485
41.2.4在文件中定位新位置 485
39.8音响裁剪板格式 486
第40章多媒体计时器 487
40.1函数前缀 487
40.2计时器服务 487
40.2.1计时器数据类型 487
40.2.2使用计时器服务 487
40.2.5建立最小计时器分辩率 488
40.2.4确定最大和最小事件周期 488
40.2.3获取系统时间 488
40.2.6启动计时器事件 489
40.2.7中断计时器事件 490
40.2.8使用计时器反调函数 490
第41章多媒体文件I/O 492
41.1多媒体文件I/O服务介绍 492
41.1.1与MS-DOS、C运行时库及Windows文件I/O进行比较 492
41.1.2函数前缀 493
41.1.3数据类型 493
41.2完成基本文件I/O 493
41.2.1打开文件 493
41.2.2建立及删除文件 495
41.2.3读写文件 495
41.3完成带缓冲区的文件I/O 496
41.3.1确定何时使用带缓冲区的文件I/O 496
41.3.2为带缓冲区的文件I/O打开一个文件 496
41.3.3I/O缓冲区控制函数 497
41.4使用RIFF文件 498
41.4.1RIFF文件介绍 498
41.4.4建立RIFFChunk 499
41.4.MMCKINFO结构 499
41.4.3产生四字符码 499
41.4.5导向RIFF文件 500
41.4.6RIFF文件I/O举例 502
41.5MMIOINFO结构 504
41.6直接访问文件I/O缓冲区 504
41.6.1获取文件I/O缓冲区信息 505
41.6.2读写文件I/O缓冲区 505
41.6.3改进文件I/O缓冲区 505
41.6.4访问文件I/O缓冲区举例 506
41.8使用常规I/O过程 507
41.6.5终止文件I/O缓冲区的直接访问 507
41.7.1打开内存文件 507
41.7完成内存文件上的文件I/O 507
41.8.1用常规I/O过程打开文件 508
41.8.2写一个I/O过程 508
41.8.3安装一个I/O过程 509
42.3数据类型 510
42.2Windows32API中的Unicode支持 510
42.1总则 510
第42章Unicode 510
42.4函数原型 511
42.5基本步骤 511
42.6窗口类 512
42.7消息 514
42.8子类产生和自动消息传送 515
42.9资源 515
42.11C运行时库 516
42.10字符串函数 516
42.12文件名 517
42.13特殊字符 518
42.14Unicode的普通文本格式 519
42.15特殊标题 520
42.16工作环境 520
附录A虚拟键码 522
附录B错误代码 526
B.1错误代码的字母顺序表 526
B.2错误代码值顺序表 539
词汇表 554