关于Com和ActiveX的初学者问题

uu 2000-05-29 09:55:00

我是一名学生对Com很感新趣,请教高手:

Com到底是什麽?
ActiveX到底是什麽?
两者有什麽区别?
...全文
270 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JGTM2000 2000-07-13
  • 打赏
  • 举报
回复
alwaysakid:一个小错误,QueryInterface和new是完全不同的概念。事实上,COM对象的创建和接口方法的使用是完全分离的。COM对象的new其实是IClassFactory.CreateInstance。也就是说,COM对象是完全自含的,包括创建其自身的代码也是他自己提供,这样它就对外界完全隐藏了自身的一切细节,包括用来创建实例的内存大小。
uu 2000-06-08
  • 打赏
  • 举报
回复
谢谢大家的回答,我有点明白了。
alwaysakid 2000-06-02
  • 打赏
  • 举报
回复
COM是一种规范,ACTIVEX是一种应用。
也就是说,COM定义了什么叫做“类”,而ACTIVEX则是按照这种规范的实现

COM和C++中的类是一样的,所谓QueryInterface,相当于new一个对象,返回一个指向对象的指针,这个指针其实就是类的实例的this指针,也就是指向一个函数指针表。
例如
IStream* pStream;。。。。。。
xxx->CreateStream(..,..,..,&pStream);
pStream->Read(,,);

其实是这样的:
指针表如下:
IStream struct
AddRef DWORD 0;
QueryInterface DWORD 0;
Release DWORD 0;
.....
Read DWORD 0; 下面假设Read方法的offset是16(第4个)
......
IStream ends

//CreateStream填写好了指针表
mov eax pStream;
mov eax,DWORD PTR[eax+16];
push ...//Read的参数
call eax;

看市面上的书其实帮助不是很大,如果从汇编的层面去理解就容易的多了。
halfdream 2000-06-02
  • 打赏
  • 举报
回复
这两个概念有时是同一个意思,有时又有所不同,
估计又是微软自己把水搅混的,是技术宣传与市场炒作结合的结果。
kxy 2000-05-29
  • 打赏
  • 举报
回复
这不是一句两句就能说清楚的.
推荐两本书.
COM原理与应用--潘爱民著 RMB39
COM/DCOM技术内幕---Randy Abernerthy著 RMB88

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧