我正在ATL中创建Oracle数据访问com库。存在一个名为IConnection的COM接口,它执行数据库连接。我想在IConnection中添加一个名为CreateCommand的方法来创建IOciCommand类型的对象。 IOciCommand已经是同一个库中的一个接口。我需要IDL代码和CreateCommand
的实现答案 0 :(得分:0)
我无法向您提供CreateCommand的确切实现,因为我不知道您的库的内部,但基本步骤是:
(1)将方法添加到IDL接口:
interface IConnection : IUnknown
{
HRESULT CreateCommand([out] IOciCommand** ppCommand);
}
(2)编译IDL文件。
(3)将方法实现添加到实现接口的C ++类中:
virtual HRESULT STDMETHODCALLTYPE CreateCommand(IOciCommand** ppCommand)
{
if (ppCommand == NULL)
return E_POINTER;
CComObject<COciCommand>* pCommand;
HRESULT hr = CComObject<COciCommand>::CreateInstance(&pCommand);
if (FAILED(hr))
return hr;
*ppCommand = pCommand;
(*ppCommand)->AddRef();
return S_OK;
}
这就是基本实现的方式,但显然过于简化了。