Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Az aktív sablontár (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Ez az osztály egy összesített vagy nem összesített objektumhoz implementál IUnknown .
Szemantika
template<class contained>
class CComPolyObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
Paraméterek
tartalmazott
Az osztály a CComObjectRoot vagy a CComObjectRootEx, valamint az objektumon támogatni kívánt egyéb felületekből származik.
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
| CComPolyObject::CComPolyObject | A konstruktor. |
| CComPolyObject::~CComPolyObject | A destruktor. |
Nyilvános módszerek
| Név | Description |
|---|---|
| CComPolyObject::AddRef | Növeli az objektum referenciaszámát. |
| CComPolyObject::CreateInstance | (Statikus) Lehetővé teszi egy új CComPolyObject<contained> objektum létrehozását a CoCreateInstance többletterhelése nélkül. |
| CComPolyObject::FinalConstruct | A végleges inicializálását hajtja m_containedvégre. |
| CComPolyObject::FinalRelease | Végrehajtja a végleges megsemmisítést.m_contained |
| CComPolyObject::QueryInterface | A kért felületre mutató mutatót kér le. |
| CComPolyObject::Release | Az objektum hivatkozásainak száma csökken. |
Nyilvános adatok tagjai
| Név | Description |
|---|---|
| CComPolyObject::m_contained | A meghatalmazottak meghívják IUnknown a külső ismeretlent, ha az objektum összesítve van, vagy IUnknown ha az objektum nincs összesítve. |
Megjegyzések
CComPolyObject A egy összesített vagy nem összesített objektumhoz implementálja az IUnknown objektumot.
Egy példány CComPolyObject létrehozásakor a rendszer ellenőrzi a külső ismeretlen értékét. Ha null értékű, IUnknown akkor egy nem összesített objektumhoz van implementálva. Ha a külső ismeretlen nem NULL értékű, IUnknown akkor egy összesített objektumhoz lesz implementálva.
A használat CComPolyObject előnye, hogy elkerülheti, hogy a CComAggObject és a CComObject is a modulban legyen az összesített és a nem összesített esetek kezeléséhez. Egyetlen CComPolyObject objektum mindkét esetet kezeli. Ez azt jelenti, hogy a virtuális tábla csak egy példánya és a függvények egy példánya létezik a modulban. Ha a virtuális tábla nagy, ez jelentősen csökkentheti a modul méretét. Ha azonban a virtuális tábla kicsi, a használat CComPolyObject valamivel nagyobb modulméretet eredményezhet, mivel nem összesített vagy nem összesített objektumhoz van optimalizálva, ahogyan az is és CComAggObjectCComObject.
Ha a DECLARE_POLY_AGGREGATABLE makró az objektum osztálydefiníciójában van megadva, CComPolyObject a rendszer az objektum létrehozásához fogja használni. DECLARE_POLY_AGGREGATABLE automatikusan deklarálva lesz, ha az ATL Projektvarázslóval hoz létre teljes vezérlőt vagy Internet Explorer-vezérlőt.
Ha összesítve van, az CComPolyObject objektum saját IUnknown, a külső objektumtól IUnknownfüggetlen, és megtartja a saját hivatkozási számát.
CComPolyObject
A CComContainedObject használatával delegálható a külső ismeretlenbe.
Az összesítéssel kapcsolatos további információkért tekintse meg az ATL COM-objektumok alapjai című cikket.
Öröklési hierarchia
CComObjectRootBase
IUnknown
CComPolyObject
Requirements
Fejléc: atlcom.h
CComPolyObject::AddRef
Növeli az objektum referenciaszámát.
STDMETHOD_(ULONG, AddRef)();
Visszaadott érték
A diagnosztikához vagy teszteléshez hasznos érték.
CComPolyObject::CComPolyObject
A konstruktor.
CComPolyObject(void* pv);
Paraméterek
Pv
[in] A külső ismeretlenre mutató mutató, ha az objektumot összesíteni kell, vagy NULL értékű, ha az objektum nincs összesítve.
Megjegyzések
Inicializálja az CComContainedObjectadattagot, m_contained, és növeli a modul zárolási számát.
A destruktor mérsékeli a modul zárolási számát.
CComPolyObject::~CComPolyObject
A destruktor.
~CComPolyObject();
Megjegyzések
Felszabadítja az összes lefoglalt erőforrást, meghívja a FinalRelease-t, és lecsökkenti a modul zárolási számát.
CComPolyObject::CreateInstance
Lehetővé teszi egy új CComPolyObject<contained> objektum létrehozását a CoCreateInstance többletterhelése nélkül.
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComPolyObject<contained>** pp);
Paraméterek
Pp
[kifelé] Mutató egy CComPolyObject<contained> mutatóhoz. Sikertelenség esetén CreateInstance a pp értéke NULL.
Visszaadott érték
Standard HRESULT érték.
Megjegyzések
A visszaadott objektum hivatkozási száma nulla, ezért azonnal hívja meg AddRef , majd használja Release a hivatkozás felszabadítására az objektummutatón, amikor elkészült.
Ha nincs szüksége közvetlen hozzáférésre az objektumhoz, de mégis szeretne létrehozni egy új objektumot a többletterhelés CoCreateInstancenélkül, használja helyette a CComCoClass::CreateInstance parancsot .
CComPolyObject::FinalConstruct
Ez a metódus az objektumépítés utolsó szakaszában meghívva végrehajtja a végleges inicializálást az m_contained adattagon.
HRESULT FinalConstruct();
Visszaadott érték
Standard HRESULT érték.
CComPolyObject::FinalRelease
Az objektummegsemmisítés során meghívva ez a metódus felszabadítja a m_contained adattagot.
void FinalRelease();
CComPolyObject::m_contained
Az osztályból származtatott CComContainedObject objektum.
CComContainedObject<contained> m_contained;
Paraméterek
tartalmazott
[in] Az osztály a CComObjectRoot vagy a CComObjectRootEx, valamint az objektumon támogatni kívánt egyéb felületekből származik.
Megjegyzések
IUnknown
m_contained a hívások a külső ismeretlenre vannak delegálva, ha az objektum összesítve van, vagy IUnknown ha az objektum nincs összesítve.
CComPolyObject::QueryInterface
A kért felületre mutató mutatót kér le.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT QueryInterface(Q** pp);
Paraméterek
Q
A COM-felület.
iid
[in] A kért felület azonosítója.
ppvObject
[kifelé] Az iid által azonosított felületmutatóra mutató mutató. Ha az objektum nem támogatja ezt az interfészt, a ppvObject értéke NULL.
Pp
[kifelé] Mutató a felületre, amelyet __uuidof(Q)a következő azonosított: .
Visszaadott érték
Standard HRESULT érték.
Megjegyzések
Összesített objektum esetén, ha a kért felület az IUnknown, QueryInterface az összesített objektum sajátjára IUnknown mutató mutatót ad vissza, és növeli a referenciaszámot. Ellenkező esetben ez a metódus lekérdezi az interfészt az CComContainedObject adattagon keresztül, m_contained.
CComPolyObject::Release
Az objektum hivatkozásainak száma csökken.
STDMETHOD_(ULONG, Release)();
Visszaadott érték
A hibakeresési buildekben olyan értéket ad vissza, Release amely hasznos lehet a diagnosztika vagy a tesztelés során. A nem hibakeresési buildekben Release mindig 0 értéket ad vissza.
Lásd még
CComObjectRootEx osztály
DECLARE_POLY_AGGREGATABLE
osztály áttekintése