第1章 窗口 3
1.1 关于窗口 3
1.1.1 桌面窗口 3
1.1.2 应用程序窗口 3
第一部分 窗口管理 3
1.1.3 创建窗口 6
1.1.4 窗口句柄 8
1.1.5 窗口风格 9
1.1.6 从属窗口 13
1.1.7 被禁止的窗口 14
1.1.8 前台窗口和后台窗口 14
1.1.9 显示状态 14
1.1.10 尺寸和位置 17
1.2.1 创建主窗口 20
1.1.11 窗口销毁 20
1.2 使用窗口 20
1.2.2 创建、统计子窗口及改变子窗口的大小 22
1.2.3 销毁一个窗口 24
1.3 函数和消息 25
第2章 消息与消息队列 27
2.1 关于消息与消息队列 27
2.1.1 消息 27
2.1.2 消息路由 27
2.1.3 消息处理 29
2.1.4 投递和发送消息 30
2.1.5 消息种类 31
2.1.6 消息过滤 32
2.1.7 消息死锁 32
2.2.1 创建消息环 33
2.2 使用消息及消息队列 33
2.2.2 检查消息队列 35
2.2.3 投递消息 36
2.2.4 发送消息 37
2.3 函数 39
第3章 窗口类 40
3.1 关于窗口类 40
3.1.1 窗口类的种类 40
3.1.2 Windows系统如何确定类 41
3.1.3 类的所属关系 41
3.1.4 窗口类的元素 42
3.1.5 类和私有设备描述表 46
3.2 使用窗口类 46
3.3 函数 49
4.1.1 窗口过程的结构 50
4.1 关于窗口过程 50
第4章 窗口过程 50
4.1.2 默认窗口过程 51
4.1.3 建窗口过程子类 51
4.1.4 建窗口过程超类 52
4.2 使用窗口过程 53
4.2.1 设计窗口过程 54
4.2.2 联系窗口过程和窗口类 55
4.2.3 为窗口建子类 55
4.3 函数 57
第5章 键盘输入 58
5.1 关于键盘输入 58
5.1.1 键盘输入方式 58
5.1.2 键盘焦点和激活 58
5.1.3 击键消息 59
5.1.4 字符消息 61
5.1.6 击键和字符转换 62
5.1.5 键状态 62
5.1.7 热键支持 63
5.2 使用键盘输入 63
5.2.1 处理击键消息 63
5.2.2 转换字符消息 65
5.2.3 处理字符消息 65
5.2.4 使用插入符 66
5.2.5 显示键盘输入 67
5.3 函数和消息 74
第6章 鼠标输入 75
6.1 关于鼠标输入 75
6.1.1 鼠标光标 75
6.1.2 捕捉鼠标 75
6.1.3 鼠标配置 76
6.1.4 鼠标消息 76
6.1.5 WM_CHITTEST消息 78
6.1.6 窗口活动 79
6.2 使用鼠标输入 79
6.2.1 跟踪鼠标光标 80
6.2.2 用鼠标器画线 80
6.2.3 处理双击消息 83
6.2.4 选择正文中的某一行 84
6.3 函数和消息 88
第7章 计时器 90
7.1 计时器 90
7.2 使用计时器 90
7.2.1 创建计时器 90
7.2.2 销毁计时器 92
7.2.3 创建鼠标陷井 92
7.3 函数 96
8.1.2 钩子过程 97
8.1.1 钩子链 97
第8章 钩子 97
8.1 关于钩子 97
8.1.3 钩子种类 98
8.2 使用钩子 100
8.2.1 安装和释放钩子过程 100
8.2.2 监视系统事件 101
8.3 函数 110
第9章 控制框 111
9.1 控制框 111
9.1.1 预定义控制框 111
9.1.2 定制控制框 112
9.1.3 通知消息 113
9.2 消息 114
10.1 关于按钮 115
10.1.1 按钮的种类和风格 115
第10章 按钮 115
10.1.2 按钮状态 118
10.1.3 按钮通知消息 120
10.1.4 发给按钮的消息 120
10.1.5 按钮颜色消息 121
10.1.6 处理默认消息 121
10.2 使用按钮 123
10.2.1 在对话框之外创建一个按钮 123
10.2.2 使用非自画按钮 124
10.2.3 使用自画按钮 127
10.3 函数和消息 128
第11章 列表框 130
11.1 关于列表框 130
11.1.1 列表框风格 130
11.1.3 列表框的通知消息 132
11.1.4 发给列表框的消息 132
11.1.2 列表框函数 132
11.1.5 默认窗口消息处理 134
11.2 使用列表框 135
11.2.1 创建一个简单的列表框 135
11.2.2 在单选项列表框中创建一个目标列表 138
11.2.3 创建一个多选项列表框 140
11.2.4 创建一个自画项列表框 143
11.3 函数和消息 148
第12章 编辑控制框 149
12.1 关于编辑控制框 149
12.1.1 编辑控制框样式 149
12.1.2 文本缓冲区 150
12.1.3 改变格式化矩形 151
12.1.4 文本操作 152
12.1.5 编辑控制框通知 156
12.1.6 默认消息处理 157
12.2 使用编辑控制框 161
12.2.1 用编辑控制框进行简单的字处理 161
12.2.2 使用单行编辑控制框 163
12.3 函数和消息 166
第13章 组合框 167
13.1 关于组合框 167
13.1.1 组合框的类型和样式 167
13.1.2. 组合框列表 168
13.1.3 编辑控制框的选择域 170
13.1.4 自画组合框 170
13.1.5 给组合框建子类 171
13.1.6 组合框的专用特性 172
13.1.7 组合框通知 173
13.1.8 默认组合框操作 173
13.2.1 创建一个简单组合框 177
13.2 使用组合框 177
13.2.2 创建自画组合框 181
13.2.3 给组合框建子类 189
13.3 函数和消息 194
第14章 滚动条 196
14.1 关于滚动条 196
14.1.1 滚动条的组成部分 196
14.1.2 标准滚动条及滚动条控制框 197
14.1.3 滚动框的位置与滚动范围 198
14.1.4 滚动条请求 199
14.1.5 滚动条的键盘接口 201
14.1.6 滚动客户区 201
14.1.7 滚动条的可见性 202
14.2 使用滚动条 203
14.2.1 创建滚动条 203
14.1.8 滚动条的颜色及规范 203
14.2.2 滚动文本 204
14.2.3 滚动位图 210
14.2.4 为标准滚动条创建键盘接口 219
14.3 函数和消息 220
第15章 静态控制框 221
15.1 关于静态控制框 221
15.1.1 静态控制框的类型和样式 221
15.1.2 图标的消息 223
15.1.3 静态控制框的颜色消息 224
15.1.4 默认消息处理 224
15.2 使用静态控制框 225
15.3 消息 227
第16章 菜单 228
16.1 关于菜单 228
16.1.1 菜单栏和弹出式菜单 228
16.1.4 菜单项 230
16.1.2 菜单句柄 230
16.1.3 类菜单 230
16.1.5 菜单的键盘访问 234
16.1.6 菜单的创建 235
16.1.7 菜单的显示 236
16.1.8 菜单的销毁 236
16.1.9 菜单消息 236
16.1.10 对菜单的修改 237
16.2 使用菜单 237
16.2.1 使用菜单模板资源 237
16.2.2 创建浮动的弹出式菜单 242
16.2.3 使用菜单项位图 245
16.2.4 创建自画菜单项 250
16.2.5 使用定制的选择标志位图 256
16.3 函数和消息 265
17.1.1 加速键表 266
第17章 键盘加速键 266
17.1 关于键盘接口 266
17.1.2 加速键表的创建 267
17.1.3 加速键的击键分配 267
17.1.4 加速键和菜单 268
17.2 使用键盘加速键 269
17.2.1 使用加速键表资源 269
17.2.2 使用运行时创建的加速键表 275
17.3 消息和函数 283
第18章 对话框 285
18.1 关于对话框 285
18.1.1 什么时候使用对话框 285
18.1.2 属主窗口 286
18.1.3 消息框 286
24.3 函数 287
18.1.4 模式对话框 287
18.1.5 无模式对话框 288
18.1.6 对话框模板 289
18.1.7 对话框过程 294
18.1.8 对话框的键盘接口 299
18.1.9 对话框的设置 301
18.1.10 定制的对话框 303
18.2 使用对话框 304
18.2.1 显示消息框 304
18.2.2 创建模式对话框 304
18.2.3 创建无模式对话框 306
18.2.4 初始化对话框 309
18.2.5 在内存中创建模板 310
18.3 函数和消息 312
19.1.1 矩形坐标 313
19.1.2 矩形的操作 313
19.1 关于矩形 313
第19章 矩形 313
19.2 矩形的使用 314
19.3 函数 321
第20章 绘制 322
20.1 关于绘制 322
20.1.1 何时在窗口内绘制 322
20.1.2 WM_PAINT消息 323
20.1.3 不在WM_PAINT消息中绘制 325
20.1.4 窗口坐标系 325
20.1.5 窗口区域 326
20.1.6 窗口背景 326
20.1.7 最小化窗口 327
20.1.8 窗口大小 328
20.1.9 非客户区 328
20.1.10 子窗口 329
20.1.11 显示设备描述表 330
20.1.12 锁定窗口更新 335
20.1.13 累加限定矩形 335
20.2 WM_PAINT消息的使用 335
20.2.2 客户区内的绘制 336
20.2.2 全客户区的重新绘制 337
20.2.3 更新区域内的重新绘制 338
20.2.4 客户区的无效 339
20.2.5 最小化窗口的绘制 340
20.2.6 定制窗口背景的绘制 341
20.3 GetDC函数的使用 342
20.3.1 用鼠标绘制 342
20.3.2 计时区间内的绘制 343
20.4 函数和消息 346
第21章 光标 347
21.1 关于光标 347
21.1.2 鼠标和光标 348
21.1.3 光标的创建 348
21.1.1 光标热点 348
21.1.4 光标的定位和外形 349
21.1.5 光标限定 349
21.1.6 光标的销毁 349
21.1.7 光标的复制 349
21.2 光标的使用 350
21.2.1 光标的创建 350
21.2.2 光标的显示 352
21.2.3 光标的限定 354
21.2.4 鼠标陷井的创建 354
21.2.5 使用键盘移动光标 358
21.3 函数和消息 360
第22章 插入符 362
22.1 关于插入符 362
22.2 插入符的使用 363
22.2.1 插入符的创建和显示 363
22.2.2 插入符的隐藏 364
22.2.3 插入符的销毁 365
22.2.4 闪烁时间的调整 366
22.2.5 键盘输入的处理 366
22.3 函数 373
第23章 图符 374
23.1 关于图符 374
23.1.1 图符的热点 375
23.1.2 图符的其它创建方法 375
23.1.3 图符的显示 375
23.1.4 图符的销毁 376
23.1.5 图符的复制 376
23.2 图符的使用 376
23.2.1 图符的创建 376
23.2.2 图符的显示 379
23.2.3 鼠标陷井的创建 380
23.2.4 图符资源的共享 382
23.3 函数和消息 383
第24章 窗口属性 384
24.1 关于窗口属性 384
24.2 使用窗口属性 384
24.2.1 增加一窗口属性 384
24.2.2 访问一窗口属性 385
24.2.3 列出指定窗口的窗口属性 386
24.2.4 删除一窗口属性 386
第25章 剪贴板 388
25.1 关于剪贴板 388
25.1.1 剪贴板格式 388
25.1.2 剪贴板操作 389
25.1.3 剪贴板察看程序 391
25.1.4 剪贴板命令 392
25.2 使用剪贴板 392
25.2.1 实现Cut、Copy 和Paste命令 393
25.2.2 创建剪贴板察看程序窗口 404
25.3 函数和消息 411
第26章 动态数据交换 412
26.1 关于动态数据交换 412
26.1.1 动态数据交换协议 412
26.1.2 Windows动态数据交换的使用 413
26.1.3 用户眼中的动态数据交换 413
26.1.4 动态数据交换的概念 413
26.1.5 动态数据交换消息 415
26.1.6 动态数据交换消息流程 416
26.2.1 启动会话 417
26.2 动态数据交换的使用 417
26.1.7 参数紧缩函数 417
26.2.2 传输一个项目 419
26.2.3 创建永久性数据链 424
26.2.4 执行服务器应用程序中的命令 430
26.2.5 终止会话 430
26.3 函数和消息 431
第27章 多文档接口 433
27.1 关于多文档接口 433
27.1.1 框架、客户和子窗口 433
27.1.2 子窗口的创建 434
27.1.3 子窗口的激活 434
27.1.4 菜单 434
27.1.5 加速键 435
27.1.6 子窗口的大小调整与重排 435
27.1.8 子窗口数据 436
27.1.7 图符标题窗口 436
27.2 多文档接口的使用 437
27.2.1 注册子窗口类和框架窗口类 437
27.2.2 创建框架窗口和子窗口 438
27.2.3 写主消息循环 439
27.2.4 写框架窗口过程 440
27.2.5 写子窗口过程 440
27.2.6 创建子窗口 441
27.3 函数和消息 442
第二部分 图形设备接口 447
第28章 设备描述表 447
28.1 关于设备描述表 447
28.1.1 图形对象 447
28.1.2 图形方式 448
28.1.3 设备描述表类型 448
28.1.4 设备描述表操作 450
28.2 设备描述表函数的使用 452
28.2.1 取得私有显示设备描述表 452
28.2.2 创建打印机设备描述表 454
28.2.3 访问打印机的能力 455
28.2.4 访问图形对象属性和选择新图形对象 456
28.3 函数和消息 457
第29章 位图 458
29.1 关于位图 458
29.1.1 位图类型 459
29.1.2 位图、设备描述表和绘图表面 461
29.1.3 位图的旋转 462
29.1.4 位图的缩放 462
29.1.5 位图的画刷作用 462
29.1.6 位图的存储 464
29.2.1 捕捉图象 465
29.2 位图的使用 465
29.2.2 图像的缩放 467
29.2.3 存储图像 468
29.3 函数 472
第30章 画刷 473
30.1 关于画刷 473
30.1.1 画刷原点 473
30.1.2 逻辑画刷类型 474
30.2 使用画刷 476
30.3 函数 483
第31章 画笔 484
31.1 关于画笔 484
31.1.1 修饰画笔 484
31.1.2 几何画笔 484
31.1.3 画笔属性 485
31.2 画笔的使用 487
31.2.1 对话框模板的修改 488
31.2.2 处理对话框输入 489
31.3 函数 492
第32章 区域 493
32.1 关于区域 493
32.1.1 区域的建立和选择 493
32.1.2 区域的操作 493
32.2 区域的使用 496
32.2.1 利用区域来裁剪输出 496
32.2.2 利用区域进行击中测试 502
3.23 函数 502
第33章 直线和曲线 503
33.1 关于直线和曲线 503
33.1.1 直线 503
33.1.2 曲线 504
33.1.3 直线和曲线的组合 505
33.1.4 直线和曲线的属性 506
33.2 直线和曲线的使用 507
33.2.1 绘制标志 507
33.2.2 绘制饼图 508
33.3 函数 513
第34章 填充图形 514
34.1 关于填充图形 514
34.1.1 椭圆形 514
34.1.2 弦形 514
34.1.3 扇形 515
34.1.4 多边形 515
34.1.5 矩形 516
34.2 填充图形的使用 516
34.3 函数 522
第35章 字体与文体 523
35.1 关于字体 523
35.1.1 字体 523
35.1.2 字体系列 524
35.1.3 光栅字体、矢量字体和TrueType字体 525
35.1.4 字体所用的字符集 525
35.1.5 字体安装和删除 527
35.1.7 嵌入式字体 529
35.2 关于文本输出 530
35.2.1 文本的格式化 530
35.2.2 文本绘制 534
35.3 字体和文本输出函数的运用 535
35.3.1 使用库存字体绘制文本 535
35.3.2 逻辑字体的建立 536
35.3.3 枚举安装字体 536
35.3.5 文本对齐的设置 539
35.3.4 设备文本能力的检查 539
35.3.6 同行不同字体文本的绘制 540
35.3.7 文本行的旋转 542
35.3.8 字符轮廓的检取 543
35.3.9 可移植性TrueType规范的运用 545
35.3.10 PANOSE数的使用 547
35.3.11 定制字体的建立 547
35.4 字体和文本函数 550
第36章 颜色 551
36.1 关于颜色 551
36.1.1 颜色和光 551
36.1.2 颜色和视频显示技术 552
36.1.3 颜色操作 552
36.2.1 颜色的建立 555
36.2 颜色的运用 555
36.3 函数和消息 556
第37章 路径 557
37.1 关于路径 557
37.1.1 轮廓和填充路径 558
37.1.2 路径的转换 558
37.1.3 裁剪路径 558
37.1.4 路径到区域的转换 559
37.1.5 曲线路径 559
37.2 路径的使用 560
37.3 函数 563
第38章 裁剪 565
38.1 关于裁剪 565
38.1.1 裁剪区域 565
38.1.2 裁剪路径 566
38.2 裁剪的运用 566
38.3 函数 568
第39章 坐标空间和转换 569
39.1 关于坐标空间和转换 569
39.1.1 坐标空间的转换 570
39.1.2 世界坐标系空间到页面空间的转换 571
39.1.3 页面空间到设备空间的转换 577
39.1.4 设备空间到物理空间的转换 579
39.1.5 默认转换 579
39.2 坐标空间和转换的使用 579
39.3 函数 582
第40章 元文件 584
40.1 关于元文件 584
40.1.1 增强格式元文件 585
40.1.2 Windows格式元文件 587
40.2 元文件的使用 587
40.2.1 建立增强元文件并存盘 587
40.2.2 显示一图片并存入增强元文件 590
40.2.3 增强元文件的打开及其内容的显示 591
40.2.4 增强元文件的编辑 592
40.3 函数 593
第41章 打印和打印缓冲池 594
41.1 关于打印 594
41.1.1 默认打印接口 594
41.1.2 打印机设备描述表 595
41.1.3 打印机指令 595
41.1.4 WYSIWYG显示和输出 596
41.2 打印函数的使用 597
41.2.1 .BMP文件的打开和显示 597
41.2.2 打印对话框的显示和打印机设备的描述表的检取 600
41.2.3 准备打印 601
41.2.4 打印文档 604
41.3 函数和消息 608