第一章 Windows的内存管理结构与规则1.1 80x86微处理器的内存规则与支持 1
1.1.1 物理地址空间 2
1.1.2 段式的内存管理方法 2
1.1.3 逻辑地址空间 3
1.1.4 保护模式与内存寻址 5
1.1.5 虚拟内存的使用 6
1.2 Windows基本的内存结构 7
1.2.1 固定的段(FIXED) 8
1.2.2 可移动的段(MOVEABLE) 8
1.2.3 可抛弃的段(DISCARDABLE) 9
1.3 Windows的动态数据分配空间 10
1.3.1 全局堆 10
1.3.2 局部堆 11
1.4 Windows的三种操作模式 11
1.4.1 实模式(real mode) 12
1.4.2 标准模式(standard mode) 12
1.4.3 386增强模式(386 enhanced mode) 13
1.5 程序段与数据段 14
1.5.1 编译程序使用的内存模型(MEMORY MODEL) 15
1.5.2 程序段的基本概念 16
1.5.3 数据段的使用 16
1.5.4 数据段的内容 17
1.5.5 多重代码段 20
1.5.6 各种段的属性设置 21
1.6 Windows提供的系统模块 22
1.6.1 KERNEL.EXE的内存需求 22
1.6.2 GDI.EXE内存需求 23
1.6.3 USER.EXE的内存需求 23
第二章 灵活运用Windows提供的内存空间2.1 全局堆的动态分配 26
2.1.1 动态分配全局堆的策略 26
2.1.2 全局堆相关的API函数与分配块标志的设置 26
2.1.3 如何动态分配Windows的全局堆 28
2.1.4 锁住与开启全局堆中的内存块 30
2.1.5 重新分配全局堆中内存块的大小 31
2.1.6 释放与抛弃全局堆中的内存块 32
2.1.7 如何运用其他的全局堆API函数 33
2.1.8 全局堆的高层应用 36
2.2 局部堆的动态分配 50
2.2.1 动态分配局部堆的策略 50
2.2.2 局部堆相关的API函数与分配块标志的设置 51
2.2.3 如何动态分配数据段内的局部堆 51
2.2.4 重新分配局部堆中内存块的大小 52
2.2.5 使用其他重要的局部堆API函数 53
2.2.6 使用额外局部堆的方法 54
2.3 资源与内存空间使用的关系 83
2.3.1 系统定义的资源对象 83
2.3.2 用户自定义的资源 84
2.4 额外字节 97
2.5 特性列表 110
2.6 原子表的应用 122
2.7 本章综述 148
第三章 剪贴板的使用方法 151
3.1 剪贴板使用的数据格式 151
3.2 文本数据与剪贴板 151
3.2.1 剪下或复制文本数据到剪贴板 152
3.2.2 粘贴文本数据到应用程序 153
3.3 图形数据与剪贴板 162
3.4 虚拟文件图与剪贴板 172
3.4.1 剪下或复制虚拟文件图到剪贴板 173
3.4.2 粘贴虚拟文件图到应用程序 174
3.5 剪贴板的高层使用技巧 182
3.5.1 数据格式多样化 183
3.5.2 延迟提供数据给剪贴板的时间 184
3.5.3 使用自定义的剪贴板格式 185
3.5.4 剪贴板内容显示程序 187
第四章 动态连接函数库 196
4.1 什么是动态连接函数库? 196
4.1.1 静态连接与动态连接 196
4.1.2 动态连接函数库与一般应用程序间的差异 198
4.1.3 目标函数库与导入函数库 199
4.1.4 Windows如何找到动态连接函数库 199
4.1.5 使用动态连接函数库的优点 200
4.1.6 查看动态连接函数库的内容 200
4.2 自行设计动态连接函数库 201
4.2.1 动态连接函数库的入口 202
4.2.2 LibMain()函数 203
4.2.3 WEP()函数 204
4.2.4 动态连接函数库的模块定义文件 205
4.3 动态连接函数库的调用方式 212
4.3.1 输入动态连接函数库中的函数的方法 212
4.3.2 远程函数调用 213
4.3.3 DS!=SS的衍生问题 214
4.3.4 动态连接函数库的重要限制 216
4.4 动态连接的高层技巧 230
4.4.1 回调函数的运用 230
4.4.2 应用程序指定链结的方法 232
4.4.3 善用输入函数库 233
4.5 动态连接函数库的使用扩展 249
4.5.1 无需事先输入函数的动态连接方式 249
4.5.2 仅含资源的动态连接函数库 250
4.5.3 内存对象的归属权 251
4.6 其他需要运用动态连接函数库的时机 257
4.6.1 挂接与动态连接函数库 257
4.6.2 驱动程序与动态连接函数库 258
4.6.3 用户自定义的子控制 259
第五章 多重文件界面 273
5.1 MDI应用程序的基本结构 273
5.2 MDI应用程序的操作标准 274
5.3 MDI应用程序启动时的初始化过程 276
5.3.1 登记窗口类 276
5.3.2 创建窗口 276
5.4 如何编写MDI程序的消息循环 277
5.5 编写窗口函数的要领 278
5.5.1 框架窗口函数 278
5.5.2 子窗口函数 278
5.6 子窗口与文件数据的连接 278
5.6.1 窗口额外字节与MDI子窗口 279
5.6.2 特性串列与MDI子窗口 279
5.7 MDI子窗口 279
5.7.1 创建MDI子窗口 280
5.7.2 破坏MDI子窗口 281
5.7.3 MDI子窗口工作状态的切换 281
第六章 动态数据交换 307
6.1 DDE概念简介 307
6.2 DDE的组成元素 310
6.2.1 创建会话时的三大元素 310
6.2.2 组成消息的基本要素 310
6.3 DDE的通讯类型 312
6.3.1 冷式链结 312
6.3.2 温式链结 313
6.3.3 热式链结 314
6.4 DDE消息汇总 316
6.5 创建会话 316
6.6 如何向服务器程序请求数据 319
6.6.1 WM DDE REQUEST消息 319
6.6.2 WM DDE DATA消息 319
6.6.3 WM DDE ACK消息 324
6.7 传送项目数据给服务器程序 325
6.8 传送命令消息给服务器程序 327