<2015-0222>
测试一个ATL DLL中定义的ATL简单对象, 该对象有个属性,有个方法.
用Javascript在html中进行测试.
<html>
<title>
test_case.html
</title>
<!--
<script language="vbscript">
coClassCalcPi.lDigits = 5
dim pi
pi = coClassCalcPi.CalcPi
document.write "Pi = " & coClassCalcPi.lDigits & _
"lDigits = " & pi
</script>
-->
<head>
<script type="text/javascript">
function fn_test()
{
var tmp;
msg_set(">> fn_test\r\n");
coClassCalcPi.lDigits = 5;
tmp = "coClassCalcPi.lDigits = " + coClassCalcPi.lDigits + "\r\n";
msg_append(tmp);
tmp = "coClassCalcPi.CalcPi() = " + coClassCalcPi.CalcPi() + "\r\n";
msg_append(tmp);
msg_append("<< fn_test\r\n");
}
function msg_empty()
{
textarea_msg_area.value = "";
}
function msg_set(x)
{
textarea_msg_area.value = x;
}
function msg_append(x)
{
textarea_msg_area.value += x;
}
</script>
</head>
<body>
<textarea name="textarea_msg_area" rows="10" cols="100">
在按下"testcase"按钮后,开始测试
</textarea>
<br>
<br>
<input type="button" οnclick="fn_test()" value="testcase" />
<object id=coClassCalcPi classid ="clsid:F3598B01-9F0D-4E37-B0F6-4A03681CAE27">
</object>
</body>
</html>
运行效果
<2015-0222-1937>
用回调代理事件机制, 如果事件机制不生效的话(我就遇到了...)
<html>
<title>
test_case.html
</title>
<!--
<script language="vbscript">
coClassCalcPi.lDigits = 5
dim pi
pi = coClassCalcPi.CalcPi
document.write "Pi = " & coClassCalcPi.lDigits & _
"lDigits = " & pi
</script>
-->
<head>
<script type="text/javascript">
function fn_test()
{
var tmp;
msg_set(">> fn_test\r\n");
/// 设置事件的回调函数
/// 一共3个事件(无参, 1个入参, 2个入参)
coClassCalcPi.varEventHandler = myevent0;
coClassCalcPi.varEventHandler1 = myevent1;
coClassCalcPi.varEventHandler2 = myevent2;
coClassCalcPi.lDigits = 2;
tmp = "coClassCalcPi.lDigits = " + coClassCalcPi.lDigits + "\r\n";
msg_append(tmp);
tmp = "coClassCalcPi.CalcPi() = " + coClassCalcPi.CalcPi() + "\r\n";
msg_append(tmp);
msg_append("<< fn_test\r\n");
}
function myevent0()
{
msg_append("Event0\r\n");
}
function myevent1(param1)
{
msg_append("Event1 : " + param1 + "\r\n");
}
function myevent2(param1, param2)
{
msg_append("Event2 : " + param1 + "," + param2 + "\r\n");
}
function msg_empty()
{
textarea_msg_area.value = "";
}
function msg_set(x)
{
textarea_msg_area.value = x;
}
function msg_append(x)
{
textarea_msg_area.value += x;
}
</script>
</head>
<body>
<textarea name="textarea_msg_area" rows="10" cols="100">
在按下"testcase"按钮后,开始测试
</textarea>
<br>
<br>
<input type="button" οnclick="fn_test()" value="testcase" />
<object id=coClassCalcPi classid ="clsid:F3598B01-9F0D-4E37-B0F6-4A03681CAE27">
<param name=lDigits value=3> <!-- 永久化不好使 -->
</object>
</body>
</html>
运行效果:
<2017-0817> 整理了一个测试ATL OCX控件的html.
<!-- @file test_ocx.htm -->
<!-- @brief use html load ocx, test ocx's method -->
<!-- make ATL project on vs10 ~ vs15 -->
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<TITLE>对象 my_ocx 的 ATL 8.0 测试页</TITLE>
<script type="text/javascript">
function fn_test()
{
var myOcx;
var msg;
var bOk = 0;
var tmp;
var DataFilePathName;
msg_set(">> fn_test\r\n");
myOcx = document.getElementById('my_ocx');
tmp = myOcx.version() + "\r\n";
msg_append(tmp);
msg = myOcx.fn1();
bOk = myOcx.is_ok();
if (1 == bOk) {
msg_append("操作成功\n内容:\n");
} else {
msg_append("操作失败\n错误码:\n");
}
msg_append(msg);
msg_append("\n");
if (1 == bOk) {
DataFilePathName = myOcx.getPathName();
myOcx.showDataFile(DataFilePathName);
}
}
function msg_empty()
{
textarea_msg_area.value = "";
}
function msg_set(x)
{
textarea_msg_area.value = x;
}
function msg_append(x)
{
textarea_msg_area.value += x;
}
</script>
</HEAD>
<BODY>
<textarea name="textarea_msg_area" rows="20" cols="100">
在按下"testcase"按钮后,开始测试
需要在IE中打开, 然后允许控件运行.
不要用360浏览器打开, 没有允许控件运行的提示.
在Win10X64中的IE中做过测试了, 控件好使.
</textarea>
<br>
<input type="button" οnclick="fn_test()" value="testcase" />
<br>
<OBJECT ID="my_ocx" CLASSID="CLSID:B618943D-56FD-4C43-8C19-4D8DAEDAA0C9"></OBJECT>
</BODY>
</HTML>
来源:CSDN
作者:lostspeed
链接:https://blog.csdn.net/LostSpeed/article/details/43906387