CreateInstance()在vs2010中为什么没有定义呢?

fsy351 fsy351 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include "iostream"
#include "objbase.h"

using namespace std;

void trace( const char* msg )
{
cout<<msg<<endl;
}

interface IX : IUnknown
{
virtual void _stdcall Fx();
};

interface IY : IUnknown
{
virtual void _stdcall Fy();
};

extern const IID IID_X;
extern const IID IID_Y;


class ClassA : public IX, public IY
{
virtual HRESULT _stdcall QueryInterface( const IID& iid ,void ** pvv );
virtual ULONG _stdcall AddRef();
virtual ULONG _stdcall Release();

virtual void _stdcall Fx();
virtual void _stdcall Fy();
};

HRESULT _stdcall ClassA :: QueryInterface( const IID& iid, void ** pvv)
{

if( iid == IID_IUnknown ) {
trace( "Iunknow ");
*pvv = static_cast< IX * > (this);
}
else if( iid == IID_X ) {
trace( "cxxxxxx" );
*pvv = static_cast< IX * > (this);
}
else if( iid == IID_Y ) {
trace( "yyyyyy");
*pvv = static_cast< IY * > (this);
}
else {
trace( "not have ");
*pvv = NULL;
return E_NOINTERFACE;
}

reinterpret_cast< IUnknown * > (*pvv)->AddRef();
return S_OK;

}

static const IID IID_X = {0x32bb8320, 0xb41b, 0x11cf,{0xa6,0xbb,0x0,0x80,0xc7,0xb2,0xd6,0x82}};
static const IID IID_Y = {0x32bb8321, 0xb41b, 0x11cf,{0xa6,0xbb,0x0,0x80,0xc7,0xb2,0xd6,0x82}};

int main()
{
HRESULT hr;
trace( " get an iunknow poiner ,.");
IUnknown* pIUnknown = CreateInstance();

IX* pIX = NULL;
hr = pIUnknown->QueryInterface( IID_X, ( void ** )&pIX );
if( SUCCEEDED(hr)) {
trace( " succeed Ix ");
pIX->Fx();
}

IY* pIY = NULL;
hr = pIUnknown->QueryInterface( IID_Y, ( void ** )&pIY );
if( SUCCEEDED(hr)) {
trace( " succeed Iy ");
pIY->Fy();
}

delete pIUnknown;
return 0;
}
...全文
评论 2
收藏 已收藏
分享
返回顶部
fsy351
其它技术问题 3,881 成员 9,044 内容