第一章 COM入门 1
§1-1什么是COM 1
目录 1
§1-2COM是如何产生的 2
§1-3为什么我们需要COM 4
§1-4COM是如何工作的 6
§1-4-1COM服务器 6
§1-4-2COM的ClassFactory 6
§1-4-5Windows的COM系统 7
§1-4-3COM的接口 7
§1-4-4COM的指示记数 7
§1-4-6COM的客户 8
§1-5COM是静态的,Automation是动态的 8
§1-6Automation向世界开放了COM 9
§1-7从Automation到OCX再到ActiveX 10
§1-8ActiveX在Automation服务器上增加了用户接口 12
§1-9通用属性和PropertyPage使ActiveX控件的行为标准化 13
§1-10连接点支持从ActiveX控件向容器发送事件 15
§1-12下一步学习的内容 16
§1-11ActiveX的持续性支持超时的状态存储 16
第二章 ATL入门 17
§2-1VisualC++的ATL 17
§2-1-1关于老版本VisualC++的ATL 17
§2-1-2ATL的在线资料 18
§2-2用ATL的AppWizard创建ATL项目 19
§2-2-1New对话框 19
§2-2-2ATLAppWizard 19
§2-4用ATLObjectWizard增加COM接口 21
§2-4-1ObjectWizard的对象 21
§2-2-3“确认”对话框 21
§2-4-2ObjectWizard的控件 22
§2-4-3ObjectWizard的Miscellaneous元素 23
§2-4-4ObjectWizard的DataAccess元素 23
§2-4-5ObjectWizard的Name标签 24
§2-4-6ObjectWizard的Attribute标签 24
§2-4-7特殊的ObjectWizard标签 24
§2-5用ATL的InterfaceWizard(接口自动生成程序)创建函数和属性 25
§2-5-1ClassView的快捷菜单 25
§2-5-2AddMethodToInterface对话框 25
§2-5-4EditAttribute对话框 27
§2-5-3AddPropertyToInterface对话框 27
§2-6关于ATL项目的一些高级话题 28
§2-6-1ProxyGenerator 28
§2-6-2高级服务器 28
§2-6-3OLEDBProvider 29
§2-7ATL代码(模板与宏) 29
§2-7-1用模板创建定制的类 29
§2-7-2宏定义扩展为定制的代码 29
§2-8ATL3.0的新特点 29
§2-8-2V3.0中关于ObjectWizard的修改 30
§2-8-1V3.0中关于Appwizard的修改 30
§2-8-3V3.0中关于ClassView快捷菜单的修改 33
§2-9下一步学习内容介绍 37
第三章 MFC入门 38
§3-1VisalC++中的MFC 38
§3-2用MFCAppWizard创建MFC项目 38
§3-2-1New对话框 39
§3-2-2MFC的ActiveX控件ControlWizard对话框 39
§3-2-3确认对话框 41
§3-3-1ClassWizard的MessageMaps标签 42
§3-3ClassWizard展现MFC的魔力 42
§3-3-2ClassWizaro的MemberVariables标签 43
§3-3-3ClassWizard的Automation标签 44
§3-3-4ClassWizard的Event标签 44
§3-3-5ClassWizard的ClassInfo标签 44
§3-4用ClassWizard对话框增加ActiveX控件的属性 46
§3-4-1MFC的ClassWizard的NewClass对话框 46
§3-4-2ClassWizard的AddMethod对话框 46
§3-4-4ClassWizard的AddEvent对话框 47
§3-4-3ClassWizard的AddProperty对话框 47
§3-5MFCActiveX控件项目的一些与高级开发相关的话题 48
§3-5-1利用ClassWizard使用Windows事件 49
§3-5-2属性页编辑 49
§3-5-3用ClassWizard将PropertyPage控件与ActiveX控件属性相连 50
§3-6MFC代码(类和宏定义) 51
§3-6-1MFC类的C++包装包含许多Windows功能 52
§3-6-2宏定义扩展为定制的代码 52
§3-6-3下一步学习的内容 52
§4-1-1COM的用户接口——复合文件 53
§4-1ActiveX控件为Automation服务器提供了一个用户接口 53
第四章 在ATL中创建InternetExplorer(Lite)ActiveX控件 53
§4-1-2VBX控件快速占领市场 54
§4-1-3OCX控件与Java结合演变为ActiveX控件 54
§4-3ActiveX控件在ATL环境中有很多的选择项 55
§4-3-2运行时不可见 55
§4-3-1透明或实心的控件绘制模式 55
§4-3-3输入焦点(Focus)处理选项 55
§4-2-2只有浏览器才能区分这两种控件 55
§4-2-1IE控件与Full控件的比较 55
§4-2ATL支持轻量级的IEActiveX控件对象 55
§4-3-4窗口控件的子类选项 56
§4-3-5绘制的优化 56
§4-3-6OLE支持 56
§4-3-7无窗口与有窗口控件 56
§4-4用ATL创建一个加密/解密的IE/Lite控件 56
§4-4-1逐步的设计过程 56
§4-4-2源代码设计 64
§4-5用ATL创建一个透明标签IE控件 78
§4-5-1逐步的设计过程 78
§4-6用ATL创建一个EditIE控件 82
§4-5-2源代码设计 82
§4-7-1逐步的设计过程 86
§4-7用ATL3.0创建Lite复合控件 86
§4-7-2源代码的设计 91
§4-8在HTML中用ActiveXControlPad创建ActiveX控件客户 94
§4-9下一步的学习内容 100
第五章 在ATL中创建FullActiveX控件 101
§5-1Full控件比IE控件增加的功能 101
§5-1-1QuickActivation 101
§5-1-2嵌入的对象及类型信息 101
§5-2ActiveX控件支持的通用属性和环境属性及方法 102
§5-2-1ActiveX控件需要一致的外观和感觉 102
§5-1-3持续性 102
§5-1-4属性页面 102
§5-2-2通用属性使ActiveX控件的属性和方法标准化 103
§5-2-3环境属性使ActiveX控件与用户接口相适应 104
§5-3用持续性保存ActiveX控件的状态 104
§5-3-1状态信息需要一致地存储 105
§5-3-2复合文件太复杂了 105
§5-4-2数据流类似于文件 106
§5-4-1存储单元类似于文件夹 106
§5-3-3持续性是ActiveX使用的答案 106
§5-4基于存储的持续性 106
§5-5基于PropertyBag的持续性 107
§5-5-1PropertyBag是由容器实现的 107
§5-5-2PropertyBag采用的是自由格式 107
§5-6Word采用基于存储的持续性 107
§5-6-1Word仍创建复合文件 107
§5-7ActiveXControlPad采用基于PropertyBag的持续性HTML采用〈PARAM〉标签以支持PropertyBag 108
§5-8在ATL中使用FullActiveX控件的绘制问题 108
§5-6-2如果ActiveX控件是可插入的,Word可以保留它的数据 108
§5-8-1窗口的或非窗口的 109
§5-8-2标准化的关联设备(DC) 109
§5-9FullActiveX控件的大小问题 109
§5-9-1ActiveX改变尺寸的行为 109
§5-9-2ATL对尺寸大小改变的支持 110
§5-10用ATL创建一个Full面板控件 110
§5-10-1逐步的设计过程 110
§5-10-2源代码设计 117
§5-11-1逐步的设计步骤 126
§5-11用ActiveXControlPad在HTML中测试ATLPanel控件 126
§5-11-2源代码设计 127
§5-11-3逐步的设计步骤 127
§5-12下一步学习的内容 128
第六章 ATL对ActiveX控件的属性页面的支持 129
§6-1什么是属性页面 129
§6-1-1属性页面是ActiveX控件属性的用户接口 129
§6-2-1属性页面使用COM接口 130
§6-2属性页面是如何工作的 130
§6-1-3属性页面需要持续性的支持来保存属性数据 130
§6-1-2属性页面是在开发环境中使用的 130
§6-2-2属性页面创建了一个特殊的对话框资源 131
§6-2-3容器提供标签对话框和按钮 131
§6-3在ATL中实现属性页面 131
§6-3-1属性页面ATL对象 131
§6-3-2编辑对话框资源 132
§6-3-3代码内进行连接 132
§6-4通用属性页面 132
§6-4-1适当的属性具有自动属性页面支持 132
§6-4-2ATL将自动增加支持代码,即使你不主动采用此方法 132
§6-5-1逐步的设计步骤 133
§6-5用ATL为ATLPanel控件增加属性页面支持 133
§6-5-2源代码设计 135
§6-5-3ATL3.0和VisualC++6.0以及ObjectWizard 141
§6-6用ActiveX控件测试容器检验ATLPanel的属性页面 141
§6-7下一步学习内容 143
第七章 ATL中对ActiveX控件事件的支持 144
§7-1事件是应用程序间的通知 144
§7-1-1用户输入请求通知 144
§7-1-2状态变化需要通知 144
§7-1-3Callback函数是Windows采用的方法 144
§7-2Windows的事件就是消息(message) 145
§7-2-1Windows消息的结构 145
§7-2-2消息泵(MessagePump) 145
§7-2-3Windows事件处理程序 145
§7-3-3由构形带来的新问题 146
§7-4IConnectionPoint接口 146
§7-4-1从控件的角度来看IConnectionPoint是如何工作的 146
§7-3-1连接的问题 146
§7-3ActiveX事件是一种接口 146
§7-3-2接口是ActiveX的解决方案 146
§7-4-2从容器的角度来看IConnectionPoint是如何工作的 147
§7-5IConnectionPointContainer接口 147
§7-5-1从控件的角度看IConnectionPointContainer是如何工作的 148
§7-5-2从容器的角度看IConnectionPointContainer是如何工作的 148
§7-6ATL如何支持Windows事件 148
§7-6-1消息图 148
§7-6-2事件处理程序 148
§7-7-3使用ProxyGenertaor需要一个TLB文件 149
§7-7-4在需要时Proxy类将调入控件文件 149
§7-7ATL是如何支持ActiveX事件的 149
§7-7-2ManglingIDL(MIDL) 149
§7-7-1连接点图(ConnectionPointMaps) 149
§7-8为ATLPanel控件项目增加事件支持 150
§7-8-1源代码的设计 150
§7-8-2逐步的设计过程 161
§7-8-3源代码设计 164
§7-9用ActiveXControlPad在HTML中检验ATLPanel控件事件 173
§7-9-1源代码的设计 173
§7-9-2逐步的设计步骤 174
§7-10ATL3.0的连接点向导程序(ConnectionPointWizard) 175
§7-11下一步学习的内容 176
第八章 在MFC中创建特殊化的ActiveX控件 177
§8-1ActiveX控件为Automation服务器提供了一个用户接口 177
§8-1-1COM的用户接口——复合文件 177
§8-1-2VBX控件快速占领市场 178
§8-1-3OCX控件与Java技术相结合演变为ActiveX控件 178
§8-2-6无窗口与有窗口控件 179
§8-2-5OLE支持 179
§8-2-4绘制的优化 179
§8-2-3窗口控件的子类选项 179
§8-2-2运行时不可见 179
§8-2-1透明或实心的控件绘制模式 179
§8-2ActiveX控件在MFC环境中有大量的选择项 179
§8-3用MFC创建一个加密/解密控件 180
§8-3-1逐步的设计过程 180
§8-3-2源代码的设计 186
§8-4用MFC创建一个透明标签ActiveX控件 201
§8-4-1逐步的设计过程 201
§8-4-2源代码设计 205
§8-5用MFC创建一个EditActiveX控件 211
§8-6用MFC创建一个Composite控件 213
§8-6-1逐步的设计过程 213
§8-6-2源代码设计 216
§8-7在HTML中用ActiveXControlPad创建ActiveX控件客户 221
§8-8下一步的学习内容 225
第九章 在MFC中创建全性能的ActiveX控件 226
§9-1ActiveX控件支持的通用属性和环境属性及方法 226
§9-1-1ActiveX控件需要一致的外观和感觉 226
§9-1-2通用属性使ActiveX控件的属性和方法标准化 226
§9-1-3环境属性使ActiveX控件与用户接口相适应 227
§9-2用持续性保存ActiveX控件的状态 228
§9-2-1状态信息需要一致地存储 229
§9-2-2复合文件太复杂了 229
§9-2-3持续性是ActiveX问题的解答 229
§9-3基于存储技术的持续性 230
§9-3-1存储单元类似于文件夹 230
§9-3-2数据流类似于文件 230
§9-4基于PropertyBag的持续性 230
§9-5-2如果ActiveX控件是可插入的,Word可以保留它的数据 231
§9-5-1Word仍创建复合文件 231
§9-5Word采用基于存储的持续性 231
§9-4-1PropertyBag是由容器实现的 231
§9-4-2PropertyBag采用的是自由格式 231
§9-6ActiveXControlPad采用基于PropertyBag的持续性HTML采用〈PARAM〉标签以支持PropertyBag 232
§9-7在MFC中使用FullActiveX控件的绘制问题 232
§9-7-1窗口的或非窗口的 232
§9-8-2MFC对尺寸大小改变的支持 233
§9-9用MFC创建一个全功能面板控件 233
§9-9-1逐步的设计过程 233
§9-8-1ActiveX改变尺寸的行为 233
§9-8全功能的ActiveX控件的尺寸大小问题 233
§9-7-2标准化的关联设备 233
§9-9-2源代码设计 241
§9-10用ActiveXControlPad在HTML中测试MFCAxPanel控件 252
§9-10-1逐步的设计步骤 252
§9-10-2源代码设计 252
§9-10-3逐步的设计步骤 254
§9-11下一步学习的内容 254
第十章 MFC中对ActiveX控件的属性页面的支持 255
§10-1什么是属性页面 255
§10-1-1属性页面是ActiveX控件属性的用户接口 255
§10-2-1属性页面使用COM接口 256
§10-2属性页面是如何工作的 256
§10-1-2属性页面是在开发环境中使用的 256
§10-1-3属性页面需要持续性的支持来保存属性数据 256
§10-2-2属性页面创建了一个特殊的对话框资源 257
§10-2-3容器提供标签对话框和按钮 257
§10-3在MFC中实现属性页面 257
§10-3-1MFC的属性页面资源 257
§10-5用MFC为MFCAxPanel控件增加属性页面支持 258
§10-4-2MFC将自动增加支持代码,即使你不主动采用此方法 258
§10-4-1适当的属性具有自动属性页面支持 258
§10-4通用属性页面 258
§10-3-3通过ClassWizard进行连接 258
§10-3-2编辑对话框资源 258
§10-6用ActiveX控件测试容器检验Panel的属性页面 260
§10-7下一步学习内容 261
第十一章 MFC中对ActiveX控件事件的支持 262
§11-1事件是应用程序间的通知 262
§11-1-1用户输入请求通知 262
§11-1-2状态变化需要通知 262
§11-2-3Windows事件处理程序 263
§11-2-2消息泵(MessagePump) 263
§11-1-3Callback函数是Windows采用的方法 263
§11-2Windows的事件就是消息(message) 263
§11-2-1Windows消息的结构 263
§11-3ActiveX事件是一种接口 264
§11-3-1连接的问题 264
§11-3-2接口是ActiveX的解决方案 264
§11-3-3由构形带来的新问题 264
§11-4IConnectionPoint接口 264
§11-4-1从控件的角度来看IConnectionPoint是如何工作的 265
§11-4-2从容器的角度来看IConnectionPoint是如何工作的 265
§11-5IConnectionPointContainer接口 266
§11-5-1从控件的角度看IConnectionPointContainer是如何工作的 266
§11-5-2从容器的角度看IConnectionPointContainer是如何工作的 266
§11-6MFC如何支持Windows事件 266
§11-6-1消息图 266
§11-7-2编写代码 267
§11-8-1逐步的设计过程 267
§11-8为MFCAxPanel控件项目增加事件支持 267
§11-7-1为ActiveX事件使用ClassWizard 267
§11-7ATL是如何支持ActiveX事件的 267
§11-6-2事件处理程序 267
§11-8-2源代码设计 271
§11-9用ActiveXControlPad在HTML中检验MFCAxPanel控件事件 280
§11-9-1源代码设计 281
§11-9-2逐步的设计步骤 281
§11-10下一步学习的内容 282
第十二章 ActiveX用于Internet 283
§12-1使用LPK_Tool应用程序创建HTML运行时间许可文件LPK 283
§12-2下载ActiveXSDK 286
§12-3用AuthentiCodeTM进行编码签名 287
§12-4用AuthenticodeTM进行数字编码签名 294
§12-5从Microsoft获得并使用ActiveXControlPad 298
§12-6自动的ActiveX<OBJECT>标签/视觉编辑 300
§12-7HTML布局(Layout)控件的创建 302
§12-8HTMLLayout控件的视觉编辑 304
§12-9HTML和ALX的ActiveX脚本设计向导 306
§12-10获得并使用FileTransferProtocol(FTP,文件传输协议)软件在Internet上放置ActiveX部件 308
§12-11用InternetExplorer通过Internet和WorldWideWeb访问ActiveX 313
§12-12在Internet上掌握ActiveX 317