前言

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.打开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 是为客户程序提供本控件的属性、方法以及可能响应的事件的接口的。

二、添加属性,方法和事件

1.属性

属性是ACTIVEX控件想所有容器公开的数据成员。

如下图右键添加属性,属性变量类型我们选LONG,变量名为TimeStyle,其他默认。

2.方法

方法就是控件开放给用户使用的一些功能函数,类似于C++的类函数。开发人员可以提供自定义功能。

如下图所示我们添加一个方法Start(),其他默认。

 

如下图所示,我们可以从类视图清楚的看到我们添加的属性和方法名。

3.事件

ACTIVEX通过事件通知容器控件上发生了某些事情。将控件开发人员的某一特定操作识别为事件。

如下图所示,我们添加事件,添加事件顺序按照如图所示。事件名我们写OnSend ,内部名称习惯上修改为FIleOnSend.添加一个参数lpstrTime.

如下图,我们可以清楚地看到我们刚才添加的事件

在start 事件中我们调用showcurrenttime 函数,函数实现已经给出。接着我们回调事件函数。

三、注册与反注册

1.唯一标识ID

如下图Classid 是该控件的唯一标识,这个我们可以在注册表里找到。

2.注册

命令行输入regsvr32 控件路径XXX

3.反注册

反注册控件regsvr32  -u  控件路径XXX

到此我们OCX 控件制作就完成了。

mfc制作ActiveX的更多相关文章

  1. 最全的基于MFC的ActiveX控件开发教程

    浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...

  2. MFC 之ActiveX控件学习

    本文将介绍ActiveX控件的应用与工作原理,读者可以把ActiveX控件看成一个极小服务器的应用程序,它不能独立运行,必须要嵌入到容器程序中与容器一起运行,就像电脑主机中的显卡,它自己在电脑硬件系统 ...

  3. 基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发

    浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...

  4. C#制作ActiveX浏览器插件.net

    开发环境:VS2008 第一步 创建项目 新建一个项目,选择“Windows窗体控件库”,创建一个用户控件项目“ActiveXDemo”(注意,这里起名不能用中文,否则后面会出问题),里面有个用户控件 ...

  5. visual studio 2012 的制作ActiveX、打包和发布

    开发环境是Vs 2012  Framework 4.0 源码和制作工具在文章最下边 一. ActiveX控件Demo 新建一个Window窗体控件库项目 在自动生成的UserControl1页面上添加 ...

  6. visual studio 2012 的制作ActiveX、打包和发布[转]

    开发环境是Vs 2012  Framework 4.0 源地址:http://www.cnblogs.com/li-peng/p/3455247.html 源码和制作工具在文章最下边 一. Activ ...

  7. C#制作ActiveX控件及部署升级(摘自网络)

    使用C#开发ActiveX控件 控件开发.制作CAB包.签名.部署 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序 ...

  8. C#制作ActiveX插件

    首先新建项目--->类库,取名:ActiveXDemo 右键项目属性:应用属性==>程序集信息=>使程序集Com可见, 生成==>输出==>为com互操作注册 新建接口类 ...

  9. 【转载】基于MFC的ActiveX控件开发(3)

    原文:http://iysm.net/?p=122 3.事件 ActiveX 控件使用事件通知容器控件上发生了某些事情.事件的常见示例包括单击控件.使用键盘输入数据和控件状态更改.当发生这些操作时,控 ...

随机推荐

  1. linux 学习的一些书单,对了解android 也有大用

    要推荐的书,我在<那两年炼就的Android内功修养>这篇文章中有提到,这里再列一下出来: 语言类: <深度探索C++对象模型>,对应的英文版是<Inside C+++  ...

  2. HTML - 分页效果布局

    <p class="jcFY"> 显示 <select name="" id=""> <option valu ...

  3. 关于线上js报错问题的思考

    1.有没有可能对线上报错进行实时监控,只要线上报错出现就会以邮件的形式发出来. 2.有没有可能将每个模块和开发者联系起来,只要报错就直接报给开发者

  4. JavaWeb温习之Cookie对象

    1. 会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话.有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...

  5. rpm方式安装 gitlab centos7

    一.使用RPM安装 - 推荐 官方推荐的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/ Tips 1 : Centos 7使用el7 ...

  6. Ts中的接口interface(属性也能继承...)

    接口ITest.ts interface ITest { name:string; age:number; run(); to(x:number,y:number):number; } 必须继承接口的 ...

  7. Hive sql语法详解

      Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQ ...

  8. VC编译选项 多线程(/MT)

    VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd)C 运行时库                        库文件Single threa ...

  9. Haskell中cabal install glib遇到的问题

    1. 运行命令cabal install glib时出现错误: Cannot find gtk2hsC2hs Please install `gtk2hs-buildtools` first and ...

  10. 【转】SpringMVC+Spring3+Hibernate4开发环境搭建

    原文地址: SpringMVC+Spring3+Hibernate4开发环境搭建