C++基于ATL工程编写ActiveX控件

开发环境:VS2010

开发工程:C++ATL项目

开发目的:创建ActiveX实现js调用

步骤:

1.      创建一个ATL工程

应用程序类型选择动态链接库(DLL),勾选支持COM+1.0,勾选支持部件注册器

2.      选择类视图,添加接口与类


如果没有找到类视图,可以在工具栏中添加上视图


选择工程,右键添加类。选择ATL简单对象。

输入对象信息。


此处的ProgID需要注意,填写之后可在js中通过new ActiveXObject(“你的progID”)创建对象。

   
     

         勾选支持中的3个选项,我选择的线程模型为单线程,可根据实际需求修改。完成后会发现已经生成了Add.h和Add.c文件。里面有一些红色波浪线提示错误无需管。

3.      依然是类视图中,找到对应的接口添加方法,比如我创建的简单对象名称为Add,这里我们就在IAdd节点上右键添加方法。

添加方法时,需要注意的是out和retval必须为指针类型,否则不让勾选,此处添加三个参数,其中result作为返回值(勾选了retval的参数)。


会发现你如果勾选了一个retval后,就不会再让你添加参数了,表示只能有一个返回值。仅仅勾选out的参数,js没有效果,C#等可以使用这种函数的out参数。

4.      找到Add.c文件,在添加完成的函数中实现具体方法。


5.      编译生成成功后,在工程目录(Debug或者release)下找到AddCom.dll.

使用regsvr32 AddCom.dll命令注册。提示注册成功后,编写一个html代码测试。

 

6.      两种方式创建对象。

1)  通过object标签创建对象

[html]  view plain copy print ?
  1. <object  classid="clsid:4738A542-7AEB-4CE4-86A7-71081B8CE8DA"id="myAddObj"  
  2.   
  3.                            name="myAddObj " ></object>  


类似于这种标签创建的对象,可以通过js直接访问到myAddObj对象。Classid可以在AddCom.idl文件中查找到,library中的coclass Add对应的id。

  1. library AddComLib  
  2.   
  3. {  
  4.   
  5.     importlib("stdole2.tlb");  
  6.   
  7.     [  
  8.   
  9.         uuid(64EC1270-5626-4FDF-888F-41859FB35E15)       
  10.   
  11.     ]  
  12.   
  13.     coclassCompReg  
  14.   
  15.     {  
  16.   
  17.         [default]interface IComponentRegistrar;  
  18.   
  19.     };  
  20.   
  21.     [  
  22.   
  23.         uuid(FE912C18-0CFB-4DCA-99FA-6E4BC4B07594)       
  24.   
  25.     ]  
  26.   
  27.     dispinterface_IAddEvents  
  28.   
  29.     {  
  30.   
  31.         properties:  
  32.   
  33.         methods:  
  34.   
  35.     };  
  36.   
  37.     [  
  38.   
  39.         uuid(4738A542-7AEB-4CE4-86A7-71081B8CE8DA)       
  40.   
  41.     ]  
  42.   
  43.     coclass Add  
  44.   
  45.     {  
  46.   
  47.         [default]interface IAdd;  
  48.   
  49.         [default,source] dispinterface_IAddEvents;  
  50.   
  51.     };  
  52.   
  53. };  


 

2)  通过new ActiveXObject创建对象

[javascript]  view plain copy print ?
  1. var myAddObj = new ActiveXObject("myAddObj.1");  


myAddObj也就是在创建简单对象时填写的ProgID,这个可以在Add.rgs资源文件中查找到。

7.      创建完对象就可以直接调用相应的函数了,如刚才实现的一个result = add(arg1,arg2)方法。

[javascript]  view plain copy print ?
  1. var result = myAddObj.add(1,2);  
  2.   
  3. alert(result);  

8.对ActiveX控件标记安全   

9.将ActiveX打包签名CAB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值