开发环境:vs2015
上网找了很多关于这方面的资料进行学习。
终于给我找到几个比较好的文章。
因为知识比较老。一般是接触硬件和底层的人才会去学习。

参考文章:这是两个比较好的文章
ActiveX控件的基本操作方法以及如何在VS2010下使用控件
https://blog.csdn.net/u014028070/article/details/38424611
c++ ActiveX基础1:这个讲了如何提供外部接口调用
https://blog.csdn.net/qq445803843/article/details/45845585

下面演示生成控件,html调用控件的例子

一、创建控件

1.先创建ActiveX项目

到这里不急着敲代码
先了解一下控件项目的架构。
参考:一个别人分享的资源文档。我会在文章最下面分享链接。
找到类视图,分析对应结构。

其中的 CActiveXApp 是我们这个控件的主程序模块,定义了控件的注册
(DllRegisterServer)、删除(DllUnregisterServer)等功能,一般不用动,如有需要我们可以
在其中的 InitInstance 和 ExitInstance 中定义我们自己的初始化和终止操作代码,一般也就是
一些资源的初始化和销毁工作。
Caxtivexdemo1Ctrl 是控件类,我们要做的控件功能基本上就是要在这个类中实现。
需要提一下的是在这个类中重写了父类的 OnDraw 函数,有如下两句代码:
pdc->FillRect(rcBounds,
CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
pdc->Ellipse(rcBounds);
也就是在控件上画了一个椭圆,实际控件开发中可以根据功能需要修改重写这个函数来
绘制控件界面。
CActiveXPropPage 是属性页类,这个类实现了一个在开发时设定控件属性的对话
框。
CActiveXLib 是为客户程序提供本控件的属性、方法以及可能响应的事件的接口的
库节点,在添加控件的这些功能的时候会用得到。

2.创建对外的接口

定义调度映射和事件映射方法,提供给外部调用者使用

右键-添加-添加方法-确定
生成一个对外的接口函数
例子:Start()


会在3个地方添加代码。
1.idl文件

2.ctrl控制类的定义和实现

到这里控件就OK了。
生成项目即可。会生成一个ocx文件。
这里建议大家把注册输出改为否。
后面自己手动注册即可。下面有描述。

事件–映射返回数据

右键添加–事件


正常函数调用

属性返参:


右键–添加–属性

页面调用:

 <!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>testAll</title><style>*.button {height: 50px;padding-left: 20px;padding-right: 20px;}</style>
</head>
<body><div style="position: fixed;top: 20px"><label for="">结果</label><input type="text" id="result" style="width: 600px;"></div><div style="position: fixed; top: 50px"><div><object classid="clsid:C468DFBB-2F32-4CA6-8461-1791A29A4B00" id="ocx" width="0px" height="0px"></object></div><h3>非阻塞接口</h3><div><input class="button" type="button" value="test" onclick="onTest()"></div></div><!-- 事件处理 --><script>function onTest() {var resp_str =ocx.start();       result.value = ocx.pOutInfo;}</script>
</body></html>

二、使用控件–使用html方式调用控件

1.注册控件。
注册方式。我是用bat方式的。比较方便。
%~dp0的意思是当前路径。
注册bat:
cd /d %~dp0
regsvr32 ActiveX.ocx
反注册bat:
cd /d %~dp0
regsvr32 -u ActiveX.ocx
右键管理员模式运行即可成功注册。

2.html调用ocx
html学习网址:
https://www.w3school.com.cn/html/index.asp
代码:

<html>   <head>   <title> TestOCX </title>   </head>   <body>   <object ID= "L"  CLASSID= "CLSID:54B420A3-05D9-462D-9AFF-178E63670DB9"  width=300 height=200>   </object>   <script language="javascript" type="text/javascript">function myTest(){L.Start();}</script><input id="Button1" type="button" value="test"  onclick="myTest();" />   </body>
</html>   

解释:

需要使用IE浏览器打开。

成功!!!

添加捕捉ActiveX控件的事件数据

1.右键类视图里的控制类–添加事件

添加后会在2个地方添加代码:


然后生成控件后使用html

html添加代码:

     <!-- 事件处理 函数名就是你定义的事件名 --><script type="text/javascript" for="L" event="OnDo(data)">L.value = data;alert(data);</script>


成功捕捉事件数据!!!

三、使用控件–使用MFC方式调用控件

1.到Dialog右键插入已经注册好的控件

2.右键控件处添加变量

添加变量后即可调用你的控件内的接口!!!

如果要去掉提示弹窗:
参考下面文章:
去掉弹窗
1.遇到窗口下弹窗
https://zhidao.baidu.com/question/252382360.html
2.提示弹窗
https://zhidao.baidu.com/question/304928075497826844.html

基于MFC的ActiveX控件开发.pdf
链接:https://pan.baidu.com/s/17kilQgwdRtAt3PHrJgDrCg
提取码:bhnr

修改时间:2021-06-07

ActiveX控件使用总结相关推荐

  1. vs2008 外部调用ActiveX控件接口方法

    转自:http://topic.csdn.net/u/20090605/16/018e26e9-06e2-4e0d-8099-bc8eb326afde.html sndaxdrs: 初学activeX ...

  2. VC使用ActiveX控件常见问题

    转自:http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面,它表示将你联系到Microsoft.In ...

  3. vs2008 ActiveX控件测试容器的生成以及调试ActiveX控件

    1.ActiveX控件测试容器的生成:用TSTCON生成测试容器 http://msdn.microsoft.com/zh-cn/library/f9adb5t5(v=vs.90).aspx 在搜索里 ...

  4. 如何发布ActiveX 控件

    转自:http://blog.csdn.net/zougangx/archive/2008/07/30/2738147.aspx [背景] 做过ActiveX控件的朋友都知道,要想把自己做的Activ ...

  5. vc mysql控件_VC++使用ActiveX控件连接和操作数据库

    VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...

  6. 用C#编写ActiveX控件(三) 转载

    在前面我们已经完成了ActiveX控件的开发,接下来的就是发布它了. 首先,我们建立一个windows安装项目,并将ActiveX控件的主输出添加到项目输出中.然后,改动ActiveX控件的主输出文件 ...

  7. ActiveX控件和它的容器

    1.COM基础 2.ActiveX控件及实现 3.ActiveX控件容器及实现 4.总结 1.COM基础 COM是一种组件开发技术, 它实际上是一种在二进制层上兼容的软件开发方法的规范. COM技术是 ...

  8. COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)

    声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改而来,因此同样遵循Code Project Open L ...

  9. COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)

    源代码下载:MyActiveX20081229.rar 声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改 ...

  10. 解决CPC撰写文档报错问题“无法获取“AxforApplication”控件的窗口句柄。不支持无窗口的 ActiveX 控件”

    解决CPC撰写文档报错问题"无法获取"AxforApplication"控件的窗口句柄.不支持无窗口的 ActiveX 控件" 参考文章: (1)解决CPC撰写 ...

最新文章

  1. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
  2. 程序员应该学习C语言的十个理由
  3. 分隔单词和标点符号示例
  4. 轻松玩转jquery。
  5. 【分享】C# 字节帮助类 ByteHelper
  6. 在anaconda中运行jupyter notebook,无法自动打开浏览器的解决方案,亲测100%有效
  7. 字符串:凯撒密码(洛谷P1914)
  8. Sentinel2A影像监测家乡油菜长势!!
  9. Spring Boot基础学习笔记09:Thymeleaf模板引擎
  10. php mysql 字段自增_MySQL自增字段取值的详细介绍(附代码)
  11. java毕业设计户籍管理系统mybatis+源码+调试部署+系统+数据库+lw
  12. 阿西莫夫机器人三定律或已过时?伯克利教授定义AI发展“新三原则”!
  13. 查看IP和MAC地址的命令
  14. 带饭省下的钱充3个月话费还嫌多!
  15. 建筑计算机综合应用能力实训,计算机综合应用能力实训.doc
  16. Python数据分析入门(一)——初探数据可视化
  17. 金额数字3位隔开php,PHP实现人民币数字格式化,每三位加逗号
  18. scss 基本语法整理
  19. 微服务架构最重要的 10 个设计模式!
  20. jmeter下载(JMeter怎么读)

热门文章

  1. 婚恋职场人格-张晓文-武汉理工大学-中国MOOC-亲密关系测试题参考答案
  2. 七个非常好用的黑科技APP,免费/小众/超实用,一次性全给你
  3. 用结构化思维策划一个会议
  4. linux启动tongweb命令,东方通tongweb linux安装(示例代码)
  5. css 标签上 title 和 alt 的区别
  6. Java Filter——敏感词汇过滤
  7. 纯JS实现简易扫雷小游戏网页项目
  8. 第十三届蓝桥杯2022各组完整真题(可评测)
  9. 蓝牙音乐之AVRCP
  10. android avrcp处理流程,(VR虚拟现实)Android 蓝牙AVRCP功能的实现.doc