Partilhar via


Classe CComAggObject

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe implementa a interface IUnknown para um objeto agregado. Por definição, um objeto agregado está contido dentro de um objeto exterior. A CComAggObject classe é semelhante à Classe CComObject, exceto que expõe uma interface diretamente acessível a clientes externos.

Sintaxe

template<class contained>
class CComAggObject : public IUnknown,
   public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>

Parâmetros

contido
A sua classe, derivada de CComObjectRoot ou CComObjectRootEx, bem como de quaisquer outras interfaces que queira suportar no objeto.

Membros

Construtores Públicos

Nome Description
CComAggObject::CComAggObject O construtor.
CComAggObject::~CComAggObject O destruidor.

Métodos Públicos

Nome Description
CComAggObject::AddRef Incrementa a contagem de referências no objeto agregado.
CComAggObject::CreateInstance Esta função estática permite-lhe criar um novo objeto CComAggObject<contained> sem a sobrecarga do CoCreateInstance.
CComAggObject::FinalConstruct Realiza a inicialização final de m_contained.
CComAggObject::FinalRelease Realiza a destruição final de m_contained.
CComAggObject::QueryInterface Recupera um ponteiro para a interface solicitada.
CComAggObject::Release Diminui a contagem de referência no objeto agregado.

Membros de Dados Públicos

Nome Description
CComAggObject::m_contained Chamadas de delegados IUnknown para o desconhecido exterior.

Observações

CComAggObject implementa IUnknown para um objeto agregado. CComAggObject tem a sua própria IUnknown interface, separada da interface do IUnknown objeto exterior, e mantém a sua própria contagem de referência.

Para mais informações sobre agregação, consulte o artigo Fundamentos dos Objetos COM ATL.

Hierarquia de herança

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

Requerimentos

Cabeçalho: atlcom.h

CComAggObject::AddRef

Incrementa a contagem de referências no objeto agregado.

STDMETHOD_(ULONG, AddRef)();

Valor de retorno

Um valor que pode ser útil para diagnósticos ou testes.

CComAggObject::CComAggObject

O construtor.

CComAggObject(void* pv);

Parâmetros

PV
[dentro] O desconhecido exterior.

Observações

Inicializa o CComContainedObject membro, m_contained, e incrementa a contagem de bloqueios do módulo.

O destruidor diminui a contagem de bloqueios do módulo.

CComAggObject::~CComAggObject

O destruidor.

~CComAggObject();

Observações

Liberta todos os recursos alocados, chama o FinalRelease e diminui a contagem de bloqueios de módulos.

CComAggObject::CreateInstance

Esta função estática permite-lhe criar um novo objeto CComAggObject<contained> sem a sobrecarga do CoCreateInstance.

static HRESULT WINAPI CreateInstance(
    LPUNKNOWN pUnkOuter,
    CComAggObject<contained>** pp);

Parâmetros

pp
[fora] Um ponteiro para um ponteiro contido por CComAggObject<.> Se CreateInstance não for bem-sucedido, pp é definido como NULL.

Valor de retorno

Um valor HRESULT padrão.

Observações

O objeto devolvido tem uma contagem de referência zero, por isso chama AddRef imediatamente e depois usa Release para libertar a referência no ponteiro do objeto quando terminares.

Se não precisares de acesso direto ao objeto, mas ainda assim quiseres criar um novo objeto sem a sobrecarga de CoCreateInstance, usa em vez disso CComCoClass::CreateInstance .

CComAggObject::FinalConstruct

Chamado durante as fases finais da construção do objeto, este método realiza qualquer inicialização final no m_contained membro.

HRESULT FinalConstruct();

Valor de retorno

Um valor HRESULT padrão.

CComAggObject::FinalRelease

Chamado durante a destruição de objetos, este método liberta o elemento m_contained .

void FinalRelease();

CComAggObject::m_contained

Um objeto CComContainedObject derivado da tua classe.

CComContainedObject<contained> m_contained;

Parâmetros

contido
[dentro] A sua classe, derivada de CComObjectRoot ou CComObjectRootEx, bem como de quaisquer outras interfaces que queira suportar no objeto.

Observações

Todas as IUnknown chamadas através m_contained são delegadas ao desconhecido externo.

CComAggObject::QueryInterface

Recupera um ponteiro para a interface solicitada.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);

Parâmetros

IID
[dentro] O identificador da interface a ser solicitada.

ppvObject
[fora] Um apontador para o ponteiro de interface identificado por iid. Se o objeto não suportar esta interface, o ppvObject é definido como NULL.

pp
[fora] Um apontador para o ponteiro de interface identificado pelo tipo Q. Se o objeto não suportar esta interface, pp é definido como NULL.

Valor de retorno

Um valor HRESULT padrão.

Observações

Se a interface solicitada for IUnknown, QueryInterface devolve um ponteiro ao objeto agregado IUnknown e incrementa a contagem de referências. Caso contrário, este método consulta a interface através do CComContainedObject membro, m_contained.

CComAggObject::Release

Diminui a contagem de referência no objeto agregado.

STDMETHOD_(ULONG, Release)();

Valor de retorno

Em compilações de depuração, Release devolve um valor que pode ser útil para diagnóstico ou testes. Em builds que não são de depuração, Release devolve sempre 0.

Consulte também

Classe CComObject
Classe CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Visão geral da classe