用SDK玩转ActiveX

调用ActiveX控件?呃,这实在不是一件容易的事情:用各种封装精良的Framework(MFC 、VCL等等)的话,最后成品EXE的体积难免偏大;用SDK虽然可以有效地减小这个体积,但是 往往又无从下手——总之,这似乎是一件鱼与熊掌不能兼得的憾事。还好, “不容易”并不代表“不可能”,李马在本文中要介绍给诸位的,就 是“玩转”ActiveX的一种方法,这种方法包括了从ActiveX控件调用到ActiveX控 件事件处理的一切必要细节。当然,题目所说的“SDK”也并不是纯粹的SDK,而 是借助了ATL的OLE支持,毕竟用SDK实现OLE容器太繁琐了。

在开始正文之前,我还想 说明一下本文所面向的读者群。首先,你必须对SDK的编程方式和COM组件的调用方式有所了 解,因为本文中的绝大部分示例代码都与之相关,涉及到这方面的知识我也不会再加以解释 ;其次,你可以不了解ATL,因为本文中对ATL的使用仅限于ActiveX的OLE容器,我也只是在 适当的地方给予简要的说明;再次,你可以不了解COM连接点的知识,我在文中会给予详细的 介绍。

那么闲话毋庸赘叙,让我们开始吧。

准备工作

现在让我们来完 成代码之外的事情,请按照以下步骤建立我们的工程:

1. 打开Visual C++,新建一 个Win32 Application(我名之为ActiveX)。

2. 新建一个Resource Script(资源脚 本),在其中添加一个对话框(我名之为IDD_MAIN_DLG)。

3. 在对话框上单击右键 ,选择“Insert ActiveX Control...”(如下图)。在本文中,我以Microsoft Agent Control为例,所以在之后的列表之中选择“Microsoft Agent Control 2.0”。

4. 完成后的对话框如下图。

骨架代码

现在就可以编写代码了。建立一个C++ Source File(C++源文件),在其中输入下面的程序 骨架:

#include <atlbase.h>
CComModule _Module;
#include <atlwin.h>
#import "C:\WINNT\msagent\agentctl.dll"
using namespace AgentObjects;
#include "resource.h"
int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd )
{
   _Module.Init( NULL, hInstance );
   _Module.Term();
   return 0;
}

时间: 2016-04-25

用SDK玩转ActiveX的相关文章

拥抱API经济:教你三步使用SDK玩转阿里云API

众所周知,阿里云提供了全方位.多层次的云计算产品体系.阿里巴巴技术委员会主席王坚博士说过,要让云计算像水电一样方便获得.为了开发者无缝衔接阿里云的众多服务,将它们集成到自己的应用系统,阿里云开放了API和用来访问API的工具SDK. 什么是阿里云SDK? 阿里云Java SDK让您不用复杂编程即可访问云服务器.CDN(内容分发网络).OSS(对象存储)等丰富又强大的云计算基础设施.它是面向开发者的编程库,能够直接应用在开发者的应用程序里,被应用逻辑调用.打个简单的比方,应用程序是家用电器,阿里云

如何学好VC和MFC(各前辈学习方法及感受整理)(一)

序: 近来,在论坛上面几乎每天都可以看到很多的人提出如何学习MFC,学习MFC的确不是一件很容易的事情,加上成千上万的API函数和微软的一些资料的保留,学习MFC就变得更难了.不过我认为难在入门,入门后就慢慢觉得得心应手了.下面是一些先辈们学习过程中总结出来的方法及学习感受,今天把它们整理出来,供大家参考. 正文: 我记得我在网上是这么说的:先学win32的SDK,也就是API, 再学MFC,这么一来呢,就先有个基础,MFC是API的封装, 如果API用的熟了,MFC上手就轻松的多了. 我觉得呢

PowerPointViewer SDK activeX 控件 破解

问题描述 哪位大哥有PowerPointViewerSDKactiveX的破解版?或者哪位高手破解一下这个OCX控件? 解决方案 解决方案二:這個秒殺的控件,可以說沒加密.註冊碼是明碼.

如何用c#来制作一个activeX控件或类似的东西

active|activex|控件 Q cat: 操作系统: 2000/xp 编程工具: vs.net 2003 /c# 问题: 我想制作一个activeX控件或类似的东西,有用户界面的,然后想在ie中使用,通过Vbscript与其进行数据交换,在以前好像可以使用vb就能做到,但是现在是vs.net 2003企业版,好像已经进化了,activeX成了老的技术,那vs.net如何解决这种类似的问题?如果要使用c#来编程的话,具体如何操作?还要有界面. A回答: 在C#中和ActiveX控件对应的是

拥抱ES6——OSS JavaScript SDK开发手记

JavaScript作为当下最火的语言(之一),结合OSS能够创建出非常丰富的跨前后端的应用.现在,OSS正式推出JavaScript SDK,使用OSS的 前后端 同学 都 可以方便地使用. ES6 首先,什么是ES6? 其实ES6是最新版本的ECMAScript,也就是JavaScript标准. ECMAScript 6, also known as ECMAScript 2015, is the latest version of the ECMAScript standard. > ES

Visual C#创建和使用ActiveX组件

active|activex|visual|创建 开发基于.Net平台上的程序员是很难从本质上把Visual C#和ActiveX组件联起来,虽然在使用Visual C#开发应用程序时,有时为了快速开发或者由于.Net FrameWork SDK的不完整,还需要借助ActiveX.但即使如此,也很难把二者联系起来.其中的原因就是能够被Visual C#直接使用文件和通过Visual C#生成的可执行程序只可能是托管的文件.而Active X组件却都是非托管文件.这种文件的差异决定了二者本质"对立

使用ActiveX控件开发网页常见的问题

1. 什么是ActiveX 控件? Microsoft ActiveX 控件是由软件提供商开发的可重用的软件组件.使用 ActiveX控件,可以很快地在网址.台式应用程序.以及开发工具中加入特殊的功能.例如,StockTicker控件可以用来在网页上即时地加入活动信息,动画控件可用来向网页中加入动画特性. 现在,已有1000多个商用的ActiveX控件,开发控件可以使用各种编程语言,如C,C++,下一代的Microsoft Visual Basic,以及微软公司的 Visual Java开发环境

基于VC++中ATL创建ActiveX控件的探讨

引言 ActiveX控件是微软公司提供的功能强大的程序设计和开发技术,是COM组件开发技术的重 要组成部分.它是OLE的第三个版本,对原先OLE控件的最大扩展是增加了Internet功能,它 不仅可以在支持OLE控件的容器中使用,更可以作为一个Internet控件,直接成为网页的一部 分.另外,ActiveX控件作为一种可重用的组件,相当于一个封装好的代码模块,它是通过其 方法.属性.事件来与应用程序进行通信的,此外,ActiveX控件是与开发语言无关的.用户 在使用控件时不必考虑它是VC还是用

Kinect for Windows SDK开发入门(一) 开发环境配置

前几天无意中看到微软发布了Kinect for windows sensor,进去看了一下Kinect应用的例子,发现 Kinect除了作为xbox360游戏的外设外还能开发一些很酷的应用,而且微软也发布可针对Kinect开发的 Kinect for windows SDK1.0正式版本,原本想买一个Kinect for windows sensor来进行开发玩一玩的 ,可是那个出来没多久,淘宝上只有代购的,而且比Kinect for Xbox360 sensor贵了很多,而且只能进 行开发,考