手机版

COM编程入门(5)

发布时间:2021-06-06   来源:未知    
字号:

COM编程入门,十分浅显易懂

if ( SUCCEEDED ( hr ) )

{

// 用pISL调用方法

// 通知COM 对象不再使用它

pISL->Release();

}

接下来将详细讨论IUnknown接口。

基本接口——IUnknown

每一个COM接口都派生于IUnknown。这个名字有点误导人,其中没有未知(Unknown)接口的意思。它的原意是如果有一个指向某COM对象的IUnknown指针,就不用知道潜在的对象是什么,因为每个COM对象都实现IUnknown。 IUnknown 有三个方法:

AddRef() —— 通知COM对象增加它的引用计数。如果你进行了一次接口指针的拷贝,就必须调用一次这个方法,并且原始的值和拷贝的值两者都要用到。在本文的例子中没有用到AddRef()方法;

Release() —— 通知COM对象减少它的引用计数。参见前面的Release()示例代码段;

QueryInterface() —— 从COM对象请求一个接口指针。当coclass实现一个以上的接口时,就要用到这个方法;

前面已经看到了Release()的使用,但如何使用QueryInterface()呢?当你用CoCreateInstance()创 建对象的时候,你得到一个返回的接口指针。如果这个COM对象实现一个以上的接口(不包括IUnknown),你就必须用

QueryInterface()方法来获得任何你需要的附加的接口指针。QueryInterface()的原型如下:

HRESULT IUnknown::QueryInterface (

REFIID iid,

void** ppv );

以下是参数解释:

iid:所请求的接口的IID。

ppv:接口指针的地址,QueryInterface()通过这个参数在成功时返回这个接口。 让我们继续外壳链接的例子。它实现了IShellLink 和IPersistFile接口。如果你已经有一个IShellLink指针,pISL,可以从COM对象请求IPersistFile接口:

HRESULT hr;

IPersistFile* pIPF;

COM编程入门(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)