templatelt, klasa Base >
Klasa CComTearOffObject : publiczne Base
Parametry
Base
Klasa odrywania, pochodząca z CComTearOffObjectBase i interfejsów z odrywanymi obiekt do obsługi.
ATL implementuje interfejsy Odrywane w dwóch fazach — metody CComTearOffObjectBase uchwyt licznika odwołań i metody QueryInterface, podczas gdy implementuje CComTearOffObject IUnknown.
CComTearOffObject implementuje interfejs Odrywane jako oddzielne obiekty, który jest tylko wtedy, gdy ten interfejs jest badany pod kątem. Odrywane jest usuwane po jego licznika odwołań staje się zera. Zazwyczaj zbudować interfejs Odrywane dla interfejsu, który jest rzadko używana, ponieważ korzystanie z odrywanymi zapisuje wskaźnik Tablica metod wirtualnych w wszystkie wystąpienia obiektu głównego.
Powinien czerpać klasa implementująca zdzierane z CComTearOffObjectBase i niezależnie od interfejsów ma obiekt Odrywane numery do obsługi. CComTearOffObjectBase jest templatized na klasę właściciela i model wątków. Właściciel klasa jest klasą obiektu, dla którego Odrywane jest realizowany. Jeśli nie określisz model wątków, używany jest domyślny model wątków.
Należy utworzyć mapę COM klasy Odrywane. Gdy ATL tworzy Odrywane, stworzy CComTearOffObjectlt;CYourTearOffClass > lub CComCachedTearOffObject <CYourTearOffClass>.
Na przykład w próbce BEEPER CBeeper2 Klasa jest klasą Odrywane i CBeeper Klasa jest klasą właściciela:
klasa CBeeper2: ISupportErrorInfo publicznych,
nbsp; publiczne CComTearOffObjectBase <CBeeper>
{
publiczne:
{CBeeper2()}
STDMETHOD(InterfaceSupportsErrorInfo) (REFIID riid)
{
zwrot (InlineIsEqualGUID(IID_IBeeper,riid))?
WARTOŚĆ S_OK: S_FALSE;
}
BEGIN_COM_MAP(CBeeper2)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
};
Klasa CBeeper:
IDispatchImpl publiczne < IBeeper & IID_IBeeper i LIBID_BeeperLib >,
CComObjectRoot publiczne,
CComCoClass publiczne < CBeeper & CLSID_Beeper >
{
publiczne:
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>
Zobacz też CComCachedTearOffObject