这两种:
指定了上述内容,并使用:
返回上面CLSID指定的类的未初始化对象。
如何从C ++访问Interface的方法? 无:
之后,我使用CreateInstance()
我遇到了麻烦,使用CreateInstance() - 最后一个参数 - ppv
使用oleview,我可以看到上面指定的IID over IID的方法,例如:
interface IS8Simulation : IDispatch {
HRESULT Open([in] BSTR FileName);
};
如何才能访问上述内容?示例/指导 - 请
此致
答案 0 :(得分:5)
通过执行CoCreateInstance,您将获得一个接口指针。通过QueryInterface(...)方法,您可以轻松获取其他界面的界面指针。 例如。,
IUnknown* pUnk = NULL; HRESULT hr = ::CoCreateInstance(clsid,NULL,CLSCTX_ALL,__uuidof(IUnknown),(void**)&pUnk);
IS8Simulation* pSim = NULL; hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void**)&pSim);
执行此操作后,您将在pSim中获得指向IS8Simulation的指针,通过该指针可以调用该接口的方法。请记住,您需要在CoCreateInstance调用中提供有效的clsid。
答案 1 :(得分:0)
实际问题是什么有点模糊。一些代码会有所帮助。但是要猜测,你需要QueryInterface吗?
答案 2 :(得分:0)
IS8Simulation* pSim = NULL;
hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void)&pSim);
我会尝试上述内容,但是IS8模仿声明了 - 请原谅我缺乏 COM 理解
此外,如何使用 plain C ++ :
调用下面的方法HRESULT Open([in] BSTR FileName)
答案 3 :(得分:0)
你可能想要#import“something.dll”。这将为您提供类似IS8Simulation类型的C ++声明,类似于#include“something.h”所做的。