ActiveX控件使用总结
开发环境: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控件使用总结相关推荐
- vs2008 外部调用ActiveX控件接口方法
转自:http://topic.csdn.net/u/20090605/16/018e26e9-06e2-4e0d-8099-bc8eb326afde.html sndaxdrs: 初学activeX ...
- VC使用ActiveX控件常见问题
转自:http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面,它表示将你联系到Microsoft.In ...
- vs2008 ActiveX控件测试容器的生成以及调试ActiveX控件
1.ActiveX控件测试容器的生成:用TSTCON生成测试容器 http://msdn.microsoft.com/zh-cn/library/f9adb5t5(v=vs.90).aspx 在搜索里 ...
- 如何发布ActiveX 控件
转自:http://blog.csdn.net/zougangx/archive/2008/07/30/2738147.aspx [背景] 做过ActiveX控件的朋友都知道,要想把自己做的Activ ...
- vc mysql控件_VC++使用ActiveX控件连接和操作数据库
VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...
- 用C#编写ActiveX控件(三) 转载
在前面我们已经完成了ActiveX控件的开发,接下来的就是发布它了. 首先,我们建立一个windows安装项目,并将ActiveX控件的主输出添加到项目输出中.然后,改动ActiveX控件的主输出文件 ...
- ActiveX控件和它的容器
1.COM基础 2.ActiveX控件及实现 3.ActiveX控件容器及实现 4.总结 1.COM基础 COM是一种组件开发技术, 它实际上是一种在二进制层上兼容的软件开发方法的规范. COM技术是 ...
- COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)
声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改而来,因此同样遵循Code Project Open L ...
- COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
源代码下载:MyActiveX20081229.rar 声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改 ...
- 解决CPC撰写文档报错问题“无法获取“AxforApplication”控件的窗口句柄。不支持无窗口的 ActiveX 控件”
解决CPC撰写文档报错问题"无法获取"AxforApplication"控件的窗口句柄.不支持无窗口的 ActiveX 控件" 参考文章: (1)解决CPC撰写 ...
最新文章
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
- 程序员应该学习C语言的十个理由
- 分隔单词和标点符号示例
- 轻松玩转jquery。
- 【分享】C# 字节帮助类 ByteHelper
- 在anaconda中运行jupyter notebook,无法自动打开浏览器的解决方案,亲测100%有效
- 字符串:凯撒密码(洛谷P1914)
- Sentinel2A影像监测家乡油菜长势!!
- Spring Boot基础学习笔记09:Thymeleaf模板引擎
- php mysql 字段自增_MySQL自增字段取值的详细介绍(附代码)
- java毕业设计户籍管理系统mybatis+源码+调试部署+系统+数据库+lw
- 阿西莫夫机器人三定律或已过时?伯克利教授定义AI发展“新三原则”!
- 查看IP和MAC地址的命令
- 带饭省下的钱充3个月话费还嫌多!
- 建筑计算机综合应用能力实训,计算机综合应用能力实训.doc
- Python数据分析入门(一)——初探数据可视化
- 金额数字3位隔开php,PHP实现人民币数字格式化,每三位加逗号
- scss 基本语法整理
- 微服务架构最重要的 10 个设计模式!
- jmeter下载(JMeter怎么读)
热门文章
- 婚恋职场人格-张晓文-武汉理工大学-中国MOOC-亲密关系测试题参考答案
- 七个非常好用的黑科技APP,免费/小众/超实用,一次性全给你
- 用结构化思维策划一个会议
- linux启动tongweb命令,东方通tongweb linux安装(示例代码)
- css 标签上 title 和 alt 的区别
- Java Filter——敏感词汇过滤
- 纯JS实现简易扫雷小游戏网页项目
- 第十三届蓝桥杯2022各组完整真题(可评测)
- 蓝牙音乐之AVRCP
- android avrcp处理流程,(VR虚拟现实)Android 蓝牙AVRCP功能的实现.doc