COM / OLE / ActiveX / IDispatch混淆 [英] COM / OLE / ActiveX / IDispatch confusion

查看:154
本文介绍了COM / OLE / ActiveX / IDispatch混淆的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法围绕这些术语之间的差异。

I can't wrap my head around the differences among these terms.

是COM和ActiveX同义词吗?

Are COM and ActiveX synonyms?

ActiveX对象只是一个暴露IDispatch的COM对象吗?

Is ActiveX object just a COM object that exposes IDispatch?

许多旧的MSDN页面提到没有任何COM上下文的IDispatch。它是否有一个单独的历史,并在其生命周期的稍后在COM伞下引入?

Lots of older MSDN pages mention IDispatch without any COM context. Does it have a separate history, and was just introduced under the COM 'umbrella' later in its lifecycle?

OLE在哪里适合?在MFC命名和MSDN中是否存在(相当多) - 只是遗留的?

Where does OLE fit in? Is its (considerable) presence in MFC naming and MSDN in general - all just legacy?

维基百科提供了一些见解,但不是很多。我找不到更深入的参考。

Wikipedia gives some insight, but not much. I couldn't find a more in depth reference.

推荐答案

COM Programming by Example : p>

Found some quotes from COM Programming by Example:


另一件你很快会发现的
COM是市场营销有一个野外旅行
天与术语。相反,
有助于促进理解,
你会发现在大多数情况下它促进
神秘。 ... OLE,ActiveX,Remotable
对象 - 这意味着什么这
周? ...

Another thing you'll quickly find with COM is that marketing had a field trip day with the terminology. Rather then helping to promote understanding, you'll find in most cases it promotes mystery. ... OLE, ActiveX, Remotable Objects - which one means what this week? ...

COM从解决方案演变为一个
特定的问题 - 如何允许一个字
处理器编辑电子表格在
字母,用户不必退出
字处理程序就可以做到。这个
解决方案称为OLE。 ...但是,
与第二个版本的OLE(OLE2),
它的创建者修改OLE32.DLL到
暴露更多的基本功能
的OLE,使其API可以使用
来允许任何应用程序接受另一个的
功能。这个API,
从1993年以来没有太大变化,
是被认为是COM
API。
...

COM evolved out of the solution to a specific problem - how to allow a word processor to edit the spreadsheet in a letter without the user having to exit the word processor to do it. This solution was called OLE. ... However, with the second release of OLE (OLE2), its creators modified OLE32.DLL to expose more of the basic functionality of OLE so that its API could be used to allow any application to acess the functionality of another. This API, which hasn't changed much since 1993, is what is considered to be the COM API. ...

一旦COM API暴露,
Microsoft使用它来创建
,然后调用OLE控件
在Visual C ++中编写的复杂控件(例如,按钮
螺旋,列表框播放
音乐)为
可访问Visual Basic
应用程序。最终,这个相同的
技术用于允许控制
下载并由您的web
浏览器使用。此时,名称
更改为ActiveX控件或仅为
纯ActiveX纯粹为营销
原因。虽然你可以在ActiveX控件中封装任何
功能,但
它的要求是专门用于支持用户
接口控制的

Once the COM API was exposed, Microsoft used it to create what were then called OLE controls to allow sophisticated controls (e.g., buttons that spiral, list boxes that play music) written in Visual C++ to be accessible to Visual Basic applications. Eventually this same technology was used to allow a control to be downloaded and used by your web browser. At this point, the name changed to ActiveX controls or just plain ActiveX purely for marketing reasons. Although you can package any functionality in an ActiveX Control, its requrirements have been specialized for supporting a user interface control.

我仍然对最后一句感到好奇 - 一个COM对象是否满足一些额外的要求才能作为ActiveX控件?

I'm still curious about the very last sentence - must a COM object satisfy some additional requirements to qualify as an ActiveX control? - but its enough to let it go.

感谢您的回答!

这篇关于COM / OLE / ActiveX / IDispatch混淆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆