CComPtrBase
Třída
Tato třída poskytuje základ pro třídy inteligentních ukazatelů pomocí rutin paměti založených na modelu COM.
Syntaxe
template <class T>
class CComPtrBase
Parametry
T
Typ objektu, na který má být odkazován inteligentním ukazatelem.
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CComPtrBase::~CComPtrBase |
Destruktor. |
Veřejné metody
Název | Popis |
---|---|
CComPtrBase::Advise |
Voláním této metody vytvoříte připojení mezi CComPtrBase spojovacím bodem a jímkou klienta. |
CComPtrBase::Attach |
Voláním této metody převezmete vlastnictví existujícího ukazatele. |
CComPtrBase::CoCreateInstance |
Voláním této metody vytvoříte objekt třídy asociované se zadaným ID třídy nebo ID programu. |
CComPtrBase::CopyTo |
Voláním této metody zkopírujte CComPtrBase ukazatel na jinou proměnnou ukazatele. |
CComPtrBase::Detach |
Voláním této metody uvolníte vlastnictví ukazatele. |
CComPtrBase::IsEqualObject |
Voláním této metody zkontrolujte, zda zadané IUnknown body na stejný objekt přidružený k objektu CComPtrBase . |
CComPtrBase::QueryInterface |
Voláním této metody vrátíte ukazatel na zadané rozhraní. |
CComPtrBase::Release |
Voláním této metody uvolněte rozhraní. |
CComPtrBase::SetSite |
Voláním této metody nastavíte lokalitu CComPtrBase objektu na IUnknown nadřazený objekt. |
Veřejné operátory
Název | Popis |
---|---|
CComPtrBase::operator T* |
Operátor přetypování. |
CComPtrBase::operator ! |
Operátor NOT. |
CComPtrBase::operator & |
Operátor adresy & . |
CComPtrBase::operator * |
Operátor ukazatele na * |
CComPtrBase::operator < |
Operátor menší než. |
CComPtrBase::operator == |
Operátor rovnosti. |
CComPtrBase::operator -> |
Operátor pointer-to-members. |
Veřejné datové členy
Název | Popis |
---|---|
CComPtrBase::p |
Proměnná datového členu ukazatele. |
Poznámky
Tato třída poskytuje základ pro další inteligentní ukazatele, které používají rutiny správy paměti MODELU COM, například CComQIPtr
a CComPtr
. Odvozené třídy přidávají své vlastní konstruktory a operátory, ale spoléhají na metody poskytované CComPtrBase
.
Požadavky
Hlavička: atlcomcli.h
CComPtrBase::Advise
Voláním této metody vytvoříte připojení mezi CComPtrBase
spojovacím bodem a jímkou klienta.
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
Parametry
pUnk
Ukazatel na klienta IUnknown
.
iid
Identifikátor GUID spojovacího bodu. Tento identifikátor GUID je obvykle stejný jako odchozí rozhraní spravované spojovacím bodem.
pdw
Ukazatel na soubor cookie, který jednoznačně identifikuje připojení.
Vrácená hodnota
Vrátí S_OK
úspěch nebo chybu při selhání HRESULT
.
Poznámky
Další informace najdete na webu AtlAdvise
.
CComPtrBase::Attach
Voláním této metody převezmete vlastnictví existujícího ukazatele.
void Attach(T* p2) throw();
Parametry
p2
Objekt CComPtrBase
převezme vlastnictví tohoto ukazatele.
Poznámky
Attach
zavolá CComPtrBase::Release
existující CComPtrBase::p
členské proměnné a pak se přiřadí p2
.CComPtrBase::p
CComPtrBase
Když objekt převezme vlastnictví ukazatele, automaticky zavolá Release
ukazatel, který odstraní ukazatel a všechna přidělená data, pokud počet odkazů na objekt přejde na 0.
CComPtrBase::~CComPtrBase
Destruktor.
~CComPtrBase() throw();
Poznámky
Uvolní rozhraní, na které CComPtrBase
odkazuje .
CComPtrBase::CoCreateInstance
Voláním této metody vytvoříte objekt třídy asociované se zadaným ID třídy nebo ID programu.
HRESULT CoCreateInstance(
LPCOLESTR szProgID,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
Parametry
szProgID
Ukazatel na IDENTIFIKÁTOR ProgID, který se používá k obnovení IDENTIFIKÁTORu CLSID.
pUnkOuter
Pokud má hodnotu NULL, znamená to, že se objekt nevytvořil jako součást agregace. Pokud není null, je ukazatel na rozhraní agregovaného objektu IUnknown
(ovládací prvky IUnknown
).
dwClsContext
Kontext, ve kterém se spustí kód, který spravuje nově vytvořený objekt.
rclsid
CLSID přidružené k datům a kódu, které se použijí k vytvoření objektu.
Vrácená hodnota
Vrátí S_OK
úspěch nebo REGDB_E_CLASSNOTREG
, , CLASS_E_NOAGGREGATION
CO_E_CLASSSTRING
, nebo E_NOINTERFACE
při selhání. Podívejte se na popis těchto chyb a CLSIDFromProgID
podívejte CoCreateClassInstance
se na jejich popis.
Poznámky
Pokud je volána první forma metody, CLSIDFromProgID
slouží k obnovení CLSID. Oba formuláře pak volají CoCreateClassInstance
.
V sestaveních ladění dojde k chybě kontrolního výrazu, pokud CComPtrBase::p
není rovna hodnotě NULL.
CComPtrBase::CopyTo
Voláním této metody zkopírujte CComPtrBase
ukazatel na jinou proměnnou ukazatele.
HRESULT CopyTo(T** ppT) throw();
Parametry
ppT
Adresa proměnné pro příjem CComPtrBase
ukazatele
Vrácená hodnota
Vrátí S_OK
úspěch E_POINTER
při selhání.
Poznámky
Zkopíruje CComPtrBase
ukazatel na ppT
. Počet odkazů na člennou CComPtrBase::p
proměnnou se zvýší.
Pokud se rovná hodnotě NULL, vrátí ppT
se chybaHRESULT
. V buildech ladění dojde k chybě kontrolního výrazu, pokud ppT
je rovna hodnotě NULL.
CComPtrBase::Detach
Voláním této metody uvolníte vlastnictví ukazatele.
T* Detach() throw();
Vrácená hodnota
Vrátí kopii ukazatele.
Poznámky
Uvolní vlastnictví ukazatele, nastaví proměnnou datového CComPtrBase::p
členu na hodnotu NULL a vrátí kopii ukazatele.
CComPtrBase::IsEqualObject
Voláním této metody zkontrolujte, zda zadané IUnknown
body na stejný objekt přidružený k objektu CComPtrBase
.
bool IsEqualObject(IUnknown* pOther) throw();
Parametry
pOther
Porovnání IUnknown *
.
Vrácená hodnota
Vrátí hodnotu true, pokud jsou objekty identické, jinak false.
CComPtrBase::operator !
Operátor NOT.
bool operator!() const throw();
Vrácená hodnota
Vrátí hodnotu true, CComHeapPtr
pokud je ukazatel roven hodnotě NULL, jinak nepravda.
CComPtrBase::operator &
Operátor adresy &
.
T** operator&() throw();
Vrácená hodnota
Vrátí adresu objektu, na který CComPtrBase
odkazuje objekt.
CComPtrBase::operator *
Operátor ukazatele na *
T& operator*() const throw();
Vrácená hodnota
Vrátí hodnotu CComPtrBase::p
; to znamená ukazatel na objekt odkazovaný objektem CComPtrBase
.
Pokud se ladí sestavení, dojde k chybě kontrolního výrazu, pokud CComPtrBase::p
se nerovná hodnotě NULL.
CComPtrBase::operator ==
Operátor rovnosti.
bool operator== (T* pT) const throw();
Parametry
pT
Ukazatel na objekt.
Vrácená hodnota
Vrátí hodnotu true, pokud CComPtrBase
a pT
nasměruje na stejný objekt, jinak nepravda.
CComPtrBase::operator ->
Operátor pointer-to-member.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Vrácená hodnota
Vrátí hodnotu proměnné datového členu CComPtrBase::p
.
Poznámky
Tento operátor slouží k volání metody ve třídě odkazované objektem CComPtrBase
. V sestaveních ladění dojde k selhání kontrolního výrazu CComPtrBase
, pokud datový člen odkazuje na hodnotu NULL.
CComPtrBase::operator <
Operátor menší než.
bool operator<(T* pT) const throw();
Parametry
pT
Ukazatel na objekt.
Vrácená hodnota
Vrátí hodnotu true, pokud je ukazatel spravovaný aktuálním objektem menší než ukazatel, na který se porovnává.
CComPtrBase::operator T*
Operátor přetypování.
operator T*() const throw();
Poznámky
Vrátí ukazatel na datový typ objektu definovaný v šabloně třídy.
CComPtrBase::p
Proměnná datového členu ukazatele.
T* p;
Poznámky
Tato proměnná člena obsahuje informace o ukazateli.
CComPtrBase::QueryInterface
Voláním této metody vrátíte ukazatel na zadané rozhraní.
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
Parametry
Q
Typ objektu, jehož ukazatel rozhraní je povinný.
pp
Adresa výstupní proměnné, která přijímá požadovaný ukazatel rozhraní.
Vrácená hodnota
Vrátí S_OK
úspěch nebo E_NOINTERFACE
selhání.
Poznámky
Tato metoda volá IUnknown::QueryInterface
.
V sestaveních ladění dojde k chybě kontrolního výrazu, pokud pp
není rovna hodnotě NULL.
CComPtrBase::Release
Voláním této metody uvolněte rozhraní.
void Release() throw();
Poznámky
Rozhraní je vydáno a CComPtrBase::p
je nastaveno na HODNOTU NULL.
CComPtrBase::SetSite
Voláním této metody nastavíte lokalitu CComPtrBase
objektu na IUnknown
nadřazený objekt.
HRESULT SetSite(IUnknown* punkParent) throw();
Parametry
punkParent
Ukazatel na IUnknown
rozhraní nadřazeného objektu.
Vrácená hodnota
Vrátí S_OK
úspěch nebo chybu při selhání HRESULT
.
Poznámky
Tato metoda volá AtlSetChildSite
.