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 nem összesített objektumot implementál IUnknown .
Szemantika
template<class Base>
class CComObject : public Base
Paraméterek
Base
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 |
|---|---|
| CComObject::CComObject | A konstruktor. |
| CComObject::~CComObject | A destruktor. |
Nyilvános módszerek
| Név | Description |
|---|---|
| CComObject::AddRef | Növeli az objektum referenciaszámát. |
| CComObject::CreateInstance | (Statikus) Új objektumot CComObject hoz létre. |
| CComObject::QueryInterface | A kért felületre mutató mutatót kér le. |
| CComObject::Release | Az objektum hivatkozásainak száma csökken. |
Megjegyzések
CComObject
IUnknown-et implementál egy nem összesített objektumhoz. A hívásokat azonban a rendszer a következőre QueryInterfaceAddRefRelease delegáljaCComObjectRootEx: .
A használatról CComObjecttovábbi információt az ATL COM-objektumok alapjai című cikkben talál.
Öröklési hierarchia
Base
CComObject
Requirements
Fejléc: atlcom.h
CComObject::AddRef
Növeli az objektum referenciaszámát.
STDMETHOD_(ULONG, AddRef)();
Visszaadott érték
Ez a függvény az objektum új növekményes hivatkozásszámát adja vissza. Ez az érték diagnosztikához vagy teszteléshez lehet hasznos.
CComObject::CComObject
A konstruktor növeli a modul zárolási számát.
CComObject(void* = NULL);
Paraméterek
Void*
[in] A rendszer nem használja ezt a névtelen paramétert. Létezik szimmetria más CComXXXObjectXXX konstruktorokkal.
Megjegyzések
A destruktor megtizedeli.
Ha az operátorral new sikeresen létrejön egy CComObject-származtatott objektum, a kezdeti hivatkozási szám 0. Ha a hivatkozásszámot a megfelelő értékre (1) szeretné állítani, hívja fel az AddRef függvényt.
CComObject::~CComObject
A destruktor.
CComObject();
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.
CComObject::CreateInstance
Ez a statikus függvény lehetővé teszi egy új CComObject<Base> objektum létrehozását a CoCreateInstance többletterhelése nélkül.
static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);
Paraméterek
Pp
[kifelé] Egy CComObject-mutatóra<Base> mutató mutató. 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 .
Example
class ATL_NO_VTABLE CMyCircle :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyCircle, &CLSID_MyCircle>,
public IDispatchImpl<IMyCircle, &IID_IMyCircle, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
CMyCircle()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_MYCIRCLE)
DECLARE_NOT_AGGREGATABLE(CMyCircle)
BEGIN_COM_MAP(CMyCircle)
COM_INTERFACE_ENTRY(IMyCircle)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
public:
STDMETHOD(get_XCenter)(double* pVal);
};
// Create a local instance of COM object CMyCircle.
double x;
CComObject<CMyCircle>* pCircle;
HRESULT hRes = CComObject<CMyCircle>::CreateInstance(&pCircle);
ATLASSERT(SUCCEEDED(hRes));
// Increment reference count immediately
pCircle->AddRef();
// Access method of COM object
hRes = pCircle->get_XCenter(&x);
// Decrement reference count when done
pCircle->Release();
pCircle = NULL;
CComObject::QueryInterface
A kért felületre mutató mutatót kér le.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Paraméterek
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é] Az illesztőmutatóra mutató mutató, amely típus Qszerint van azonosítva. Ha az objektum nem támogatja ezt az interfészt, a pp értéke NULL.
Visszaadott érték
Standard HRESULT érték.
CComObject::Release
Az objektum hivatkozásainak száma csökken.
STDMETHOD_(ULONG, Release)();
Visszaadott érték
Ez a függvény az objektum új dekrementált hivatkozási számát adja vissza. Hibakeresési buildekben a visszatérési érték 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
CComAggObject osztály
CComPolyObject osztály
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
osztály áttekintése