2.1 ActiveX控件介绍
ActiveX是在M$与JAVA抗争时产生的一个新名词(1996年3月),ActiveX技术的前身是OLE技术是M$为了适应Internet的发展对OLE进行的扩展(当时的含义是“Activeate the Internet”),当时只是为了发展一种小型的可从网络上快速下载的可重用组件。但是随着ActiveX技术的发展ActiveX很快成为了M$新的口号。ActiveX由定义WEB页面到OLEsettimer头文件控件的所有内容发展到定义一种可重用组件技术的规范。现在ActiveX已经成为一种概念和潮流。
ActiveX的基础是OLE和COM,但是通过M$的各种开发工具可以屏蔽掉COM模型中许多另人费解的技术细节。本节主要讨论如何开发ActiveX控件,其实这只是AcitveX组件技术中的一部分。ActiveX组件技术包括以下一些方面:
∙ 自动化服务器
∙ 自动化控制器
∙ 控件
∙ COM对象
∙ 文档
∙ 容器
现在的ActiveX控件等价与以前的OLE控件或OCX,一个典型的控件包括设计时和运行时的用户界面,唯一的IDispatch接口定义了控件的属性和方法,唯一的IConnectionPoint接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个DLL。由于在IE中添加了对控件的支持,所以你可以在WEB页面中通过VBScript对控件进行操纵。
此外COM组件间在二进制上兼容,当其中一个组件的代码被修改并且被重新编译连接后只要能够保持原来已经存在并被使用的接口不变化(可以添加其他接口)那么其他使用这个组件的文件都不需要重编译。所以利用COM组件技术可以很大程度上的提高软件重用性。同样如果在程序中使用了ActiveX控件那么你在以后升级程序时可以单独升级控件而不需要升级整个程序。在提供灵活性的同时会带来性能上的牺牲,但和ActiveX为我们代码的好处上看来这些牺牲都算不了什么。
利用MFC的Application Wizard我们可以方便的创建一个工程,首先在工程类型中选择MFC ActiveX Control,然后选择在工程中创建多少个控件。在接下来的对话框中并且为每个控件输入相关信息,通过Edit Name按钮可以为控件指定名称,通过Advanced按钮可以为控件指定各种附加特性,此外你还可以将控件指定为一个继承了某种现有窗口类的子类。在本节的例子中我们创建三个控件,分别是:
∙ 普通窗口控件 CSam_windowCtrl
∙ 无窗口控件 CSam_nowindowCtrl
∙ EDIT窗口控件 CSam_editwindowCtrl
在工程创建完毕后你就可以编译并测试控件了,但是这时候的控件还不能做任何事情。我们需要为控件添加方法和属性。简单的讲,方法就相当与类中的函数调用,而属性就相当与类
中的成员变量。
假设在普通窗口控件中我们将显示一份,包括姓名,出生年月,班级名称,为了能够设置这些数据,我们为控件添加一个方法。选择Class Wizard,并选中对话框中的Automation页,按下Add Method按钮以添加消息,然后在弹出的对话框中输入相关信息。我们为新添加的方法取名为SetMertial,同时指定三个参数LPCTSTR pszName,LPCTSTR pszBirth,LPCTSTR pszClass,返回值设置为void,在保存后Class Wizard会生成一个函数,该函数的名称就是你所指定的方法名称。此外我们还添加一个属性用于让用户设置显示文字的颜。在添加属性对话框中为属性取名为TextColor,并且接收的参数为OLE_COLOR,并且将实现方法设定为Get/Set Methods。在保存后Class Wizard会为你生成GetXXX/SetXXX两个函数XXX就代表你所指定的属性名,当控件容器更改属性时就通过这两个函数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论