2013-01-16 56 views
-1

我正在ATL中創建Oracle數據訪問com庫。有一個名爲IConnection的COM接口執行數據庫連接。我想將方法​​添加到名爲CreateCommand的IConnection中以創建IOciCommand類型的對象。 IOciCommand已經是同一個庫中的一個接口。我需要IDL代碼和CreateCommand定義創建另一個接口指針的ATL接口方法?

實施

回答

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

這是實現將如何看待基本的,但它顯然過於簡單化。

相關問題