您的位置:首页 > 产品设计 > UI/UE

COM进程外服务器实现 QueryInterface时,这样的代码为什么不行?

2006-07-14 15:44 295 查看
2006-7-14: COM进程外服务器实现 QueryInterface时,这样的代码为什么不行?

HRESULT QueryInterface( REFIID riid, void **ppv) {

.....

if( riid == MYIID1 || riid== MYIID2 .... ) { // MYIIDX 是该对象实现的接口

*ppv= this; ////1

}

.....

}

客户QueryInterface成功后却无法调用MYIIDX的方法。这样写才可以:

HRESULT QueryInterface( REFIID riid, void **ppv) {

..... if( riid == MYIID1 ) {

*ppv= (MY_IID1*) this;

} else if( riid == MYIID2 ) {

*ppv= (MY_IID2*) this;

}

.....

(MY_IIDX*) this,这个转换到底起什么作用呢?我试了一下,如果不是COM,在一个程序内是没有什么作用的。

<html>
2006-7-14: COM进程外服务器实现 QueryInterface时,这样的代码为什么不行?

HRESULT QueryInterface( REFIID riid, void **ppv) {

.....

if( riid == MYIID1 || riid== MYIID2 .... ) { // MYIIDX 是该对象实现的接口

*ppv= this; ////1

}

.....

}

客户QueryInterface成功后却无法调用MYIIDX的方法。这样写才可以:

HRESULT QueryInterface( REFIID riid, void **ppv) {

..... if( riid == MYIID1 ) {

*ppv= (MY_IID1*) this;

} else if( riid == MYIID2 ) {

*ppv= (MY_IID2*) this;

}

.....

(MY_IIDX*) this,这个转换到底起什么作用呢?我试了一下,如果不是COM,在一个程序内是没有什么作用的。

<html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐