一个基本的Object创建的ActiveX控件,如何得到GetClientSite( &pClientSite );
因为GetClientSite( &pClientSite );是IOleObject::GetClientSite
必须继承IOleObject,能不能够不继承IOleObject获得同样的内容呢,请赐教!
因为GetClientSite( &pClientSite );是IOleObject::GetClientSite
必须继承IOleObject,能不能够不继承IOleObject获得同样的内容呢,请赐教!
// COSRCtrlIntf
class ATL_NO_VTABLE COSRCtrlIntf :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<COSRCtrlIntf, &CLSID_OSRCtrlIntf>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<COSRCtrlIntf>,
public IDispatchImpl<IOSRCtrlIntf, &IID_IOSRCtrlIntf, &LIBID_OSRACTIVEXLib>,
public IOleObject
{
但是继承的话出现2个错误,说是c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class COSRCtrlIntf>' 抽象的实现错误
class CComCreator
{
public:
static HRESULT WINAPI CreateInstance(void* pv, REFIID riid, LPVOID* ppv)
{
ATLASSERT(*ppv == NULL);
HRESULT hRes = E_OUTOFMEMORY;
T1* p = NULL;
ATLTRY(p = new T1(pv))/////////这里出错
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class COSRCtrlIntf>' : cannot instantiate abstract class due to following members:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class COSRCtrlIntf> >::CreateInstance(void *,const struct _GUID &,void
** )'