-1

我正在 ATL 中创建 Oracle 数据访问 com 库。存在一个名为 IConnection 的 COM 接口,它执行数据库连接。我想向 IConnection 添加名为 CreateCommand 的方法来创建 IOciCommand 类型的对象。IOciCommand 已经是同一个库中的一个接口。我需要 IDL 代码和 CreateCommand 的实现

4

1 回答 1

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;
}

这就是实现的基本外观,但显然过于简化了。

于 2013-01-16T12:37:18.683 回答