目录 1
第零章 简介 1
0.1 欢迎 1
0.2 环境标志 1
0.3 微软大学课程 2
0.4 课程材料 2
0.5 您的期望 3
0.6 课程纲要:第一天 3
0.7 课程纲要:第二天 4
0.8 课程纲要:第三天 5
0.9 课程纲要:第四天 6
第一章 基于Windows的应用程序体系结构 8
1.1 本章内容 8
1.2 窗口概述 9
1.3 讨论:什么是窗口 9
1.4 窗口存在于什么地方 9
1.5 窗口的特性是什么 10
1.6 讨论:什么是窗口的结构 11
1.7 窗口的风格 11
1.9 讨论:什么是类结构 13
1.8 标识 13
1.10 类风格 14
1.11 DefWindowProc如何使用类结构信息 15
1.12 BeginPaint产生WM_ERASEBKGND消息 15
1.13 绘画窗口背景 16
1.14 屏幕如何重新绘画 17
1.15 图标窗口 18
1.16 跟踪客户区的光标 19
1.18 实验一:获取窗口信息 21
1.17 小结:窗口概述 21
1.19 实验二:实现击键测试和SetCursor 22
1.20 实验三:捕捉WM_ERASEBKGND(选做) 22
1.21 Windows消息系统 23
1.22 发送和传递消息 23
1.23 Windows如何安排消息处理 24
1.24 Windows钩过滤消息 25
1.25 小结:Windows消息系统 27
1.26 实验四:完成跟踪消息循环 27
1.28 基于Windows的应用程序概述 28
1.27 实验五:实现Windows的钩子 28
1.29 基于Windows应用程序的基础 29
1.30 应用程序模块、任务和实例 30
1.31 什么是任务库 32
1.32 什么是模块库 33
1.33 演示:观察可执行文件头 34
1.34 Windows如何使用资源 35
1.35 应用程序如何使用系统颜色 35
1.36 .INI文件在应用程序开发环境中的作用 36
1.37 小结:基于Windows的应用程序概述 37
第二章 基于Windows环境的内存管理 38
2.1 本章内容 38
2.2 在Intel处理器上的Windows内存体系结构 39
2.3 Intel处理器上的Windows可用模式 39
2.4 Intel处理器上有限的物理内存 39
2.5 什么是虚拟内存 40
2.6 使用保护模式接口 41
2.7 使用虚拟内存获取386增强模式 42
2.8 页锁定:使段固定在内存 43
2.9 Intel处理器上的多任务 44
2.10 小结:Intel处理器上的Windows内存体系结构 45
2.11 段分配 45
2.12 复习:Windows如何分配段 46
2.13 全局和局部堆 47
2.14 分配全局内存 48
2.15 内存目标的限制 49
2.16 小结:段分配 50
2.17 可抛弃目标和用户自定义资源 50
2.18 使用完数据段空间 51
2.19 可抛弃内存目标 52
2.20 管理资源表 54
2.21 定义用户自定义资源 55
2.22 使用用户自定义资源 56
2.23 使用C定义资源数据 57
2.24 小结:可抛弃的内存块和用户自定义的资源 58
2.25 实验六:实现用户自定义资源 58
2.26 代码段的管理 59
2.27 分解代码段 59
2.28 编译选择缺省代码模式 60
2.29 如何使用大模式 61
2.30 在应用程序中声明代码模式 62
2.31 如何对段进程强制段 63
2.32 如何对段进程控制段 63
2.33 在.DEF文件中指明段属性 64
2.34 小结:管理代码段 65
2.35 实验七:设置应用程序的段 65
3.2 消息是如何被处理的 66
3.1 本章内容 66
第三章 基于Windows环境的多任务 66
3.3 改变GetMessage的行为 67
3.4 允许其他应用程序运行 68
3.5 监听用户输入 69
3.6 Windows的消息循环什么时候得到控制 69
3.7 小结:基于Windows环境的多任务 70
3.8 实验八:观察PeekMessage的功能 71
4.1 本章内容 72
4.2 GDI基础 72
第四章 优化GDI 72
4.3 GDI概述 73
4.4 什么是设备场景 74
4.5 设备场景的内容 74
4.6 显示颜色:逻辑和系统调色板 75
4.7 裁剪区域是客户区中有边界的一块区域 77
4.8 获取DC 78
4.9 小结:GDI概述 79
4.10 修改和显示位图 79
4.11 处理位图的一般过程 80
4.12 获取位图句柄 81
4.13 修改位图 82
4.14 显示位图 83
4.15 什么是光栅操作码(ROP) 83
4.16 演示:计算光栅操作码 84
4.17 小结:修改和显示位图 85
4.18 修改和显示DIB 85
4.19 DIB和位图的差异 86
4.20 DIB文件格式 87
4.21 从DIB中获取位图把柄 87
4.22 显示DIB 88
4.23 如何从位图转化为DIB 89
4.24 如何从DIB转换为位图 91
4.25 小结:优化GDI 93
4.26 实验九:观察BitBlt的功能 93
第五章 处理文本输出 94
5.1 本章内容 94
5.2 什么是字体 94
5.3 TrueType在WYSIWYG中起什么作用 95
5.4 选择字体 96
5.5 检查是否有TrueType 97
5.6 判断字体是否是TrueType 98
5.7 创建字体 99
5.8 优化文本输出:ExtTextOut 100
5.9 优化文本输出:SetTextAlign 101
5.10 小结:处理文本输出 102
5.11 实验十:观察字体映射器 102
5.12 实验十一:优化文本输出 103
6.1 本章内容 104
第六章 实现DLL 104
6.2 DLL概述 105
6.3 什么是DLL 105
6.4 静态和动态链接在连接时的区别 106
6.5 静态和动态链接装入时间的区别 107
6.6 为什么使用动态链接 108
6.7 使用DLL的好处 109
6.8 应用程序如何连接DLL 110
6.9 隐含链接——在DEF文件中使用IMPORTS 111
6.11 显式链接 112
6.10 隐含链接——IMPLIB 112
6.12 小结:动态链接库概述 113
6.13 建立DLL 114
6.14 DLL的结构 114
6.15 建立过程 115
6.16 在.DEF文件中声明DLL 116
6.17 建立入口点例程——LibEntry 116
6.18 建立入口点例程——LibMain 117
6.19 建立出口点例程——WEP 118
6.20 加入用户自定义初始化和出口点例程 119
6.21 编译DLL 120
6.22 小结:建立DLL 121
6.23 实验十二:把静态库改为DLL 121
6.24 处理有关DLL的问题 122
6.25 在堆栈段中存储变量 122
6.26 C编译在哪儿分配变量 123
6.27 解决SS!=DS冲突 124
6.28 DLL不是任务 125
6.29 获取和存储任务及实例数据 126
6.30 在DLL中使用资源 127
6.31 解决顺序值 128
6.32 通过DLL钩子输出例程 129
6.33 小结:处理有关的DLL问题 130
第七章 处理打印作业 131
7.1 本章内容 131
7.2 打印的脱机信息 131
7.3 分块打印 133
7.4 打印代码概述 134
7.5 设置打印作业 135
7.6 实现取消打印对话框 136
7.7 创建取消过程 138
7.8 传送数据到打印机 139
7.9 清除打印作业 141
7.10 小结:处理打印作业 142
7.11 实验十三:实现打印作业的脱机处理 142
第八章 建立用户自定义菜单 143
8.1 本章内容 143
8.2 菜单概述 143
8.3 菜单模板 144
8.4 使窗口反映应用程序的状态 145
8.5 修改浮动的菜单 146
8.6 通过WM_MENUSELECT实现菜单帮助 147
8.7 使用位图作为菜单项 148
8.8 实现自绘制菜单项 149
8.9 演示:实现用户自定义菜单 150
8.10 小结:建立用户自定义菜单 151
8.11 实验十四:建立用户自定义菜单 151
9.1 本章内容 152
9.2 使用WinHelp 152
第九章 建立帮助 152
9.3 帮助系统概述 153
9.4 设计良好的帮助系统的性能 154
9.5 WinHelp 3.1的改进 155
9.6 如何建立帮助文件 156
9.7 建立帮助过程 157
9.8 判断文件的结构 158
9.9 判断一个关联标签系统 159
9.10 演示:帮助文件的组成和专业术语 160
9.12 创建帮助标题 161
9.11 小结:帮助系统概述 161
9.13 写标题文本 162
9.14 增加脚注 163
9.15 插入位图 164
9.16 增加连接(一般) 166
9.17 增加跳转:屏幕之间的连接 167
9.18 加入弹出:连接弹出式窗口 168
9.19 演示:使用WHAT 169
9.20 小结:创建帮助主题 172
9.22 项目文件内容 173
9.21 创建帮助项目文件 173
9.23 使用WHPE创建项目文件 175
9.24 小结:创建帮助项目文件 176
9.25 建立和调试帮助文件 176
9.26 保持一定数量的自由硬盘空间 177
9.27 建立选择主题 178
9.28 建立完全的帮助系统 179
9.29 调试帮助文件 180
9.31 小结 181
9.30 小结:建立和调试帮助文件 181
9.32 实验十五:建立帮助文件 182
第十章 建立用户自定义对话框 183
10.1 本章内容 183
10.2 对话框概述 183
10.3 对话窗口类决定了消息处理的位置 184
10.4 对话框的单位 185
10.5 对话框的键盘处理 186
10.6 公共对话框结构 187
10.7 公共对话框的钩子过程 188
10.8 编写公共对话框 189
10.9 封装对话框中的数据 190
10.10 小结:建立用户自定义对话框 191
10.11 实验十六:建立用户自定义公共对话框 191
10.12 实验十七:封装对话框数据 192
第十一章 修改和创建控制框 193
11.1 本章内容 193
11.2 修改已经存在的控制框 193
11.3 复习:如何定义窗口 194
11.4 修改控制框的形状 195
11.5 复习:如何传送消息到窗口 196
11.6 修改控制框的行为 196
11.7 子分类控制框 197
11.8 衍生控制框 198
11.9 使用特性表存储子例程数据 200
11.10 小结:修改已存在的控制框 201
11.11 实验十八:实现WM_CTLCOLOR(选做) 201
11.12 开发用户自定义控制框 202
11.13 设计用户自定义控制框的考虑 202
11.14 封装控制行为 203
11.15 使用多余的字节存储实例数据 204
11.16 在调用入口点初始化数据 205
11.17 小结:开发用户自定义控制框 206
第十二章 动态数据交换管理数据库 207
12.1 本章内容 207
12.2 DDE概述 207
12.3 为什么使用DDE 208
12.4 服务器概述 208
12.5 客户概述 209
12.6 DDE会话 210
12.7 演示:DDEML的功能 211
12.8 小结:DDE概述 211
12.9 DDEML概述 212
12.10 用DDEML实现DDE 212
12.11 事务的类型 213
12.12 DDE回调函数 214
12.13 事务类 215
12.14 建立DDEML会晤 216
12.16 编写DDEML客户 218
12.15 小结:DDEML概述 218
12.17 DDEML客户概述 219
12.18 建立全局内存目标 220
12.19 初始化数据事务 221
12.20 获取数据 224
12.21 提供客户回调 225
12.22 小结:编写DDEML客户应用程序 226
12.23 编写DDEML服务器应用程序 226
12.24 DDEML服务器程序概述 227
12.25 承认客户-服务器会晤 228
12.26 传送数据句柄 229
12.27 通知客户数据修改 230
12.28 悬挂事务 231
12.29 提供服务器回调 232
12.30 小结:编写DDEML服务器程序 233
12.31 实验十九:基于Windows应用程序的DDEML 233
附录A 调试Windows应用程序 234
附录B 32位应用程序设计接口 243
附录C Win32操作系统可移植程序设计的考虑 250
实验0 实验 265
实验1 获取窗口信息 267
实验2 实现击键测试和SetCursor 270
实验3 捕捉WM_ERASEBKGND(选做) 272
实验4 完成跟踪消息循环 273
实验5 实现Windows的钩子 275
实验6 实现用户自定义资源 277
实验7 设置应用程序的段 280
实验8 观察PeekMessage的功能 283
实验9 观察BitBlt的功能 284
实验10 观察字体映射器 286
实验11 优化文本输出 288
实验12 把静态库改为DLL 290
实验13 实现打印作业的脱机处理 292
实验14 建立用户自定义菜单 294
实验15 建立帮助文件 295
实验16 建立用户自定义公共对话框 297
实验17 封装对话框数据 299
实验18 实现WM_CTLCOLOR(选做) 300
实验19 实现会话编辑支持 302
实验20 基于Windows应用程序的DDEML 304