简单OCX控件的开发

  1. 新建工作空间
    首先新建一个工作区,作为这个小Demo的文件所在目录

    在上图工作空间名称中,填入工作空间名称并点击确定。出现如下界面,工作区名称根据你自己填写的名称而定。

  2. 新建工程
    点击新建->工程出现如下界面:

    在工程名称中填入你所建立的工程的名字,选择MFC ActiveX ControlWizard 选项,并选择添加到当前工作空间,点击确定

你可以在fireView中看到整个工程的文件目录,我的文件目录如下所示:

之后你就可以根据你的需要,来开发OCX控件了。
3. 添加方法
如果你需要添加方法,你可以在工作空间中的ClassView中右击如箭头所示部分,添加你的控件中要使用的方法。

当你右击类视图中_DIDCardReader并点击列表中的Add Method 选项时,会出现如下界面:

此时,你可以在Externel name中填写函数名(Internal name 会根据你填写的Externel name自动填写),在Return type中选择返回类型,Parameter list中添加你需要的参数,类型可选。填写完成点击OK。
此时在你工程目录的.odl 文件中就会产生一条定义
如图所示:

前面的id 表示你当前创建的方法的id,后面的内容类似于函数的声明。
此外,函数会在如图所示cpp文件中创建一个函数体



4. 添加回调函数
如果你需要添加回调函数,你可以在右击下图所示位置,并在右击菜单选项中点击Add Event。
出现如下界面:

在Externel name 中填入回调函数名,Internel name 自动填写,在Parameter list里添加参数列表。
和添加方法一样,回调函数也会在.odl 中声明,在.cpp文件中创建函数体。
如下图所示:

5. 添加之后的文件目录与类视图
在添加完成你需要的函数和方法之后,整体的工程目录会如下所示:

添加之后的类视图大体如下:

  1. 添加消息处理函数WindowProc并添加相关代码
    如果你在开发过程中还需要一些其他的函数,比如消息处理等,你可以在
    在类视图界面右击如下图箭头位置并点击 Add Virtual Function 添加虚函数。


点击之后出现如下界面:


选择你要使用的函数,这里我选择WindowProc 添加通知函数并点击确定,确认添加。

之后你就可以在.cpp文件中找到相应的函数体,并添加相关代码了。
例如,我在消息通知函数中添加如下示例代码,向窗口抛出一个消息。

7. 控件注册并获取CLSID
当你的控件开发完成,需要调用时,你可以先编译,之后再.odl中找到uuid,
注意:一般是最后一个,或者你找到和下图类似格式的部分,复制相应的uuid。


8. 新建HTML并编写JS调用OCX控件
在js调用时,新建一个OBJECT标签,添加classid属性,并把刚才找到的uuid作为它的值。
Js在调用时,先把uuid绑定到一个id下,使之能被该id调用
其中for的值为绑定控件的id, event 是回调函数。
之后你也可以在JavaScript中使用控件的一些函数,也可以通过回调函数来传递参数等。

调用结果:


9. 注册安全对象
此外,你还可以在如下箭头所指文件中将控件注册为安全对象,用来去掉每次调用控件弹出的安全提示窗口


我添加的部分代码如下:
PS: 具体实现方法自己去找吧,网上一大把

// 标记控件初始化安全.
// 创建初始化安全组件种类
HRESULT hr = CreateComponentCategory(CATID_SafeForInitializing,L"Controls safely initializable from persistent data!");
if (FAILED(hr))return hr;
// 注册初始化安全
hr = RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForInitializing);
if (FAILED(hr))return hr;// 标记控件脚本安全
// 创建脚本安全组件种类
hr = CreateComponentCategory(CATID_SafeForScripting, L"Controls safely scriptable!");
if (FAILED(hr))return hr;
// 注册脚本安全组件种类
hr = RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForScripting);
if (FAILED(hr))return hr;

简单OCX控件的开发相关推荐

  1. MFC ActiveX (ocx)控件的开发

    前言 ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM). ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个 ...

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

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

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

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

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

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

  5. DELPHI 开发的 OCX 控件在 MFC 程序中编辑框快捷键不好使的解决

    公司一个大型的项目中使用了 DELPHI 来开发 OCX 控件做数据库的管理,但是GIS图形系统使用 MFC 开发,最后将 OCX 嵌入到 MFC 程序中作为一个完整的系统交付用户使用,但是在使用过程 ...

  6. CAD制图, 机械CAD, 建筑CAD, 电力CAD, CAD设计, 数控与CAM, DXF导入\导出, 打印, 软件开发, VC++源代码,OCX 控件源程序2018

    CAD制图, 机械CAD, 建筑CAD, 电力CAD, CAD设计, 数控与CAM, DXF导入\导出, 打印, 软件开发,VC++源代码,OCX 控件源程序2018 -- 100%源码开放企业级CA ...

  7. MFC .ocx控件开发

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

  8. MFC中开发ocx控件,html容器收不到ocx的事件Event

    问题背景: MFC开发ocx控件,主窗口就是ctrl类,主窗口类中调度接口和事件映射添加,执行OK,外部html容器中接收事件成功,如下: ctrl.h中声明事件映射函数 void EVTPENSIG ...

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

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

  10. 在C#开发WPF桌面应用程序调用OCX控件

    公司需要开发开发C#的WPF桌面应用程序演示软件,该软件调用高拍仪设备使用的的两个x86版本的OCX组件用于显示和控制高拍仪设备. 一.开发环境: 操作系统: Windows 10 企业版操作系统 开 ...

最新文章

  1. DHCP网络服务器的实现
  2. Soul网关发布2.2.0:让高性能网关变得如此简单!
  3. list(列表) python
  4. ssl初一组周六模拟赛【2018.4.21】
  5. HTML浮动导致高度塌陷,HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法(高度欺骗)...
  6. Python深入06 Python的内存管理
  7. UIViewController内存管理
  8. 信息源按加工深度划分_工程勘察时如何划分地层?勘查总工实力整理
  9. c/c++中关于sizeof、strlen的使用说明
  10. python得语言编程模式_一图看懂编程语言迁移模式:终点站是Python、Go、JS!
  11. 刘铎 计算机学院,离散数学及应用 [刘铎 编著] 2013年版
  12. python制作动态时钟_python实现简易动态时钟
  13. android 百度地图api切换城市,【百度地图API】关于如何进行城市切换的三种方式...
  14. 基于 Python 的时序模型——AMIRA模型
  15. 小程序获取链接中的参数
  16. python创建列表副本_解决Python使用列表副本的问题
  17. 微信客服接口 报错40003
  18. 叮! Q币派送中,快来看看你中奖了吗?
  19. h5页面是html5么,H5是什么?5分钟就能全面了解什么是html5页面
  20. html中设置浏览器解码方式

热门文章

  1. Win11系统的显卡驱动安装的详细方法步骤
  2. win764位安装vs2010sp1补丁卡在kb983509解决办法低于40分钟
  3. webservice框架jersey简单总结
  4. php怎么用origin打开,[转载]origin 使用技巧 (4)
  5. 微信小程序游戏开发│石头剪刀布游戏(附源码)
  6. Photoshop插件-黑白(一)-脚本开发-PS插件
  7. 图像影音型计算机主板选择什么,开启4K新时代 七款家用影音主板推荐
  8. Uipath文档教程
  9. javasript |仿百度换肤效果
  10. 搭建结构光三维扫描仪(基于TI资料,PointGrey相机+DLP投影仪搭建成的)