我是一个VC++的陌生者,但最近公司开发的项目中,有一个要求要用到OCX控件,即某个WEB页面要调整OCX的某个方法来启动系统的某个进程。
今天我找了一些资料并动手做了一下,有的做成功了,但有的失败,即WEB没有办法调用,我不青楚那里错了。如果边位看到并有时间,麻烦帮我看看。
首先我参照 http://www.codeproject.com/KB/atl/com_atl.aspx,我下载了这个页面的源码,并作了一些修正,使Test_ALT控制台程序可以跑起来,
我修正后的源码: http://files.cnblogs.com/Akuan/TestActivex.rar
从codeproject下载回来的源码,由于文件夹的目录改变了,因而我对Test_ATL.cpp文件的开始部分的一些代码进行了改变。这样控制台程序就可以正常运行。
然后我在原来的Simple_ATL项目中添加了一个Test.htm页面,代码如下:
<HTML>
<HEAD>
<TITLE>New Page</TITLE>
<script language="javascript">
function doTest()
{
var sum;
try
{
sum = SimpleATL.AddNumbers(3,4);
alert(sum);
}
catch(e)
{
alert(e.Message);
}
finally
{
sum=null;
}
}
</script>
</HEAD>
<BODY>
<OBJECT ID="SimpleATL" CLASSID="CLSID:970599E0-2673-11D3-A8A8-00105AA943DF">
</OBJECT>
<input type="button" value="测试加法" id="btnOK" οnclick="doTest();" />
</BODY>
</HTML>
其中CLASSID的值来自于Simple_ATL项目的Simple_ATL.rdl文件中
library SIMPLE_ATLLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(970599E0-2673-11D3-A8A8-00105AA943DF),
helpstring("First_ATL Class")
]
coclass First_ATL
{
[default] interface IFirst_ATL;
};
};
如果那位对这方面比较熟悉的,麻烦帮我解决一下,谢谢。QQ:156834293.