ActiveX 控件是用于互联网的很小的程序,有时称为
插件程序。它们会允许播放动画,或帮助执行任务,如在 Microsoft Update 安装安全更新,因此可以增强您的浏览体验。
[1]
ActiveX是Microsoft对于一系列策略性 面向对象程序技术和工具的称呼,其中主要的技术是 组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。
在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(Windows,Mac,Linux)中任意运行的程序。这个组件就是ActiveX控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和java applet功能类似。
Windows操作系统中以OCX结尾的文件, OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。
组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个 COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或PowerBuilder,甚至一些技术性语言如VBScript。
1.Component Object Model(COM——组件对象模型)一种 面向对象的编程模式。它定义了对象在单个应用程序内部或多个应用程序之间的行为方式。英文为Component Object Model,缩写COM,是微软对于网页服务器与客户端、增益集与Office系列软件之间交互的一项软件组件技术。
Windows 操作系统提供了三种应用程式间的通讯机制:剪贴板(clipboard)、 DDE与 OLE。OLE原名是物件连结与嵌入(Object Linking and Embedding),OLE可说是DDE的改良版,OLE 1.0版提供 复合文件(compound document)处理。但过於复杂,Brockschmidt, Kraig「Inside OLE」一书中提到,必须经过六个月的心灵混沌期,才能了解OLE是什么。因此OLE 2.0后,微软提出COM架构。所有OLE元件皆是继承COM而来,这些技术包含OLE Document和OLE Controls、Drag and Drop等。
2.ActiveX控件具有方法,属性,事件三种特性。
3.调度映射是MFC提供的一种映射机制,主要是为了让外部应用程序可以方便地访问控件的属性和方法,而事件映射则可以让控件可以向包含它的容器发送事件通知。
OLE自动化提供了在应用程序之间调用方法和访问属性的途径。由微软基础类库提供的调度这些请求的机制称为“调度映射”,它分配对象函数和属性的内部、外部名字,同时还分配属性本身和函数参数的数据类型。
DECLARE_DISPATCH_MAP |
声明将使用一个调度映射来揭示一个类的方法和属性(必须用于类声明中) |
BEGIN_DISPATCH_MAP |
开始一个调度映射的定义 |
END_DISPATCH_MAP |
结束一个调度映射的定义 |
DISP_FUNCTION |
用于调度映射中,以定义一个OLE自动化函数 |
DISP_PROPERTY |
定义一个OLE自动化属性 |
DISP_PROPERTY_EX |
定义一个OLE自动化属性并且命名“get”和“set”函数 |
DISP_PROPERTY_NOTIFY |
为一个OLE自动化属性定义通知消息 |
DISP_PROPERTY_PARAM |
定义一个带参数的OLE自动化属性,并且命名了“get”和“set”函数 |
DISP_DEFVALUE |
将一个现存的属性设置为一个对象的缺省值 |
4. 将TeeChart5进行系统注册。
方法一: 使用regsvr32.exe 程序对active控件进行注册(如果是删除,则用regsvr32/u命令)
方法二; 在程序代码中进行注册
个人偏向于第一种:先将TeeChart5.ocx拷贝到C:\WINDOWS\system32目录下,点击控制面板的运行——开始——输入命令
regsvr32
TeeChart5.ocx ——确定
2) 在VC中选择 Project / Add to Project / Components And Controls/下选择Registered ActiveX Controls,然后找到TeeChart Pro Activex control v5。选择确定即可,这样在我们的项目中出现很多的类,同时在控件区域会出现
5.ActiveX控件有四种属性:
(1)Stock:为每个控件提供的标准属性,如字体或颜色。
(2)Ambient:围绕控件的环境属性——已被置入容器的属性。这些属性不能被更改,但控件可以使用它们调整自己的属性。
(3)Extended:这些是由容器处理的属性,一般包括大小和在屏幕上的位置。
(4)Custom:由控件开发者添加的属性。
6.源接口表示控件将使用这个接口来发送通知事件,这个接口不是控件本身实现的接口。
7.MFC为一些基本类型都提供了一个以“PX_"开头的函数,例如PX_Short,PX_Long等。
BOOL PX_Short(CPropExchange*pPX,LPCTSTR pszPropName,short&sValue,short sDefault);
pPX指向CPropExchange对象的一个指针。
pszPropName 提供给外部程序使用的属性的名称,
sValue 与属性相关联的类的成员变量。
sDefault 默认属性值。
将PX_Short函数添加到DoPropExchange函数中即可设定属性的持久性。
DoPropExchange用于持久化,OnResetState用于初始化属性。
DDP_Text(以及所有其它类似函数)的第4个参数都是初始值,只要合法,自己想设置为多少都行。
8.
AmbientUserMode()
来取得当前容器的状态
,是在运行时(返回非0值)还是设计时(返回0值);而GetNotSupported()能产生
CTL_E_GETNOTSUPPORTED
自动化异常。
9.COleControl::InvalidateControl()。Forces the control to redraw itself.
void InvalidateControl(
LPCRECT lpRect = NULL,
BOOL bErase = TRUE
);
lpRect
A pointer to the region of the control to be invalidated.
bErase
Specifies whether the background within the update region is to be erased when the update region is processed.
10.ActivX控件也是一种控件,也可以通过控件的常用操作方法来进行操作。