用ATL开发ActiveX网页控件

来源:互联网 发布:江苏破获网络诈骗团伙 编辑:程序博客网 时间:2024/05/16 11:06

由于业务需要,需要做一个网页插件,以前研究过一点,可以用MFC或者ATL来做,如果不需要界面,用ATL比较好些。这次用ATL开发实现了功能,所以在这里记录下开发流程和需要注意的问题。

开发环境:win7 sp1,visual studio 2013;

微软的vs2013功能很强大,很多代码都不需要自己去写,能自动生成。由于每个项目需求的功能不一样,所以不介绍网页插件具体实现的功能,只介绍下实现网页插件的步骤,下面就来介绍下工程实现的步骤:

一:创建一个ATL工程,如图


各个选项不需要改动,直接下一步,下一步,完成就行了,生成的文件是dll的,可以重命名为*.ocx


二:添加实现插件功能的类。右键项目——添加类——ATL——ALT控件

手动输入一个类名,然后就按照向导一步步完成

3,在类中添加函数,或者说方法。

切换类视图,右键刚才添加的类的名称的接口

选择添加方法,向导,定义方法名称,和输入参数,也可以定义输出参数(注意,如果是输出参数必须为指针,但是如果要传入字符串,不能用char*,应该用BSTR,不用指针,不然会被强制转换成BOOL类型

 

四,实现函数

在类的源文件中,可以看到刚才添加add(LONG num1, LONG num2)函数

 

STDMETHODIMP Cfirst::add(LONG num1, LONG num2)
{
 // TODO:  在此添加实现代码
 LONG sum = num1 + num2;
 char szSum[64] = { 0 };
 sprintf(szSum,"%d + %d = %d",num1,num2,sum);
 MessageBox(NULL,szSum,NULL,NULL);
 return S_OK;
}

在自动生成的测试网页中略加修改

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<TITLE>对象 first 的 ATL 测试页</TITLE>
</HEAD>
<BODY>


    <object id="first" classid="CLSID:B9722C72-B9B7-438E-B445-E7664C29677B"></object>
    <input type="button" value="Add" onclick="add();" />
    <script type="text/javascript">
        function add() {
            var obj = document.getElementById("first");
            obj.add(2,3);
        }
    </script>

</BODY>
</HTML>

效果图


0 0
原创粉丝点击