Периодическая проверка всех доступных потоков может помочь понять, когда кто-то вошел в комнату, но не в потоковую.
Отредактируйте код, который генерируют мастера. Если Вы хотите объект произойти из дополнительных интерфейсов, добавьте эти базовые классы к получающемуся объявлению класса.
Просто предложение - если Ваш COM-объект не должен делать ничего специального с COM связанный материал затем, можно реализовать код, таким образом, что реальная логика, которую делает основной COM-класс, инкапсулируется в другом простом классе C++, говорит CBaseLogic.
CBaseLogic : IBase
class ATL_NO_VTABLE CBase :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CBase, &CLSID_Base>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CBase>,
public CProxy_IBaseEvents<CBase>,
public IDispatchImpl<IBase, &IID_IBase, &LIBID_ExampleLib
{
CBaseLogic m_LogicObj; /* Method calls are simply forwarded to this member */
};
CDerivedLogic : public CBaseLogic
class ATL_NO_VTABLE CDerived :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CDerived, &CLSID_Base>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CDerived>,
public CProxy_IBaseEvents<CDerived>,
public IDispatchImpl<IBase, &IID_IBase, &LIBID_ExampleLib
{
CDerivedLogic m_LogicObj;
};
Это достигает того, из чего Вы пытаетесь сделать с добавленным преимуществом