COM原理及应用之ActiveX控件
1、ActiveX控制
ActiveX控制是Microsoft提供的功能强大的程序设计和开发技术。ActiveX控制既是一个自动化对象(当然也是一个标准的COM对象),也是一个界面元素,如同Windows的普通控制一样。
ActiveX控制是一门综合技术,它涉及到COM和OLE的许多技术精华,同时也与Windows操作系统紧密结合起来,它可作为Windows标准控制的一种扩充机制。
Microsoft把这种在Internet上使用的控制与OCX一起统称为ActiveX控制,并且把所有建立在COM和OLE基础上以及与Internet有关的技术统称为ActiveX技术。
2、ActiveX控制的技术基础
ActiveX控制的主要技术基础为OLE复合文档技术,它几乎涉及OLE嵌入对象与包容器程序之间交互的所有技术,包括结构化存储技术、自动化技术、实地激活(in-place activation,主要用于嵌入对象)、属性页技术、永久对象技术、可连接对象机制等等。
3、实地激活
实地激活(in-place activation)是指OLE对象的一种界面特性,具有实地激活特性的对象可以直接在包容器窗口内部进行编辑,所以有时我们也把这种特性称作实地编辑(in-place editing)或可视编辑(visual editing)。
为了实现实地激活特性,要求OLE对象和包容器程序之间必须遵守严格的接口约定。
4、属性页
属性页(property page)是OLE的一项技术,它已经成为Windows 32位平台上表达属性的基本手段。属性表(property sheet)由多个属性页组成,每个属性页有一个标题(也称为标签),通常属性表是一个有模式的对话框,而属性页是一个内嵌在属性表对话框中的无模式窗口。
属性页技术涉及到四个方面:客户方、COM对象、属性表和属性页。它们相互之间的通信由一组预定义的COM接口以及API函数实现。
5、属性变化通知
属性变化通知包括两种情形:第一,当对象改变其属性时,它先向客户发送一个请求,询问客户是否允许改变该属性;第二,当对象已经改变了属性之后,它向客户发送一个通知告诉客户该属性已经被改变。
6、ActiveX控制的基本要求
属性和方法管理、事件机制、用户界面特性(可视性)、状态永久性机制。
7、ActiveX控制基本结构
8、包容器
ActiveX控制的包容器程序通常是一个表单(form)或者对话框,也可以是复合文档的视窗口(view)或文档对象。包容器通常要管理多个ActiveX控制,或者其他Windows普通控制。
包容器的基本功能:布局功能、永久特性、环境属性、事件处理机制、扩展控制、键盘功能。
包容器程序支持不同的情形,分别称为设计模式和运行模式。
9、包容器的基本结构
10、使用的接口
IOleObject和IOleClientSite是OLE的基本接口。每一个嵌入对象必须实现IOleObject接口。
IOleControl和IOleControlSite接口扩展了ActiveX控制与站点对象之间的通信能力。由于IOleObject和 IOleClientSite主要用于OLE复合文档与嵌入对象之间的通信,对于ActiveX控制与包容器,它还有其他的要求,比如环境属性、键盘控制以及扩展控制等等,IOleControl和IOleControlSite接口正是针对这些特性而设计的。
11、ActiveX控制与Internet
Microsoft制定了COM规范,同时又在OLE的基础上形成ActiveX控制标准。从基本的行为特性来讲,ActiveX控制非常适用于Internet。
从包容器的角度进行考察,Internet浏览器程序就是包容器。
为了使程序代码量尽可能地小,Microsoft VisualC++提供了ATL模板库作为这类ActiveX控制的基本开发工具。
IE要求ActiveX控制必须支持自注册,以便在用户浏览包含ActiveX控制的Web页面时,它可以动态地注册控制。
一般的包容器程序通常只负责ActiveX控制的创建、运行和释放,但IE要做的事情更多一些。
12、包装ActiveX控制
Microsoft采用了惯用的CAB压缩方法,它把ActiveX控制程序以及相关的其他文件放在同一个CAB文件中,然后在codebase属性中指定CAB文件的URL路径。
13、许可证管理
除了免费发行的ActiveX控制之外,大多数ActiveX控制都支持设计时刻和运行时刻的许可证检查。设计时刻许可证检查可以保证程序员在创建应用系统或者Web页面时使用合法的ActiveX控制;运行时刻许可证检查可以保证用户运行一个包含合法控制的应用系统或者显示一个包含合法控制的Web页面。
14、ActiveX控制的开发与应用
Microsoft提供了三个开发ActiveX控制的工具:MFC类库、ATL模板库和BaseControl框架。
MFC重在功能,它与Visual C++集成环境紧密结合,利用MFC可以实现非常复杂的ActiveX控制。
ATL模板库可专门用于开发COM对象,也包括ActiveX控制。利用ATL,我们可以开发出小巧、快速的ActiveX控制,特别适合于在Internet环境下使用。
BaseControl框架开发ActiveX控制要求程序员对框架结构非常了解,有一定的难度。
文章出处:http://www.diybl.com/course/3_program/c++/cppxl/20081118/151927.html