CComTearOffObject

templatelt; 클래스 자료 >
클래스 CComTearOffObject : 공개 자료

매개 변수

자료

떼어가기 클래스의 CComTearOffObjectBase 및 지원 떼어가기 개체 인터페이스에서 파생。

두 단계로 떼어가기 인터페이스를 구현 하는 ATL ? CComTearOffObject 을 구현 하는 동안 CComTearOffObjectBase 메서드 참조 횟수와 QueryInterface, 처리 IUnknown。

CComTearOffObject 인터페이스에 대 한 쿼리 하는 경우에 인스턴스화되는 별도 개체로 떼어가기 인터페이스를 구현 합니다. 눈물-오프의 참조 횟수가 0이 됩니다 때 삭제 됩니다. 거의 사용, 이후 기본 개체의 모든 인스턴스에 vtable 포인터를 저장 눈물 오프를 사용 하 여 인터페이스에 대 한 떼어가기 인터페이스를 구축 하는 일반적으로。

해당 떼어가기 CComTearOffObjectBase 와 어느 인터페이스 원하는 지원 떼어가기 개체에서 구현 하는 클래스를 파생 해야 합니다. CComTearOffObjectBase 는 소유자 클래스와 스레드 모델에 templatized 이다. 소유자 클래스는 눈물 오프 되 고 구현 하는 개체의 클래스가입니다. 스레드 모델을 지정 하지 않으면 기본 스레드 모델을 사용 하 고 있다。

떼어가기 클래스에 대 한 COM 맵을 만들어야 합니다. 때 ATL 눈물을 인스턴스화하고, CComTearOffObjectlt; 만듭니다.CYourTearOffClass > 또는 CComCachedTearOffObject <CYourTearOffClass>。

BEEPER 샘플에서 예를 들어에서 CBeeper2 클래스는 떼어가기 클래스와 CBeeper 클래스는 소유자 클래스:

cBeeper2 클래스: 공용 ISupportErrorInfo
 nbsp;?????????????? 공용 CComTearOffObjectBase <CBeeper>
{
공개:
 ? CBeeper2() {}
 ? STDMETHOD(InterfaceSupportsErrorInfo) (REFIID riid)
 ? {
 ???? 리턴 (InlineIsEqualGUID(IID_IBeeper,riid))? 
 ???????????? S_OK: S_FALSE를 반환;
 ? }

BEGIN_COM_MAP(CBeeper2)
 ???? COM_INTERFACE_ENTRY(ISupportErrorInfo)
 ? END_COM_MAP()
};

클래스 CBeeper:
 ? 공공 IDispatchImpl < IBeeper, 및 IID_IBeeper, 및 LIBID_BeeperLib >
 ? 공공 CComObjectRoot
 ? 공공 CComCoClass < CBeeper, 및 CLSID_Beeper >
{
공개:
 ? CBeeper();
 ? BEGIN_COM_MAP(CBeeper)
 ???? COM_INTERFACE_ENTRY(IDispatch)
 ???? COM_INTERFACE_ENTRY(IBeeper)
 ???? COM_INTERFACE_ENTRY_TEAR_OFF (IID_ISupportErrorInfo, CBeeper2)
 ? END_COM_MAP()
...
}

# include lt;atlcom.h>

클래스 멤버

참고 항목nbsp;CComCachedTearOffObject(&N)

Index