New Document
“挨踢”业的白领民工誓要成为“挨踢”业的金领民工! 在中国特色软件链条上,我真实的感到--- TMD !!! 好像离我的理想越来越远啦!!! 我的最终理想:~有钱~有玩的时间~最终要的是有晒太阳的时间~
首页
相册
标签
QT开发(2)
c++知识摘抄(22)
vc控件(8)
ActiveX开发(7)
SQLServer知识(1)
项目管理知识(9)
vc调试经验(2)
反恐精英cs相关(1)
免费网游(1)
思考与致富(3)
治国平天下(1)
软件使用说明(0)
集中监控(2)
简单网络管理协议snmp(0)
Java编程(1)
堆与栈有什么区别?
在java中取得当前的系统时间并且转
男 性必吃12种食物[建议
银行的前置系统功能介绍
DCC 的意思?有什么优缺点?
网络安全知识
VC++ studio中后缀为.bs
[转载]从用户接触到完成需求说明书
[转载]了解编程的心理
SQL 中的自动功能 两例
Re:windowsXP下安装qt-
Re:typedef 用法
Re:typedef 用法
Re:C语言时间函数<转载>
Re:ActiveX控件的一些背景知
Re:男儿行
Re:男儿行 作者:仇圣
Re:typedef 用法
Re:VC 6.0 “fatal e
Re:C语言时间函数<转载>
::签写留言::
请教
请教请教!!
常用CASE工具
彼得德鲁克驭人之道-张从忠老师
清风飞扬
http://ivybell.blogbus.com/index.html
处理 SSI 文件时出错
详细信息
站内订阅(0)
加为好友
发送短信
日志:57
评论:20
留言:3
访问:
ActiveX控件的一些背景知识
□eliming 发表于 2006-1-10 16:58:00
在真正开始创建
ActiveX
控件之前,需考虑三个问题。第一个当然是
ActiveX
控件是什么,这个问题引起了不少混乱,所以对它下个定义是很重要的。请记住这是本书的定义,一旦你
开始成为迎合
ActiveX
程序员的新闻组的常客时,就会发现各种其它答案。第二件事是,我们要讨论一下,一旦你创建了一个
ActiveX
控件,你能从它得到些什么,这个讨论中还要
看用户期待些什么。最后,我们需要看一下
ActiveX
控件与使用过的其它控件有什么区别,最重要的是
OCX
和
ActiveX
控件有什么区别。下面每一节帮助你探讨刚才提到的一个问题。
什么是
ActiveX
这里讲得是你发现的对
ActiveX
所作的最简单的定义。
ActiveX
是
OCX
的高级形式(也许把它看作
OLE
的较简单形式更合适)。但是,这个简单定义不能表达
ActiveX
控件的实质,用户认为
ActiveX
就是
OLE
。对程序员来说,
ActiveX
还是一套用于
Internet
的实能技术。它提供了过去没有的一种信息交换方法。
注释
Microsoft
目前正在开发一种新的
Internet
专用的组件技术,称为
COM+
。尽管许多内部网使用了
ActiveX
,而且
ActiveX
依然将用作应用程序组件,但
ActiveX
从未在
Internet
上广泛被采用过。
ActiveX
在
Internet
上失败的理由有三条:组件大小,安全考虑以及缺乏对非
Microsoft
浏览器的兼容性。请谨记,你或许应该考虑把
ActiveX
控件
作为公司内部使用的解决方案,而不是做为
Internet
的实现技术。
作为真正欣赏
ActiveX
的程序员,就不得不从程序员的角度去看一下
OLE
,这就是意味着要看一下
OCX
。从用户的角度看,
OCX
所做的都是在
两个应用程序(或操作系统与一个应用程序)之间交换数据。
OCX
比数据交换的内涵要丰富得多。它们包括着一种称之为组件对象模型
(COM)
的概念。
COM
是定义对象模块间标准二进制接口的规范。这个接口定义了函数调用方法、基于标准结构的数据传送技术以及几个标准的函数调用。使用
COM
意味着,你写应用程序模块(如
OCX
)时使用何种语言都无关紧要,因为模块接口在二进制层次上是相同的。
注释
写作本书时,
Microsoft
正在设计
WebView
,它是
Internet Explorer
与
Windows 95
系统的
Explorer
之间的一种集成技术。这一新技术使得对
Web
站点的访问就像对
Explorer
中列出的驱动器或其它资源的访问一样容易。还可以看到你比较熟悉的
URL
已被普通英文名称所代替。你可以在
Windows 98
中看到这一技术的实际运用。
COM
怎样对你写的应用程序产生影响呢
?
答案是相当复杂的,原因在于使用
COM
的方式众多,倒不是因为技术本身是多么复杂。当用户把一个图形图像
对象放入你的应用程序控制的容器中时,你对这个对象知道些什么呢
?
实际上你只知道是谁首先创建了它。知道这一信息就允许你在这个应用程序中调用许多服务,这些服务包括显示这个图形或允许用户编辑它。实际中,你在做的是共
享应用程序的代码。
程序员也能从使用
COM
中受益。当把一个
OCX
安装到你的程序设计环境中时,实际上你完成了什么呢
?
大多数情况下,你拥有了一个粘贴于窗体某处的
一个新控件。你不必真正地知道控件的内部工作原理,唯一重要的因素是,控件能为你的应用程序做些什么,以及如何与它打交道。你可以使用标准接口来调用安装
到你机器中的特定代码模块,这就是
COM
。
ActiveX
是这种思想的扩充,仍然使用标准接口,但是,不再简单地从本地机器环境或
LAN/WAN
网的常设连接上调用代码,而是从
Internet
调用它。另外,这一新的代码能采用
applets
(包含内容的小程序)或微小应用程序的形式。
ActiveX
将为你做些什么
OCX
能为桌面系统做些什么,
ActiveX
就能为
Internet
做同样的事。但是,你将在以前从没想到的地方发现
ActiveX
控件。例如,
NetManage,Inc
公司计划创建一个新的电子邮件客户机,称之为
Z-Mail Pro
。这一软件包支持
ActiveX
技术的方式是,允许用户直接地在消息查看窗口中交换、创建以及查看
HTML
文档。这就意味着用户拥有了创建动态
Web
页的能力,这种能力正是你今天不得不实际完成的任务。
远程连接也会从
ActiveX
的使用中受益。例如,
Proginet Corporation
目前正在开发把主机
(Mainframe)
数据带到桌面系统去的
ActveX
技术。它的
Fusion FTMS
(文件传输管理系统)可以使用支持
OLE
容器的任何开发语言,比如
Delphi
,
Visual C++
以及
PowerBuilder
。从本质上看,你将把一个
ActiveX
控件放入一个窗体,定义到哪里去找数据,然后依靠控件进行连接。
Internet
上的远程访问不再要求用户去钻过马戏团中的大铁圈了(即不用在连接中跳来跳去了)。主机上一个特殊的传输服务器通过自动化地处理所有传输
请求而完成打包。操作员在客户能访问公司站点之前再也不用人工地为站点下载一个必需的文件了。
甚至于
Microsoft Exchange
也会从
ActiveX
受益。
Wang Laboratories,Inc.
和其它公司正在创建将
Exchange
和
ActiveX
混合在一起的新的附件。
Wang
的产品是客户机
/
服务器图像附件,它允许用户扫描、查看、注释、操
作或打印图形图像,
而不用考虑这些图像位于何处。正是这个产品,还包括了一个层次存贮管理的
ActiveX
控件。将这两种技术组合在一起,使得在大公司中使用和访问图形变得
容易了。它们还使得寻找一个所需的图形变得容易了,这最终导致公司节约了存贮空间。
Microsoft
自己也发布了许许多多的
ActiveX
控件。其中有些可以从
Microsoft
的
Internet
站点
( http://www. microsoft. com)
免费下载,这些新的控件有用于
PowerPoint
的
Animation Player
以及用于
Access
和
Schedule+
的
InternetAssistant
(
Internet
助手)。
Access
的
Internet
助手能为要上载的数据库表格拍出快照作为静态图像,每当用户访问该页时,快照都会自动更新。
Schedule+
的
Internet
助手允许把日程表信息加载到
Web
页,因为每当用户访问站点时都会自动更新这些数据,所以再也不用担心在家上班的雇员会缺席会议了。最
后,
PowerPoint
的动画放映机则允许你在任何兼容
ActiveX
的浏览器中演示
PowetPoint
的演示文稿。
最后,如果认为
ActiveX
无助于安全性,那还要再推敲一下。这些日子里,许多的新的防火墙和证书策略正在轮番出现,其中一个是
Net2000
。
Net2000
是由许多
API
构成的,允许开发人员把
NetWare
内核服务(包括目录、
安全和特许证书)放入自己的应用程序中。你可以在内部网中通过
ActiveX
控件来选择这个
API
。这种做法对用户和开发人员有什么帮助呢
?
这意味着,在适当的程序设计结构下,网络管理员能够追踪整个网络中的特许使用,这种追踪甚至于跨越
Internet
连接。当更多的人开始在家中而不是在办
公室中进行计算工作时,这就变成了一个非常重要的课题。
ActiveX
与
OCX
控件
就绝大多数情况来说,
ActiveX
控件和
OCX
控件是完全可以互换的。可以看到与
Internet
风马牛不相及的
ActiveX
控件广告,仔细一看,就会发现,在不久以前,这些控件大概还出现在
OCX
控件列表中。当然,你要仔细观察这些控件。即使
ActiveX
控件与
OCX
控件确实共享了同一继承,
ActiveX
控件与
OCX
控件也不完全是一回事。请记住,
ActiveX
控件是能够在
Internet
上工作的。
Internet
对程序设计环境带来了一些特殊的挑战。你不再能够奢求高速装入,
OCX
在因特网环境中使用时,其规模成了一个严重的问题,下载一个
60KB
的
OCX
就对用户的耐心带来了考验,而试图下载一个
200KB
的
OCX
大概会导致用户中断下载。而
ActiveX
控件是
OCX
的小型版本。
注
OCX
和
ActiveX
控件的一个主要差别是
ActiveX
控件通常要小一些(轻一些)。
ActiveX
控件也在受到各种机器专用需求的牵制。在机器上安装
OCX
时,安装程序能对机器进行检测并作出所需的许可。对
ActiveX
控件却
不能这样要求。在这里你不能对客户机作任何假定,客户机可以是新的奔腾,也许是昨日的
80386
。(如果你的
ActiveX
控件确存在某种平台限制,那
么,要么设法解决它,要么肯定每个使用它的人都清楚这一限制。)
你还需要应付
OCX
程序员从未想到的情况。比如,如果浏览器根本不支持
ActiveX
时会发生什么
?
目前处理这一问题的方法是,浏览器对那些不知
作如何处理的
HTML
标记只是简单地忽略掉。在这种情况下很容易应付一个与
ActiveX
不兼容的浏览器
──
只需打出一条消息,让用户知道他们的浏览器不能在当前页工作并指导
用户换一个浏览器就可以了。
基于
MFC
与基于
ATL
的控件
Visual C++
为了说明它比其它程序设计语言有完善的开发环境,它包容了两种创建
ActiveX
控件的方法:
MFC
和
ATL
(
Active
模板库)。但是,这一灵
活性也带来了其它开发人员没遇到的一些问题。比如,怎样确定创建哪一种类型的控件
?
一些开发人员通过在他创建的所有控件中使用同一种技术来解决这个问题,但这样做本身就表明,你还没有真正地钻研并利用
Visual C++
的全部潜力。
注
用
Visual C++
创建
ActiveX
控件有两种方法:
ATL
和
MFC
。
确实没有任何理由能肯定地说,在给定的情况下,创建控件使用哪种方法会更好。真正需要做的是弄清楚:你期待控件做些什么,你打算对什么进行开发从
而获得所需功能,以及你的专业知识水平。显然,有些情况下,创建控件用这种方法比另一种方法更好,因为,两种方法确实各有利弊。当把一个
ATLActiveX
控件与一个
MFC ActiveX
控件作对比时,需要考虑一些因素,为了给你一些对这个问题的基本看法,请读完下面列出的各条注意事项,从这里会发现一些对你有用的基本思
路,从而帮助你选择一种最好的方案。
开发速度
使用
MFC ActiveX Control Wizard
(
MFC ActiveX
控件生成向导)是创建控件的最快方法。这个向导将大部分接口细节管理起来,使你最终得到控件逻辑的一个轮廓。事实上,使用
ATL
方法创建控件通常要使开发
人员用两倍(于
MFC
方法)的时间。显然,这还取决于诸如控件复杂度以及程序设计经验之类的因素。
维护
MFC
和
ATL
共有的特色是使得用它们产生的代码,比那些从头开始写出的代码,维护起来要容易得多。但是,当对一个原来的控件作一些与维护有关的变化(比
如找出小毛病后修改掉它)时,就要考虑一下了。
ATL
控件通常包含不多的由向导生成的
“
锅炉钢板型
”
(即难懂的)代码。因为对自己写出的代码会更加熟悉,
因而改变起来就更快更容易。另一方面,
Microsoft
维护着你使用的
MFC
中所有控件,这就是说,许多小毛病的改正和其它种类的更新,只要简便地再把
代码编译一次,就可以自动地完成。在这种情况下作何种选择,确实难以回答,因为没有办法能确切地确定在将来你需要对你的控件作什么样的维护变化。
控件大小
如果要创建最小的
ActiveX
控件,那么采取
ATL
方案最好。
ATL
把控件的各方面控制权都留给你,使得你可以方便地手工调节控件的每个元素,而不至于
陷于
MFC
专用代码的泥潭。基于
MFC
的控件不仅规模大,而且在用户使用这一控件之前还必须下载
MFC
库,这个库也有相当多的代码。
学习难度
由于创建
ATL
控件时不得不考虑更多的事情(比如接口),所以创建起来比
MFC
控件就更困难。多数情况下,先用
MFC ActiveX ControlWizard
(
MFC ActiveX
控件生成向导)创建几个控件,从中学习创建控件逻辑的规则,这样做是值得的。
技巧
如果你用惯了
Visual C++5.0
的
ATL
,那么就尝试一下
6.0
版中新的
ATL COM AppWizard
(
ATL COM
应用程序生成向导)。新的
ATL COMAppWizard
(
ATL COM
应用程序生成向导)帮助你以比过去手工技术快得多的速度创建控件。但是,使用
MFC ActiveX Control Wizard
(
MFC ActiveX
控件生成向导)创建控件仍然要比使用
ATL COMAppWizard
(
ATL COM
应用程序生成向导)快得多。
兼容性
从定义可以看出,基于
MFC
的
ActiveX
控件要求客户将
MFC
库安装到他们的机器上。但是,有好多种版本的
MFC
库在使用,而它们并不都是相互兼容的。如果用户下载了你的控件及其相关的库,但不能使用某些重要的应用
程序,因为新库与它们的应用程序不兼容,这时该怎么办呢
?
因为
MFC
库存贮于
SYSTEM
目录下,客户机仅能拥有一个版本,到那里找到
MFC
库就能解决兼容性问题了。
使用的难易程度
MFC ActiveX Control Wizard
(
MFC ActiveX
控件生成向导)对你写控件代码的能力不作多少要求,所以它把它所拥有的一切都放进了控件之中。这意味着你最终可以得到十分丰富的接口,但其中有的对你来说
或许用不着。这一功能性浪费,导致了控件规模的膨胀,并且使得它难于使用。
代码修改的难易程度
开始时,创建基于
MFC
的控件是非常容易的。因为向导把许多代码都添加好了,所以应用程序开发进程很快,你只需关注把你的控件做得出色的细节。如果创建的
控件投入使用后不需作什么修改,选择
MFC
显然是上策。但是,如果决定要更新控件时该怎么办
?
你的源代码文件包括了大量代码,这些代码不是由程度员写出来的,需要用额外的时间去研究、理解它们。因此,如果计划经常会对代码作修改,那么选择
ATL
将
是上策,因为,当控件中由程序员生成的代码出了什么事时,程序员处理起来就容易多了。
□
阅读全文
|
回复(1)
|
引用通告
|
编辑
上一篇:
OCX的来历及与应用编程的关系
下一篇:
用VC++来设计ActiveX控件
Re:ActiveX控件的一些背景知识
□
activex naive(游客)
发表评论于
2007-3-2 15:57:00
good
□个人主页 |
引用
|
返回
|
删除
|
回复
处理 SSI 文件时出错
发表评论:
大名:
密码:
(游客无须输入密码)
主页:
标题:
教育人博客页面数据载入,请耐心等待