ActiveX开发知多少?

由于前段时间要为一个项目定制一个电子地图+视频监控系统,考虑到公司现有的开发资源(C#项目组)及已经完成的下层业务框架(C++实现),选择了.net技术结合ActiveX来实现需求。由于下层业务框架是我编写的,所以开始了自己的编写Activex插件之旅。

按照我的习惯在接触一个新技术时并不会匆匆开始上手实现,而是在了解基本原理之后再着手。所以通过各种百科了解了一些关于ActiveX的背景和使用场景。又深入其背后的COM技术浏览了潘爱民老师的《COM本质论》这本书,了解了一下Activex背后的思想。于是乎在理清了ActiveX的基本脉络后开始了业务插件的编写。

ActiveX插件最基本的两个用法:方法接口和事件接口

方法接口是这么一个过程,调用——>等待结果返回。可是一个同步方法接口再结合js的单线程特性在界面端体验方面却有一个致命缺陷,在等待这个接口返回的时候整个界面会僵死,不能响应任何动作。

异步方法接口虽然能立马返回,但又如何来获取最终结果呢?刚好,事件接口可以解决这个问题,我们可以在前台注册这个事件,然后由ActiveX后台来响应这个事件,从而前台可以获取正确的结果,类似于我们熟悉的回调函数。 推荐阮一峰的这篇文章《Javascript异步编程的4种方法》来了解下以上我说的两种情况。

就这么简单?可是现实仿佛并不是如此,我们要把一个接口写成异步接口,肯定要在接口内部开启一个线程来执行耗时较长的操作,然后在操作完成后响应事件通知上层获取数据。这里有个坑,你要是在所启线程中去响应事件接口,前台是无法响应的。怎么办呢?解决方案在这里《How to start a second thread in an MFC-based ActiveX control to fire events in Visual C++》

备忘录

“爱遗忘这人类天性”也绝对是我们程序员的一个杀手锏,不说别的,影响工作效率!我一个月前写完了几个方法接口、事件接口后昨天因为需求更改再写时居然忘了IDE的快捷途径了,求助了google大神后搞定,所以我得为几个点建一个备忘录。

  • 备忘录1:如何在工程里添加方法、事件接口

    在这货这里添加方法:

    211951938.jpg

    在这货这里添加事件:

    212042406.jpg

    (注:如提示找不到事件接口的错误,自己手动在相应位置加上就好)

  • 备忘录2:ActiveX插件测试调试的两大利器

    TstCon32.exe,Microsoft ActiveX Control Pad;

  • 备忘录3:js脚本调用方法,事件的代码示例

这几点可以说明问题

212129775.jpg


另外还有些ActiveX空间的签名打包类的知识,很多前端的文章都有介绍,我就不在这献丑了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值