Share via


CComPtrBase-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse biedt een basis voor slimme aanwijzerklassen met behulp van COM-geheugenroutines.

Syntaxis

template <class T>
class CComPtrBase

Parameterwaarden

T
Het objecttype waarnaar moet worden verwezen door de slimme aanwijzer.

Leden

Openbare constructors

Naam Description
CComPtrBase::~CComPtrBase De destructor.

Openbare methoden

Naam Description
CComPtrBase::Advise Roep deze methode aan om een verbinding te maken tussen het CComPtrBaseverbindingspunt en de sink van een client.
CComPtrBase::Attach Roep deze methode aan om eigenaar te worden van een bestaande aanwijzer.
CComPtrBase::CoCreateInstance Roep deze methode aan om een object te maken van de klasse die is gekoppeld aan een opgegeven klasse-id of programma-id.
CComPtrBase::CopyTo Roep deze methode aan om de CComPtrBase aanwijzer naar een andere aanwijzervariabele te kopiƫren.
CComPtrBase::Detach Roep deze methode aan om het eigendom van een aanwijzer vrij te geven.
CComPtrBase::IsEqualObject Roep deze methode aan om te controleren of de opgegeven IUnknown punten naar hetzelfde object zijn gekoppeld aan het CComPtrBase object.
CComPtrBase::QueryInterface Roep deze methode aan om een aanwijzer te retourneren naar een opgegeven interface.
CComPtrBase::Release Roep deze methode aan om de interface vrij te geven.
CComPtrBase::SetSite Roep deze methode aan om de site van het CComPtrBase object in te stellen op het IUnknown bovenliggende object.

Openbare operators

Naam Description
CComPtrBase::operator T* De cast-operator.
CComPtrBase::operator ! De NOT-operator.
CComPtrBase::operator & Het adres van & de operator.
CComPtrBase::operator * De aanwijzer-naar-operator * .
CComPtrBase::operator < De operator kleiner dan.
CComPtrBase::operator == De gelijkheidsoperator.
CComPtrBase::operator -> De operator aanwijzer naar leden.

Leden van openbare gegevens

Naam Description
CComPtrBase::p De gegevenslidvariabele aanwijzer.

Opmerkingen

Deze klasse biedt de basis voor andere slimme aanwijzers die COM-geheugenbeheerroutines gebruiken, zoals CComQIPtr en CComPtr. De afgeleide klassen voegen hun eigen constructors en operators toe, maar zijn afhankelijk van de methoden die worden geleverd door CComPtrBase.

Requirements

Koptekst: atlcomcli.h

CComPtrBase::Advise

Roep deze methode aan om een verbinding te maken tussen het CComPtrBaseverbindingspunt en de sink van een client.

HRESULT Advise(
    IUnknown* pUnk,
    const IID& iid,
    LPDWORD pdw) throw();

Parameterwaarden

pUnk
Een aanwijzer naar de client IUnknown.

iid
De GUID van het verbindingspunt. Deze GUID is doorgaans hetzelfde als de uitgaande interface die wordt beheerd door het verbindingspunt.

pdw
Een aanwijzer naar de cookie die de verbinding uniek identificeert.

Retourwaarde

Retourneert S_OK een geslaagde fout of een fout HRESULT bij een fout.

Opmerkingen

Zie AtlAdvise voor meer informatie.

CComPtrBase::Attach

Roep deze methode aan om eigenaar te worden van een bestaande aanwijzer.

void Attach(T* p2) throw();

Parameterwaarden

p2
Het CComPtrBase object wordt eigenaar van deze aanwijzer.

Opmerkingen

Attach roept CComPtrBase::Release de bestaande lidvariabele CComPtrBase::p aan en wijst vervolgens toe aan p2CComPtrBase::p. Wanneer een CComPtrBase object eigenaar wordt van een aanwijzer, wordt deze automatisch aangeroepen Release op de aanwijzer, waardoor de aanwijzer en de toegewezen gegevens worden verwijderd als het aantal verwijzingen op het object naar 0 gaat.

CComPtrBase::~CComPtrBase

De destructor.

~CComPtrBase() throw();

Opmerkingen

Hiermee wordt de interface vrijgegeven die CComPtrBasedoor .

CComPtrBase::CoCreateInstance

Roep deze methode aan om een object te maken van de klasse die is gekoppeld aan een opgegeven klasse-id of programma-id.

HRESULT CoCreateInstance(
    LPCOLESTR szProgID,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

HRESULT CoCreateInstance(
    REFCLSID rclsid,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

Parameterwaarden

szProgID
Aanwijzer naar een ProgID, gebruikt om de CLSID te herstellen.

pUnkOuter
Als NULL, geeft u aan dat het object niet wordt gemaakt als onderdeel van een statistische functie. Als niet-NULL, is dit een aanwijzer naar de interface van IUnknown het aggregaatobject (het besturingselement IUnknown).

dwClsContext
Context waarin de code waarmee het zojuist gemaakte object wordt beheerd, wordt uitgevoerd.

rclsid
CLSID die is gekoppeld aan de gegevens en code die wordt gebruikt om het object te maken.

Retourwaarde

S_OK Geeft als resultaat dat de bewerking is geslaagd, of REGDB_E_CLASSNOTREGCLASS_E_NOAGGREGATION, of CO_E_CLASSSTRINGE_NOINTERFACE bij een fout. Zie CoCreateClassInstance en CLSIDFromProgID voor een beschrijving van deze fouten.

Opmerkingen

Als de eerste vorm van de methode wordt aangeroepen, CLSIDFromProgID wordt gebruikt om de CLSID te herstellen. Beide formulieren worden vervolgens aangeroepen CoCreateClassInstance.

In builds voor foutopsporing treedt een assertiefout op als CComPtrBase::p deze niet gelijk is aan NULL.

CComPtrBase::CopyTo

Roep deze methode aan om de CComPtrBase aanwijzer naar een andere aanwijzervariabele te kopiƫren.

HRESULT CopyTo(T** ppT) throw();

Parameterwaarden

ppT
Adres van de variabele om de CComPtrBase aanwijzer te ontvangen.

Retourwaarde

S_OK Geeft als resultaat het succes, E_POINTER bij fouten.

Opmerkingen

Hiermee kopieert u de CComPtrBase aanwijzer naar ppT. Het aantal verwijzingen op de CComPtrBase::p lidvariabele wordt verhoogd.

Er wordt een fout HRESULT geretourneerd als ppT deze gelijk is aan NULL. In builds voor foutopsporing treedt er een assertiefout op als ppT deze gelijk is aan NULL.

CComPtrBase::Detach

Roep deze methode aan om het eigendom van een aanwijzer vrij te geven.

T* Detach() throw();

Retourwaarde

Retourneert een kopie van de aanwijzer.

Opmerkingen

Geeft het eigendom van een aanwijzer vrij, stelt de CComPtrBase::p gegevenslidvariabele in op NULL en retourneert een kopie van de aanwijzer.

CComPtrBase::IsEqualObject

Roep deze methode aan om te controleren of de opgegeven IUnknown punten naar hetzelfde object zijn gekoppeld aan het CComPtrBase object.

bool IsEqualObject(IUnknown* pOther) throw();

Parameterwaarden

pOther
De IUnknown * te vergelijken.

Retourwaarde

Retourneert waar als de objecten identiek zijn, anders onwaar.

CComPtrBase::operator !

De NOT-operator.

bool operator!() const throw();

Retourwaarde

Retourneert waar als de CComHeapPtr aanwijzer gelijk is aan NULL, anders onwaar.

CComPtrBase::operator &

Het adres van & de operator.

T** operator&() throw();

Retourwaarde

Retourneert het adres van het object waarnaar wordt verwezen door het CComPtrBase object.

CComPtrBase::operator *

De aanwijzer-naar-operator * .

T& operator*() const throw();

Retourwaarde

Retourneert de waarde van CComPtrBase::p; dat wil gezegd, een aanwijzer naar het object waarnaar wordt verwezen door het CComPtrBase object.

Als builds voor foutopsporing optreden, treedt er een assertiefout op als CComPtrBase::p deze niet gelijk is aan NULL.

CComPtrBase::operator ==

De gelijkheidsoperator.

bool operator== (T* pT) const throw();

Parameterwaarden

pT
Een aanwijzer naar een object.

Retourwaarde

Retourneert waar als CComPtrBase en pT wijs naar hetzelfde object, anders onwaar.

CComPtrBase::operator ->

De aanwijzer-naar-lid-operator.

_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();

Retourwaarde

Retourneert de waarde van de CComPtrBase::p gegevenslidvariabele.

Opmerkingen

Gebruik deze operator om een methode aan te roepen in een klasse waarnaar wordt verwezen door het CComPtrBase object. In builds voor foutopsporing treedt er een assertiefout op als het CComPtrBase gegevenslid verwijst naar NULL.

CComPtrBase::operator <

De operator kleiner dan.

bool operator<(T* pT) const throw();

Parameterwaarden

pT
Een aanwijzer naar een object.

Retourwaarde

Retourneert waar als de aanwijzer die wordt beheerd door het huidige object kleiner is dan de aanwijzer waarop deze wordt vergeleken.

CComPtrBase::operator T*

De cast-operator.

operator T*() const throw();

Opmerkingen

Retourneert een aanwijzer naar het objectgegevenstype dat is gedefinieerd in de klassesjabloon.

CComPtrBase::p

De gegevenslidvariabele aanwijzer.

T* p;

Opmerkingen

Deze lidvariabele bevat de informatie over de aanwijzer.

CComPtrBase::QueryInterface

Roep deze methode aan om een aanwijzer te retourneren naar een opgegeven interface.

template <class Q> HRESULT QueryInterface(Q
** pp) const throw();

Parameterwaarden

Q
Het objecttype waarvan de interfacepointer is vereist.

pp
Adres van uitvoervariabele die de aangevraagde interfacepointer ontvangt.

Retourwaarde

S_OK Geeft als resultaat of bij mislukte pogingenE_NOINTERFACE.

Opmerkingen

Met deze methode wordt aangeroepen IUnknown::QueryInterface.

In builds voor foutopsporing treedt een assertiefout op als pp deze niet gelijk is aan NULL.

CComPtrBase::Release

Roep deze methode aan om de interface vrij te geven.

void Release() throw();

Opmerkingen

De interface wordt vrijgegeven en CComPtrBase::p is ingesteld op NULL.

CComPtrBase::SetSite

Roep deze methode aan om de site van het CComPtrBase object in te stellen op het IUnknown bovenliggende object.

HRESULT SetSite(IUnknown* punkParent) throw();

Parameterwaarden

punkParent
Een aanwijzer naar de IUnknown interface van het bovenliggende item.

Retourwaarde

Retourneert S_OK een geslaagde fout of een fout HRESULT bij een fout.

Opmerkingen

Met deze methode wordt aangeroepen AtlSetChildSite.

Zie ook

Overzicht van klassen