Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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