COM编程入门(5)

时间:2025-04-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文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219