-1
我正在ATL中創建Oracle數據訪問com庫。有一個名爲IConnection的COM接口執行數據庫連接。我想將方法添加到名爲CreateCommand的IConnection中以創建IOciCommand類型的對象。 IOciCommand已經是同一個庫中的一個接口。我需要IDL代碼和CreateCommand定義創建另一個接口指針的ATL接口方法?
實施我正在ATL中創建Oracle數據訪問com庫。有一個名爲IConnection的COM接口執行數據庫連接。我想將方法添加到名爲CreateCommand的IConnection中以創建IOciCommand類型的對象。 IOciCommand已經是同一個庫中的一個接口。我需要IDL代碼和CreateCommand定義創建另一個接口指針的ATL接口方法?
實施我不能給你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;
}
這是實現將如何看待基本的,但它顯然過於簡單化。