前言
ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。框架
ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到了几乎全部的COM和OLE的技术精华,如可连接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE自动化等。函数
ActiveX控件做为基本的界面单元,必须拥有本身的属性和方法以适合不一样特色的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的 IDispatch接口来支持。除了属性和方法外,ActiveX控件还具备区别于自动化服务的一种特性--事件。事件指的是从控件发送给其包容程序的一 种通知。与窗口控件经过发送消息通知其拥有者相似,ActiveX控件是经过触发事件来通知其包容器的。事件的触发一般是经过控件包容器提供的IDispatch接口来调用自动化对象的方法来实现的。在设计ActiveX控件时就应当考虑控件可能会发生哪些事件以及包容器程序将会对其中的哪些事件感兴趣并将这些事件包含进来。与自动化服务不一样,ActiveX控件的方法、属性和事件均有自定义(custom)和库存(stock)两种不一样的类 型。自定义的方法和属性也就是是普通的自动化方法和属性,自定义事件则是本身选取名字和Dispatch ID的事件。而所谓的库存方法、属性和事件则是使用了ActiveX控件规定了名字和Dispatch ID的"标准"方法、属性和事件。
ActiveX控件可使COM组件从外观和使用上能与普通的窗口控件同样,并且还提供了相似于设置Windows标准控件属性的属性页,使其可以在包容器程序的设计阶段对ActiveX控件的属性进行可视化设置。ActiveX控件提供的这些功能使得对其的使用将是很是方便的。本文下面即以MFC为工 具对ActiveX控件的开发进行介绍。
1、建立项目
1.打开VS2008新建MFC项目。这里咱们取名为“ActiveXDemo” 。
2.输入项目名称为“ActiveXDemo”和项目位置。
点击肯定进行下一步。
3.运行时许可证默认不勾选。
若是勾上,生成时会多出一个文件
.lic , 只有拥有许可的用户才能够调用ocx插件。继续下一步。
4.完成建立控件项目自动建立好MFC ActiveX程序框架。
其中 的 ACtiveXDemoApp 是 我 们 这 个 控 件 的 主 程 序 模 块 , 定 义 了 控 件的 注 册
( DllRegisterServer)、删除(DllUnregisterServer)等功能,通常不用动,若有须要咱们能够
在其中的 InitInstance 和ExitInstance 中定义咱们本身的初始化和终止操做代码,通常也就是一些资源的初始化和销毁工做。
CActiveXDemoCtrl 是控件类,咱们要作的控件功能基本上就是要在这个类中实现。
须要提一下的是在这个类中重写了父类的 OnDraw 函数,有以下两句代码:
pdc->FillRect(rcBounds,
CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
pdc->Ellipse(rcBounds);
也就是在控件上画了一个椭圆, 实际控件开发中能够根据功能须要修改重写这个函数来
绘制控件界面。
CActiveXDemoCtrlPropPage 是属性页类,这个类实现了一个在开发时设定控件属性的对话
框。
ActiveXDemoLib 是为客户程序提供本控件的属性、方法以及可能响应的事件的接口的。
2、添加属性,方法和事件工具
1.属性spa
属性是ACTIVEX控件想全部容器公开的数据成员。.net
以下图右键添加属性,属性变量类型咱们选LONG,变量名为TimeStyle,其余默认。插件


2.方法命令行
方法就是控件开放给用户使用的一些功能函数,相似于C++的类函数。开发人员能够提供自定义功能。设计
以下图所示咱们添加一个方法Start(),其余默认。3d
以下图所示,咱们能够从类视图清楚的看到咱们添加的属性和方法名。xml
3.事件
ACTIVEX经过事件通知容器控件上发生了某些事情。将控件开发人员的某一特定操做识别为事件。
以下图所示,咱们添加事件,添加事件顺序按照如图所示。事件名咱们写OnSend ,内部名称习惯上修改成FIleOnSend.添加一个参数lpstrTime.

以下图,咱们能够清楚地看到咱们刚才添加的事件
在start 事件中咱们调用showcurrenttime 函数,函数实现已经给出。接着咱们回调事件函数。
3、注册与反注册
1.惟一标识ID
以下图Classid 是该控件的惟一标识,这个咱们能够在注册表里找到。

2.注册
命令行输入regsvr32 控件路径XXX
3.反注册
反注册控件regsvr32 -u 控件路径XXX
到此咱们OCX 控件制做就完成了。