ActiveX控件开发总结

创建ActiveX工程:

可以使用VC建立MFC工程或者ATL工程来进行ActiveX控件开发。使用MFC方式建立,系统会自动实现一些ActiveX控件必须的接口,开发人员只需关注业务就可以了;使用ATL方式建立,开发人员需要实现十几个COM接口(ActiveX实际上是COM的一种),需要对COM有一定的了解。但是使用MFC方式,最后发布的安装包要包含引入了的MFCDLL(视频控件引入了两个,总共3M左右),会导致安装包会比ATL方式大一点。

1MFC方式

使用MFC方式创建ActiveX工程比较简单,只要选择了MFC ActiveX工程,之后都按系统下一步就可以了。

ActiveX控件开发总结 

 

2ATL方式

使用ATL方式创建,没有仔细研究过,待补充。

 

调试ActiveX工程

可以使用两种方式调试ActiveX控件:ActiveX测试容器或者IE,建议使用IE作为调试工具,因为ActiveX测试容器有些地方和IE不太一样,而且实际使用是嵌入到IE中使用的。

1、使用ActiveX控件测试容器

可以使用系统自带的ActiveX测试容器来进行调试,调试时选择自己的ActiveX控件名,即可打开创建的工程。

ActiveX控件开发总结

ActiveX控件开发总结

 

ActiveX控件开发总结

 

2、使用IE

也可以使用IE来进行调试,需要自己先创建一个包含了此ActiveX控件(通过CLSID指定)的HTML文件,调试时指定参数为此文件。

ActiveX控件开发总结

HTML文件内容如:

<BODY>

<OBJECT ID="NVS_VAE" CLASSID="CLSID:c8cd5ebc-817b-401f-ab06-05cc55c8d9ee">

</OBJECT>

</BODY>

其中ID可以随便定义CLASSID是与创建的ActiveX工程中自动生成的ID保持一致在创建工程的×××Ctrl.cpp

// 初始化类工厂和guid

 

IMPLEMENT_OLECREATE_EX(CNVS_VAECtrl, "NVS_VAE.NVS_VAECtrl.1",

                       0xc8cd5ebc, 0x817b, 0x401f, 0xab, 0x6, 0x5, 0xcc, 0x55, 0xc8, 0xd9, 0xee)

注:使用IE8的话,默认是多线程,不支持ActiveX控件的调试,可以修改如**册表,来支持调试

Windows Registry Editor Version 5.00

 

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]

"TabProcGrowth"=dword:00000000

 

JavaScrip调用ActiveX控件中的对外方法

页面可以通过JavaScript调用ActiveX控件中的方法与控件进行交互:

1、传入参数

<BODY>

<OBJECT ID="NVS_VAE" CLASSID="CLSID:c8cd5ebc-817b-401f-ab06-05cc55c8d9ee">

<PARAM NAME="lInitFacePara" VALUE="0">

</OBJECT>

</BODY>

 

2、调用方法

通过getElementById 方法,传入控件ID(比如前面的MyPostItCtrl),来调用ActiveX控件中提供的接口(假定StartRealVideoActiveX中提供的对外接口)

 <SCRIPT   language=JScript>

   function test()

   {

        document.getElementById("MyPostItCtrl").StartRealVideo (“摄像机ID”,”码流ID”);

   }

 </SCRIPT>

转载于:https://www.cnblogs.com/snben/archive/2012/09/25/2701096.html