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

相关文章
|
.NET 容器 开发框架
Silverlight初级教程-建立silverlight项目
Silverlight初级教程 建立silverlight项目 首先在这里说明下,我是一个flasher同时我也做Asp.net编程,在这里我会以开发flash的思路来介绍如何开发silverlight。
743 0
|
JavaScript C#
c#中开发ActiveX的学习笔记
1.为什么要用ActiveX? 网页本身的功能是有限的,要想实现一些网页本身不支持的功能,比如:网页上的p2p视频播放,就得靠ActiveX这种古老的技术。 2.c#能开发ActiveX吗? 严格意义上讲,c#是不能生成纯正ocx控件的,我们在vs.net中新建项目时,也找不到专门的"ActiveX项目"新建项,最多也只就能新建"类库"得到一个dll而非ocx(因此我们也无法用传统的regsvr32来注册该dll),但是c#能开发com组件,activeX控件本质上讲跟com是一类技术,所以用c#开发"能够让网页调用的com类库"还是可行的。
955 0
|
前端开发 C# 容器
走进WPF之开发类似Visio软件
走进WPF之开发类似Visio软件
179 0
Revit 二次开发添加WPF窗口的办法
Revit 二次开发添加WPF窗口的办法
Revit 二次开发添加WPF窗口的办法
|
Web App开发 .NET C#
Silverlight第三方控件专题
这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 Ra...
1029 0
|
Web App开发 C# C++
浏览器插件之ActiveX开发(一)
浏览器控件开发 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题。在有特殊需求(如涉及数据安全的金融业务数据交互、需插件才能实现的与本地设备的交互等)的情况下可以酌情慎用。 浏览器插件总体可以划分为两大阵营,即IE支持的插件以及非IE支持的插件。本来在Netscape时代,对于浏览器插件是有公用的
2244 0
|
6月前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
310 0
|
C++ 安全 JavaScript

热门文章

最新文章