前言

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 (ocx)控件的开发相关推荐

  1. VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

    VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程 开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是 ...

  2. Visual Studio开发MFC项目OCX控件添加使用控件方法

    1.在Windows系统中注册OCX控件 在OCX控件目录,右键新建一个文本文档,将文件名和扩展名改为"双击注册.bat",添加如下注册脚本: cd /d %~dp0 RegSvr ...

  3. 模拟仪器仪表ActiveX(OCX)控件 - 实时曲线(RTChart)介绍及下载地址

    SIARTChart Control(Simulated Instrument ActiveX RealTime Chart)即实时曲线控件,用于工控领域绘制实时曲线,它提供了很多属性和方法来操纵它, ...

  4. VS2008 ActiveX(ocx控件)的调试工具ActiveX Control Test Container安装说明

    vs2008中的TSTCON( ActiveX Control Test Container )工具非自动安装,而是作为一个例程提供.所以应找到该例程,并编译: 如vs2008安装在默认路径则 1, ...

  5. MFC .ocx控件开发

    本文将介绍ocx的含义,以及如何利用MFC创建ocx控件. 1.ocx控件的含义 OCX 是对象类别扩充组件(Object Linking and Embedding (OLE) Control Ex ...

  6. 海康威视视频ocx控件开发总结

    因工作需要,需要开发一个海康威视的视频ocx控件,嵌入到intouch,组态王一类的组态软件中使用. 之前从没做过ocx控件的开发,连MFC的开发也没做过,折腾了几天,终于基本完成.记录一下这个过程. ...

  7. vs2008中,在OCX控件中应用doc/view基本步骤

    1.利用向导创建一个MFC ActiveX Control控件CMyOCX: 2.在工程中加入ActivDoc头文件和执行文件: class CActiveXDocTemplate : public ...

  8. OCX控件全屏、恢复

    本文实现了在OCX控件上双击鼠标,控件全屏,再次双击鼠标,控件恢复原始状态的功能. 1.首先需要创建一个MFC的OCX控件,比如:MFCActiveXControl1. 2.在头文件中增加全屏.恢复需 ...

  9. [转]C#开发ActiveX控件,.NET开发OCX控件案例

    引自:百度   http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么 ...

最新文章

  1. 'str' object is not callable
  2. [导入]ubuntu全面介绍 与 ubuntu截图
  3. 文件结束[置顶] javaweb框架--自定义标签与freemaker结合
  4. Leetcode 166. 分数到小数 解题思路及C++实现
  5. 二进制状态压缩相关操作
  6. c语言简单密码字符a用f代替,c语言实验.doc
  7. Codeforces Round #712 (Div. 2) E. Travelling Salesman Problem 思维转换
  8. postman如何测试php接口_基于Postman的API自动化测试
  9. A child container failed during start 解决方案
  10. 2020 年 AI 产业报告:100 个岗位抢 1 个人,计算机视觉成最大缺口
  11. 用Jmeter+Badboy+Fiddler做接口测试
  12. Pod install 慢, pod update 慢, Cocoapods setup下载缓慢,手动解决方案
  13. backward()函数中的参数解析
  14. linux filesystem not open,LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem
  15. 使用C++调用Socket接口实现简易TCP服务器
  16. VScode 常用插件推荐,非常全面
  17. 物流管理APP软件开发公司 让货运变得更简单
  18. android手机解锁成功后的广播,Android动态注册锁屏、解锁、开屏系统广播
  19. 需要达到什么水平才能找到一份计算机实习?
  20. python 数据处理之使用get_dummies进行one-hot编码

热门文章

  1. TeeChart .NET for Blazor以满足不同的需求和预算
  2. jar包调用dll lib等外部库文件失败解决办法
  3. osm下载的数据怎么导入到postgresql
  4. FPGA-半精度浮点数(float_16)及其VHLS求逆实现方法
  5. Android 集成 X5 WebView
  6. Python3实现批量网址的http响应状态码检测
  7. composition组合式API
  8. sharepoint2013 在office365 使用infopath 创建单击事件和视图,并建立切换规则
  9. 基于OGG的Oracle与Hadoop集群准实时同步介绍
  10. 进口中国十大老牌自行车全世界十大名牌自行车品牌排行榜