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空间的签名打包类的知识,很多前端的文章都有介绍,我就不在这献丑了。

本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/1325664如需转载请自行联系原作者


yaocoder

相关文章
|
3月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
61 0
Qt开发Activex笔记(三):C#调用Qt开发的Activex控件
Qt开发Activex笔记(三):C#调用Qt开发的Activex控件
Qt开发Activex笔记(三):C#调用Qt开发的Activex控件
|
C# 开发者 Windows
Silverlight与WPF开发人员入门应该知道的十件事
【CSDN 陈秋歌编译】微软开发者社区部门项目经理Pete Brown在纳什维尔DevLink 2010会议上做了一个名为“10件事”的演讲。这个演讲包含了Silverlight与WPF开发人员入门时应该了解的十件事。
1100 0
|
Web App开发 JavaScript 前端开发
|
编解码 开发框架 数据可视化