电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

COM组件三个最基本的接口类和使用COM库的三种方法

COM组件三个最基本的接口类和使用COM库的三种方法_第1页
1/4
COM组件三个最基本的接口类和使用COM库的三种方法_第2页
2/4
COM组件三个最基本的接口类和使用COM库的三种方法_第3页
3/4
COM 组件三个最基本的接口类 //VC6 中使用 COM 库的三种方法 COM 组件有三个最基本的接口类,分别是 IUnknown、IClassFactory、IDispatch。 COM 法律规范规定任何组件、任何接口都必须从 IUnknown 继承,IUnknown 包含三个函数,分别是 QueryInterface、AddRef、Release。这三个函数是无比重要的,而且它们的排列顺序也是不可改变的。QueryInterface 用于查询组件实现的其它接口,说白了也就是看看这个组件的父类中还有哪些接口类,AddRef 用于增加引用计数,Release 用于减少引用计数。引用计数也是 COM 中的一个非常重要的概念。大体上简单的说来可以这么理解,COM 组件是个 DLL,当客户程序要用它时就要把它装到内存里。另一方面,一个组件也不是只给你一个人用的,可能会有很多个程序同时都要用到它。但实际上 DLL 只装载了一次,即内存中只有一个 COM 组件,那COM 组件由谁来释放?由客户程序吗?不可能,因为假如你释放了组件,那别人怎么用,所以只能由 COM 组件自己来负责。所以出现了引用计数的概念,COM 维持一个计数,记录当前有多少人在用它,每多一次调用计数就加一,少一个客户用它就减一,当最后一个客户释放它的时侯,COM 知道已经没有人用它了,它的使用已经结束了,那它就把它自己给释放了。引用计数是 COM 编程里非常容易出错的一个地方,但所幸 VC 的各种各样的类库里已经基本上把 AddRef 的调用给隐含了,在我的印象里,我编程的时侯还从来没有调用过 AddRef,我们只需在适当的时侯调用 Release。至少有两个时侯要记住调用 Release,第一个是调用了 QueryInterface 以后,第二个是调用了任何得到一个接口的指针的函数以后,记住多查 MSDN 以确定某个函数内部是否调用了 AddRef,假如是的话那调用 Release 的责任就要归你了。 IUnknown 的这三个函数的实现非常法律规范但也非常烦琐,容易出错,所幸的事我们可能永远也不需要自己来实现它们。 IClassFactory 的作用是创建 COM 组件。我们已经知道 COM 组件实际上就是一个类,那我们平常是怎么实例化一个类对象的?是用‘new'命令!很简单吧,COM组件也一样如此。但是谁来 new 它呢?不可能是客户程序,因为客户程序不可能知道组件的类名字,假如客户知道组件的类名字那组件的可重用性就要打个大大的折扣了,事实上客户程序只不过知道一个代表着组件的 128 位的数字串而已,这个等会再介绍.所以客户无法自己创建组件,而且考...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

COM组件三个最基本的接口类和使用COM库的三种方法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部