templatelt; sınıf Base >
sınıf CComTearOffObject : Genel Base
Parametreleri
Base
CComTearOffObjectBase ve destek yırtma nesneniz istediğiniz arabirimler'den, yırtma sınıfı.
Atl, iki aşamada yırtma arabirimleri uygulayan — CComTearOffObject uygulayan ise başvuru sayısı ve QueryInterface, CComTearOffObjectBase yöntemleri ele IUnknown.
CComTearOffObject , yalnızca o arabirim için sorgulandığında, örneği ayrı bir nesne olarak bir yırtma arabirimini uygular. Onun başvuru sayısı sıfır olduğunda, yırtma silinir. Genellikle, çünkü bir yırtma kullanarak vtable işaretçi ana nesne tüm örneklerde kaydeder, nadiren kullanılır bir arabirim için bir yırtma arabirimi oluşturmak.
Yırtma CComTearOffObjectBase ve destek yırtma nesneniz istediğiniz hangisi arabirimleri uygulayan sınıf türetmek. CComTearOffObjectBase sahip sınıf ve iş parçacığı modeli üzerinde templatized. Sahip sınıf için bir yırtma uygulanmaktadır nesne sınıfıdır. Bir iş parçacığı modeli belirtmezseniz, varsayılan iş parçacığı modeli kullanılır.
Yırtma sınıf için bir com harita oluşturmanız gerekir. Yırtma atl başlattığı zaman, o-ecek yaratmak CComTearOffObjectlt;CYourTearOffClass > ya da CComCachedTearOffObject <CYourTearOffClass>.
Örneğin, örnekteki sesli ikaz, CBeeper2 sınıftır yırtma sınıfı ve CBeeper sahip sınıf bir sınıftır:
cBeeper2 sınıfı: ortak ISupportErrorInfo
nbsp; Genel 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 CBeeper:
Genel IDispatchImpl < IBeeper & IID_IBeeper & LIBID_BeeperLib >
kamu CComObjectRoot,
Genel CComCoClass < CBeeper & CLSID_Beeper >
{
public:
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>
Ayrıca bkz: CComCachedTearOffObject