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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值