大家帮忙看看,这语法那里错误了
这哪里错了,怎么改?
struct 指针
#include "stdafx.h"
#include <Windows.h>
#include <ObjBase.h>
#include <InitGuid.h>
#define DWORD unsigned int
// {EF90AE99-356C-41D4-9F53-89F6D68B80E2}
DEFINE_GUID(CLSID_IExample,
0xef90ae99, 0x356c, 0x41d4, 0x9f, 0x53, 0x89, 0xf6, 0xd6, 0x8b, 0x80, 0xe2);
// {6D6A1642-A539-42DB-B6FB-17C0ABB258A0}
DEFINE_GUID(IID_IExample,
0x6d6a1642, 0xa539, 0x42db, 0xb6, 0xfb, 0x17, 0xc0, 0xab, 0xb2, 0x58, 0xa0);
typedef HRESULT STDMETHODCALLTYPE QueryInterfacePtr(IExample*,REFIID,void**);
typedef ULONG STDMETHODCALLTYPE AddRefPtr(IExample*);
typedef ULONG STDMETHODCALLTYPE ReleasePtr(IExample*);
typedef HRESULT STDMETHODCALLTYPE SetStringPtr(IExample*,char *);
typedef HRESULT STDMETHODCALLTYPE GetStringPtr(IExample*,char* ,long);
typedef struct{
QueryInterfacePtr* QueryInterface;
AddRefPtr* AddRef;
ReleasePtr* Release;
SetStringPtr* SetString;
GetStringPtr* GetString;
}IExampleVtbl;
typedef struct {
IExampleVtbl* lpVtbl;
DWORD count;
char buffer[80];
}IExample;
HRESULT STDMETHODCALLTYPE SetString1(IExample*this,char *str)
{
return 0;
}
HRESULT STDMETHODCALLTYPE GetString1(IExample* this,char* buffer,long length)
{
return 0;
}
HRESULT STDMETHODCALLTYPE QueryInterface(IExample *this,REFIID vTableGuid,void **ppv)
{
//检查Guid是否与IExample的续表的Guid相匹配
//记得我们给出的一个C变量的IID_IExample 对应与我们的虚表GUID.
//我们可以用一个OLE的IsEqualIID的函数来比较。
if (!IsEqualIID(vTableGuid,&IID_IExample))
{
//我们不认可传给我们的Guid,通过清除调用这的句柄来让它知道,返回E_NOINTERFACE
*ppv = 0;
return E_NOINTERFACE;
}
//它是匹配的!
//首先我们用同一个它传给我们的对象指针填充它的句柄。
//这是我们创建/初始化的我们的IExample,它将从我们这里获得对象指针
*ppv = this;
//现在调用我们的AddRef函数,把this指针传给IExample
this->lpVtbl->AddRef(this);
//让他知道他确实拥有了一个IExample
return NOERROR;
}
ULONG STDMETHODCALLTYPE AddRef(IExample *this)
{
//增加引用计数(count成员)
++this->count;
//我们应该返回这个更新后的count;
return this->count;
}
int _tmain(int argc, _TCHAR* argv[])
{
//static IExampleVtbl IExample_Vtbl = {SetString1,GetString1};
IExample* example;
example = (IExample*)GlobalAlloc(GMEM_FIXED,sizeof(IExample));
//example->lpVtbl = &IExample_Vtbl;
return 0;
}
[解决办法]
我们也想问 哪里错了 什么个错误
[解决办法]
报什么错?贴出来看看吧