第一章 构建块 1
1.1 虚指针 1
1.2 活指针 4
1.3 VBoost对象 8
第二章 使用数组 9
2.1 数组描述符 10
2.2 读取数组变量 13
2.3 写入到数组变量 15
2.4 数组选项:超出固定或可变字长 23
2.5 使用数组的一些小提示 32
第三章 IUnknown接口:一个未知量 36
3.1 VB和IUnknown接口 37
3.2 声IUnknown并调用它的函数 42
第四章 绑定函数到对象上 45
4.1 何时绑定对象 47
4.2 运行时间的名字绑定 50
4.3 VTable绑定用户定制控件接口 55
第五章 对象的设计结构 61
5.1 使用Implements来实现抽象 62
5.2 调用代码的可插入性 64
5.3 实现和实现重用 67
5.4 聚合 74
5.5 聚合现存的对象 80
第六章 循环引用 84
6.1 中间对象解决方案 87
6.2 弱引用和集合 92
6.3 转移对象所有权 93
6.4 层次化对象模型 94
第七章 外部对象的创建 99
7.1 使用类工厂进行对象的创建 100
7.2 直接加载DLL对象 104
7.3 自定义加载定制化控件 108
7.4 定制类对象 115
第八章 轻量COM对象 119
8.1 关于轻量的基础知识 120
8.2 结构终止代码 128
8.3 LastIID的轻量版本 131
8.4 ArrayOwner的轻量版本 133
8.5 接口位于何处 136
8.6 错误的产生及避免 137
8.7 从轻量对象返回错误 139
8.8 聚合轻量对象 147
8.9 编制Query Interface函数 152
第九章 大型多对象系统 155
9.1 使用定长内存管理器 158
9.2 Scribble示例 159
第十章 VB对象和运行对象表 172
10.1 在ROT中注册VB对象 173
10.2 ROTHook实现细节 178
第十一章 函数指针的调用 194
11.1 示例:调用DLLRegister Server 198
11.2 示例:QuickSort,一劳永逸 201
11.3 Alpha中的VB函数指针 206
11.4 堆栈分配 208
11.5 产生自己的内联汇编 213
11.6 类函数指针 220
11.7 使用CDECL函数 223
第十二章 重载函数 225
12.1 协作重定向 226
12.2 接口封装 228
12.3 瘦接口封装 235
12.4 封装中的一些问题 239
第十三章 VB中的线程 241
13.1 线程中的局部存储 242
13.2 能否避免排队开销 243
13.3 线程化或非线程化 244
13.4 在客户机EXE中创建线程 246
13.5 STA单元中Coordiate Gate的崩溃 265
13.6 在DLL中创建工作线程 268
第十四章 VB中的字符串 314
14.1 UNICODE转换 316
14.2 字符串的分配 318
14.3 做为数值的字符串 323
第十五章 类型库和VB 333
15.1 VB产生的类型库 334
15.2 VB友好的用户定制类型库 339
15.3 二进制兼容性 358
15.4 后期构建类型库的修改 364
第十六章 控制窗口 366
16.1 子类化 367
16.2 自定义窗口的创建 376
16.3 无窗口的控件 383
附录 VBoost参考 389