Re: initializing a COM object with data not through an interface.
"kombat" <ohadpr@gmail.com> wrote in message
news:1167664509.576786.211140@a3g2000cwd.googlegroups.com
i have an ATL executable housing two objects, lets call them A and B.
one of A's methods creates a new instance of B and returns it, as in
returns a new COM object B.
i need A to initialize B with a few c++ classes.
The usual idiom goes like this:
STDMETHODIMP A::getB(IB** ppIB) {
CComObject<B>* pB;
CComObject<B>::CreateInstance(&pB);
pB->AddRef();
// At this point, you have a pointer to B (a class derived from B,
// to be exact) and can call regular C++ methods on it,
// not just those exposed via COM
pB->Init(/* any C++ parameters */);
HRESULT hr = pB->QueryInterface(IID_IB, (void**)ppIB);
pB->Release();
return hr;
}
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925