通过创建一个ocx项目
编译后可以生成以下文件
其中testCtl.ocx就是我们最终需要的插件
可以通过cmd命令将控件注册到本地电脑
regsvr32 D:\code\testCtl\Debug\testCtl.ocx
为u了方便也可以写到批处理文件中,下次使用的时候直接双击批处理文件就可以了
注销命令是
regsvr32 /u D:\code\testCtl\Debug\testCtl.ocx
测试ocx有两种方式
1、使用VS自带的控件容器tstcon32来测试(可以使用everything搜索本机文件)
- 打开tstcon32 - 插入新控件
- 选择需要测试的控件,点击确定
- 点一下控件,然后右键点击控件的边边(点击控件的中间没有反应,不知道是不是的我电脑的问题),弹出菜单,选择调用方法
- 控件的可用方法都可以在下拉框里找到,选择方法,点击调用
2、使用ie来测试,最终也是ie来用,这个更能反映真实效果
- 先上html测试代码
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<TITLE>ocx test</TITLE>
<script language="javascript" type="text/javascript">
function onAboutClicked() {
CMyControl.AboutBox();
}
</script>
</HEAD>
<OBJECT
ID="CMyControl"
CLASSID="clsid:5F37AD88-8EE8-4D08-AF12-E9B9F50F2816"
CODEBASE="ocxTest.ocx#version=1.0"
ALIGN=center HSPACE=0 VSPACE=0 hidden>
</OBJECT>
<a href="#" onclick="javascript:onAboutClicked()">About</a> <br />
</HTML>
CLASSID是插件类id,在创建ocx项目的时候会自动生成一个唯一id,在*****.idl中最后一项uuid,加粗CMyControl相当于是C++中类的实例,通过它可以在js中调用ocx提供的接口
ie测试会更准确,因为ocx最终就是用在ie上的,一些问题在tstcon32上测不出来,比如字符反转义问题,但用ie测无法进入程序代码单步调试,只能使用AfxMessage输出关键信息