创建ActiveX工程:
可以使用VC建立MFC工程或者ATL工程来进行ActiveX控件开发。使用MFC方式建立,系统会自动实现一些ActiveX控件必须的接口,开发人员只需关注业务就可以了;使用ATL方式建立,开发人员需要实现十几个COM接口(ActiveX实际上是COM的一种),需要对COM有一定的了解。但是使用MFC方式,最后发布的安装包要包含引入了的MFC的DLL(视频控件引入了两个,总共3M左右),会导致安装包会比ATL方式大一点。
1、MFC方式
使用MFC方式创建ActiveX工程比较简单,只要选择了MFC ActiveX工程,之后都按系统下一步就可以了。
2、ATL方式
使用ATL方式创建,没有仔细研究过,待补充。
调试ActiveX工程
可以使用两种方式调试ActiveX控件:ActiveX测试容器或者IE,建议使用IE作为调试工具,因为ActiveX测试容器有些地方和IE不太一样,而且实际使用是嵌入到IE中使用的。
1、使用ActiveX控件测试容器
可以使用系统自带的ActiveX测试容器来进行调试,调试时选择自己的ActiveX控件名,即可打开创建的工程。
2、使用IE
也可以使用IE来进行调试,需要自己先创建一个包含了此ActiveX控件(通过CLSID指定)的HTML文件,调试时指定参数为此文件。
HTML文件内容如:
其中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、传入参数
2、调用方法
通过getElementById 方法,传入控件ID(比如前面的MyPostItCtrl),来调用ActiveX控件中提供的接口(假定StartRealVideo为ActiveX中提供的对外接口)
function test()
{
document.getElementById("MyPostItCtrl").StartRealVideo (“摄像机ID”,”码流ID”);
}