다음을 통해 공유


CComTearOffObject 클래스

이 클래스는 분리 된 인터페이스를 구현합니다.

template<
   class Base 
>
class CComTearOffObject :
   public Base

매개 변수

  • Base
    분리 된 클래스를 파생 하는에서 CComTearOffObjectBase 인터페이스를 지원 하 여 분리 개체 원하는.

ATL 두 단계로 분리 된 인터페이스를 구현 등의 CComTearOffObjectBase 메서드 핸들 참조 카운트 및 QueryInterface, 동안 CComTearOffObject 구현 IUnknown.

Members

wh8b86c9.collapse_all(ko-kr,VS.110).gifPublic 생성자

Name

설명

CComTearOffObject::CComTearOffObject

생성자입니다.

CComTearOffObject:: ~ CComTearOffObject

소멸자

wh8b86c9.collapse_all(ko-kr,VS.110).gifPublic 메서드

Name

설명

CComTearOffObject::AddRef

참조 횟수를 증가 CComTearOffObject 개체입니다.

CComTearOffObject::QueryInterface

분리 된 클래스 또는 소유자 클래스에서 요청한 인터페이스에 포인터를 반환합니다.

CComTearOffObject::Release

참조 횟수를 감소는 CComTearOffObject 및 개체를 삭제 합니다.

wh8b86c9.collapse_all(ko-kr,VS.110).gifCComTearOffObjectBase 메서드

CComTearOffObjectBase

생성자입니다.

wh8b86c9.collapse_all(ko-kr,VS.110).gifCComTearOffObjectBase 데이터 멤버

m_pOwner

에 대 한 포인터는 CComObject 소유자 클래스에서 파생 됩니다.

설명

CComTearOffObject만 해당 인터페이스를 쿼리할 때 인스턴스화되지는 별도 개체로 분리 한 인터페이스를 구현 합니다.참조 횟수가 0이 되는 경우는 절취 삭제 됩니다.일반적으로 인터페이스 사용은 절취 vtable 포인터에서 기본 개체의 모든 인스턴스 저장 하기 때문에 거의 사용 하지 않습니다에 대 한 분리 된 인터페이스를 빌드합니다.

분리형에서 구현 하는 클래스를 파생 시키는 CComTearOffObjectBase 에서 지원 하 여 분리 된 개체의 어떤 인터페이스 원하는.CComTearOffObjectBase(를) 소유자 클래스와 스레드 모델을 처리할 수 있습니다.소유자 클래스에는 절취 구현 되는 경우 개체의 클래스가입니다.스레드 모델을 지정 하지 않으면 기본 스레드 모델이 사용 됩니다.

분리 된 클래스의 COM 맵을 만들어야 합니다.ATL의 분리를 인스턴스화하면 만들기 CComTearOffObject <CYourTearOffClass> 또는 CComCachedTearOffObject <CYourTearOffClass>.

BEEPER 샘플의 예는 CBeeper2 클래스는 분리 된 클래스 및 CBeeper 클래스는 소유자 클래스:

class CBeeper2 :
   public ISupportErrorInfo,
   public CComTearOffObjectBase<CBeeper>
{
public:
   CBeeper2() {}
   STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
   {
      return (InlineIsEqualGUID(IID_IBeeper, riid)) ? S_OK : S_FALSE;
   }

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

class ATL_NO_VTABLE CBeeper :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CBeeper, &CLSID_Beeper>,
   public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
   CBeeper()
   {
   }

DECLARE_REGISTRY_RESOURCEID(IDR_BEEPER)

DECLARE_NOT_AGGREGATABLE(CBeeper)

BEGIN_COM_MAP(CBeeper)
   COM_INTERFACE_ENTRY(IBeeper)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()

// ISupportsErrorInfo
   STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);


   DECLARE_PROTECT_FINAL_CONSTRUCT()

   HRESULT FinalConstruct()
   {
      return S_OK;
   }

   void FinalRelease()
   {
   }

public:

};

상속 계층 구조

Base

CComTearOffObject

요구 사항

헤더: atlcom.h

참고 항목

참조

CComCachedTearOffObject 클래스

기타 리소스

ATL 클래스 개요