第1章 Windows应用程序基础 1
1.1 背景知识 1
1.2 本书编排 3
1.3 Windows的设计思想 4
1.4 重要的Windows程序设计概念 8
1.5 编写Windows程序的注意事项 16
第2章 Windows应用程序的结构 17
2.1 传统程序的问题 17
2.2 开发Windows程序的一般流程 17
2.3 Windows应用程序的结构 23
2.3.1 模块定义文件(.DEF) 23
2.3.2 制作文件(.MAK) 24
2.3.3 源代码文件(.C) 26
2.3.4 数据类型及书写约定 27
2.3.5 程序调用点 29
2.3.6 登录窗口类 30
2.3.7 创建和显示窗口 32
2.3.8 消息循环 34
2.3.9 窗口过程中消息的处理 35
2.4 概念的延伸 38
2.4.1 Windows程序中的调用关系 38
2.4.2 队列消息与非队列消息 39
2.4.3 “占先式”多任务作业 40
2.5 结论 40
3.1 形式多样的窗口 41
3.1.1 窗口类型的变化 41
第3章 编制各种窗口程序 41
3.1.2 背景颜色的变化 43
3.1.3 光标的变化 43
3.1.4 图标的变化 44
3.1.5 标题条的变化 44
3.1.6 窗口种类的变化 45
3.2 在窗口中输出文本 45
3.2.1 WM-PAINT消息与无效矩形 46
3.3 图形设备接口(GDI)简介 47
3.3.1 设备环境 48
3.3.2 文本输出函数TextOut 50
3.3.3 字体 52
3.3.4 格式化文本输出 55
3.4 如何建立弹出式窗口 56
3.5 如何建立各种子窗口 64
3.6 文本输出技巧 72
第4章 键盘及鼠标接口 81
4.1 有关键盘的基本概念 81
4.1.1 键盘 81
4.1.2 键与字符 82
4.1.3 键盘与输入焦点 82
4.1.4 键盘驱动程序 82
4.2 击键消息 83
4.2.1 系统键与非系统键 84
4.2.2 虚拟键代码 85
4.2.3 键的状态 88
4.3 字符消息 89
4.4 Windows字符集 92
4.5 通用化 94
4.6 键盘消息与字符消息实例 96
4.7 鼠标消息 102
4.7.1 客户区鼠标消息 102
4.7.2 非客户区鼠标消息 105
4.8 命中测试 106
4.9 左右按钮、热点和双击时间 107
4.10 消息派生消息 108
4.11 用键盘模拟鼠标 109
4.12 鼠标光标形状的修改 110
4.13 鼠标程序实例 111
4.14 从鼠标接口到键盘接口的转换 117
5.1 Windows的运行模式 126
第5章 动态内存管理 126
5.1.1 近地址和远地址 127
5.1.2 保护模式 129
5.1.3 虚拟内存管理器VMM 130
5.2 内存类型 130
5.3 Windows如何组织内存 131
5.3.1 固定段和可移动段 132
5.3.2 可抛弃内存 133
5.4 动态内存管理 133
5.5 Windows开销 135
5.6 内存模式 135
5.6.1 多个代码段 138
5.6.3 程序段属性 139
5.6.2 内存模式与Windows 139
5.6.4 存在的问题 140
5.7 内存分配程序设计 141
5.7.1 锁定内存块 141
5.7.2 全局内存函数 143
5.7.3 可抛弃的全局内存 146
5.7.4 分配局部内存 146
5.7.5 锁定用户数据段 148
5.8 与内存管理有关的程序实例 148
第6章 系统计时器 154
6.1 处理计时器的函数 154
6.2 WM-TIMER消息与08H,1CH中断 156
6.3 计时器的使用方式 157
6.4 计时器综合应用(数字时钟) 162
第7章 Windows资源 172
7.1 资源概述 172
7.2 字符串资源 173
7.3 加速键资源 174
7.3.1 如何定义加速键 174
7.3.2 如何在程序中引用加速键 175
7.4 菜单资源 177
7.4.1 如何定义菜单 177
7.4.2 如何在程序中使用菜单 181
7.4.3 菜单的应用 182
7.5 图标资源 183
7.5.1 图标句柄 183
7.5.2 在程序中使用图标 184
7.6 光标资源 185
7.8 消息框 186
7.7 位图资源 186
7.9 滚动条 189
7.9.1 滚动条的范围和位置 190
7.9.2 滚动条消息 190
7.10 用户自定义资源 191
7.11 字体 192
7.11.1 TrueType 192
7.11.2 利用TrueType字体编程 194
7.12 滚动条程序实例 198
7.13 如何制作菜单 204
7.13.1 弹出式菜单 204
7.13.2 浮动式菜单 214
7.13.3 在SIMMENU程序中加上加速键接口 221
7.14 访问资源文件中的图标 224
7.15 在程序中使用自定义的光标 227
7.16 菜单与位图的结合 231
7.17 字符串及用户自定义资源的应用 237
第8章 子窗口控件 243
8.1 控件的类型 243
8.2 作为独立窗口的控件 244
8.2.1 发向控件的消息 244
8.2.2 来自控件的消息 245
8.3 控件类 245
8.3.1 BUTTON类 246
8.3.2 EDIT和STATIC类 262
8.3.3 LISTBOX类 267
8.3.4 COMBOBOX类 280
8.3.5 SCROLLBAR类 286
第9章 对话框的使用 295
9.1 对话框的种类 295
9.2 对话框模板 297
9.3 对话框函数 302
9.4 如何使用对话框 303
9.4.1 再论非模态对话框 304
9.4.2 一个简单的模态对话框 306
9.4.3 设计查找和替换对话框 322
9.4.4 非模态对话框设计实例 332
第10章 图形设备接口(GDI) 344
10.1 设备环境信息 344
10.2 保存设备环境 346
10.3 获取颜色信息 347
10.4 映射模式 348
10.5 定制模式实例 352
第11章 Windows绘图函数的使用 359
11.1 画点函数 359
11.2 画线函数 359
11.2.1 库存画笔 360
11.2.2 创建、选择和删除画笔 361
11.3 画封闭区域的函数 362
11.3.1 封闭图形的边界框 363
11.3.2 画椭圆程序实例 364
11.3.3 Polygon函数 368
11.3.4 用刷子进行填充 368
11.3.5 位图刷子 370
11.3.6 位图刷子的创建与使用 371
11.3.7 绘图函数的应用实例 372
11.4 剪取矩形区域 376
11.4.1 矩形函数及区域 376
11.4.2 矩形区域的剪取 378
11.4.3 不停地显示随机矩形 378
11.5 其它六个绘图函数 382
第12章 剪贴板 385
12.1 剪贴板的功能 385
12.2 打开和关闭剪贴板 386
12.3 剪贴板数据格式 386
12.3.1 文本格式 387
12.3.2 位图格式 395
12.3.3 元文件(meta file)和元文件图片格式 396
12.4 复杂的剪贴板应用 398
12.4.1 剪贴板中的多种数据格式 399
12.4.2 延迟提交 399
12.4.3 私有数据格式 400
12.5 剪贴板浏览器实例 402
第13章 多文档界面(MDI) 408
13.1 有关术语 408
13.2 MDI的构成 409
13.3 MDI的创建 410
13.3.1 消息循环 410
13.3.2 框架窗口 410
13.3.3 MDI客户窗口 411
13.3.4 MDI子窗口 411
13.4 建立MDI的实例程序 414
14.1 简单输出 424
第14章 打印机输出 424
14.2 打印原理 432
14.2.1 PeekMessage 433
14.2.2 结束过程(Abort Procedure) 434
第15章 Windows消息分类 445
15.1 系统消息 445
15.2 系统数据消息 446
15.3 初始化消息 446
15.4 窗口管理消息 447
15.5 输入消息 450
15.6 剪贴板消息 452
15.7 控件消息 453
15.8 按钮控制消息 453
15.9 编辑控件消息 454
15.10 列表框控件消息 457
15.11 组合框控件消息 459
15.12 自画控件消息 461
15.13 通报消息 462
15.13.1 编辑通报码 462
15.13.2 按钮通报码 462
15.13.3 列表框通报码 462
15.13.4 组合框通报码 462
15.14 滚动条消息 463
15.15 非客户区消息 463
15.16 多文档界面消息 465
15.17 DDE消息 466
15.18 Windows 3.1中的新消息 467
参考文献 468