Atl Dll 测试用的html样例

╄→尐↘猪︶ㄣ 提交于 2019-11-27 06:01:34

<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>


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!