CComTearOffObject sınıfı
Bu sınıf etiketleri arabirimini uygular.
template<
class Base
>
class CComTearOffObject :
public Base
Parametreler
- Base
Kullanacağınız etiketleri sınıf türetilmiş CComTearOffObjectBase ve arabirimleri desteklemesi için etiketleri nesneniz istediğiniz.
atl iki aşamada etiketleri arabirimleri uygulayan — CComTearOffObjectBase yöntemlerini işlemek başvuru sayısı ve QueryInterface, sırada CComTearOffObject uygulayan IUnknown.
Üyeler
Ortak Oluşturucusu
Ad |
Description |
---|---|
Oluşturucu. |
|
Yıkıcı. |
Public yöntemler
Ad |
Description |
---|---|
Başvuru sayısı artar bir CComTearOffObject nesnesi. |
|
Bir işaretçi istenen arabirim etiketleri sınıfınız veya sahip sınıf döndürür. |
|
Azaltır başvuru saymak için bir CComTearOffObject object ve onu yok eder. |
CComTearOffObjectBase yöntemi
Oluşturucu. |
CComTearOffObjectBase veri üyeleri
Bir işaretçi bir CComObject sahibi sınıfından türetilir. |
Notlar
CComTearOffObjectBu arabirim için sorgulandığında, örneği ayrı bir nesne olarak etiketleri arabirimini uygular.Kendi başvuru sayısı sıfır olduğunda, etiketleri silinir.Genellikle, etiketleri için bir arabirim işaretçisini vtable ana nesnenizin tüm örneklerde kaydeder bir etiketleri kullanarak bu yana, çok seyrek kullanılır bir arabirim oluşturmak.
Etiketleri arasında gerçekleştiren sınıf türetmek CComTearOffObjectBase ve hangi arabirimlerin desteklemek için etiketleri nesneniz istediğiniz.CComTearOffObjectBasesahip sınıf ve iş parçacığı modeli üzerinde templatized.Sahip sınıf kendisi için bir etiketleri uygulanmakta object sınıfıdır.Bir iş parçacığı modeli belirtmezseniz, varsayılan iş parçacığı modeli kullanılır.
Etiketleri sınıfınız için com haritası oluşturmanız gerekir.Etiketleri atl başlattığı sırada oluşturmak CComTearOffObject <CYourTearOffClass> veya CComCachedTearOffObject <CYourTearOffClass>.
Örneğin, örnekteki İKAZ, CBeeper2 sýnýftýr etiketleri sınıf ve CBeeper sahip sınıf bir sınıftır:
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:
};
Devralma hiyerarşisi
Base
CComTearOffObject
Gereksinimler
Başlık: atlcom.h
Ayrıca bkz.
Başvuru
CComCachedTearOffObject sınıfı