目 录 1
第一部分组件式软件的奥秘 1
第一章软件组件的威力 1
1.1可重用代码的诞生 1
1.2进入VBX 2
1.3OCX出现了 2
1.4现代的控件怪物 2
1.5封装控件 3
1.6我们何去何从? 4
1.7 VBX还没有消亡的十大原因 4
2.1 巨大的浪潮和内在的不足 12
第二章OCXs:将来的浪潮? 12
2.2控件怪物 13
2.3用你自己的眼睛观察吧! 14
第三章VBX框架的回顾 15
3.1 VBX的内部实现 15
3.1.1 INTERNAL.H的内容 15
3.1.2 VISUAL.C的内容 16
3.1.3 VBXHELP.C的内容 25
3.1.4 MAIN.RC文件的内容 29
3.1.5 MAIN.DEF文件的内容 30
3.2 小结 31
4.2 C++的优点 33
4.1 C的缺点 33
第二部分一个VBX类库 33
第四章 创建一个与软件商无关的GDI类库 33
4.3我们的目标 34
4.4创建一个与软件商无关的Windows类库 34
4.5 GDI的基本知识 35
4.6您的出发点 36
4.6.1构造函数和操作符函数的实现 37
4.6.2定义size类 38
4.6.3介绍rectangle类 39
4.7 处理彩色 41
4.7.1创建基色类 43
4.8定义刷子类 49
4.9不要忘记你的画笔! 51
4.10定义设备环境类 53
4.10.1创建作图环境(paintcontext)类 57
4.10.2创建用户区域设备环境(clientcontext)类 58
第五章 创建一个与软件商无关的text类 60
5.1 创建text类 60
5.1.1定义头文件 60
5.1.2 text类构造函数和析构函数 61
5.1.3 text类的数据存贮 63
5.1.4 text类的操作符函数 65
5.1.5谁会更快,是闪电还是超人? 67
5.1.6英雄的助手 68
5.1.7 text类的加法及加法赋值操作符函数 70
5.1.8 text类的减法及减法赋值操作符函数 72
5.1.9 text类的乘法操作符函数 73
5.1.10 text类的类型强制转换 74
5.1.11 text类的切分和大小写变换 76
5.2测试你的新实力 77
第六章 实现VBX++类库 80
6.1 使用VBX++:一次预览 80
6.2 VBX++的实现 82
6.2.1 Microsoft Visual C++编译器选项设置 83
6.2.2 Borland C++编译器选项设置 84
6.2.3创建model类 84
6.3处理方法 106
6.4 control(控件)类 108
6.5 Property(属性)类 111
6.5.1 boolproperty(布尔属性)类 118
6.5.2 colorproperty(颜色属性)类 120
6.5.3 enumproperty(枚举属性)类 120
6.5.4 textproperty(文本属性)类 122
6.5.5 pictureproperty(图片属性)类 124
6.5.6 floatproperty(浮点数属性)类 124
6.6属性列表 125
6.7特殊事件和一般事件 126
6.8去做吧 130
第三部分VBX生成器 135
第七章 介绍VBXGenie 135
7.1代码生成器的设计 135
7.1.1代码模板 136
7.1.2代码生成器 136
7.1.3用户界面 136
7.2 选择一门实现VBX Genie的语言 137
第八章 创建用户界面 139
8.1建立主表Prime 139
8.1.1编写Prime表的代码 140
8.1.2标签控件(Tab Control)的一些问题 142
8.2 支持Project页 143
8.3 支持Version页 144
8.4引入Listable类 147
8.4.1 支持集合 148
8.4.2引入属性函数 150
8.4.3完成初始化 152
8.5支持Model页 154
8.5.1 Model页的最终实现 158
8.6支持Properties页 158
8.7支持用户属性 163
8.8支持Events页 170
8.9支持用户事件 172
8.10加入Methods页 175
第九章生成代码 178
9.1加入代码脚本(Code script) 178
9.1.1创建代码脚本 180
9.1.2生成代码 180
第十章 自安装IDE工具 189
10.1 把VBX Genie加入开发环境 189
10.2给我一个支点 189
10.3 把VBX Genie安装到MSVC 1.5x 194
10.3.1创建全新的MSVC工程 196
10.4 把VBX Genie安装到BorlandC++ 202
10.4.1 创建全新的Borland C++工程 207
第十一章 为VBX Genie创建安装程序 212
11.1 VBX Genie安装过程记事 212
11.2是平台,还是沙洲? 212
11.3 Setup Wizard都做些什么? 213
11.3.1更深入地探讨安装问题 214
11.4制订我们的“进攻”计划 216
11.5创建预安装程序 216
11.6 建造Generic Genie 218
11.7加入可重用的About对话框 221
11.8创建Setup Wizard Workaround Installer 222
11.8.1 编写可重用的ProgressBarClass类的代码 225
11.8.2展开Win31文件 227
11.9 更新SWDEPEND.INI 229
11.10 安装PRESETUP 231
11.11 安装Workaround 231
11.12 关于Setup Wizard Workaround程序 232
11.13打点行装回家 241
第十二章 用作查找和替换对话框的VBX 242
12.1对话框的窘境 242
12.2 Find和Replace对话框 243
12.3生成FindReplace控件的框架 245
12.4 存储和访问FINDREPLACE结构 247
12.5对上下文敏感的联机帮助提供支持 254
12.6控件的发行 256
12.7测试FindReplace控件 256
第十三章 为标准控件加上工具提示 258
13.1时代的标志 258
13.2路标:一直前行 258
13.2.1选用什么语言作标记 259
13.2.2为方法编写代码 262
13.2.3子类方法的原理 264
13.2.4设置属性 267
13.2.5VB中的系统颜色 269
13.2.6告诫与警示 274
13.3提示窗口 277
13.4应用Tips控件 281
第四部分Microsoft的OLE Control Wizard 283
第十四章 什么是COM 283
14.1介绍公共对象模型 283
14.2介绍IUnknown接口 284
14.3 OLE自动化的出现 285
14.4 OLE控件 286
14.5内存上的考虑 286
14.6.1库存属性(Stock Property) 287
14.6.2扩展的属性(extended property) 287
14.6属性类型 287
14.6.3环境属性(Ambient Property) 288
14.7库存方法 289
14.8事件 289
14.9 VBX和OCX的比较 290
第十五章 创建一个简单的OCX 293
15.1 创建一个16位的OCX 293
15.1.1检查和改变控件设置 296
15.2创建一个32位的OCX 296
15.3检查代码 299
15.4支持属性页 304
15.5支持注册数据库 305
16.1设计一个更好的列表框 309
第十六章 使用OCX库存属性 309
16.2试运行TabList 310
16.3了解隐藏的控件 311
16.4设置默认的属性值 312
16.5选择一种颜色 315
16.6使用库存字体属性 318
16.7建立属性页 319
16.8继续前进 320
第十七章 用户 OCX属性 321
17.1介绍用户属性 321
17.2从根属性开始 322
17.3实现枚举属性 325
17.4瞄准底层控件的属性 330
17.5种子属性 333
17.6加入 text属性 334
17.7实现数组类属性 335
17.8你说你想派生一个控件? 338
17.9 Appearance(外观)属性 339
第十八章 用户方法和事件 341
18.1 TabList控件的特殊性 341
18.2 ImageList控件的特殊性 345
18.3实现用户事件 350
18.4结束语 353