Fundamentos de objetos COM de ATL

A ilustração a seguir descrevem a relação entre as classes e interfaces que são usadas para definir um objeto COM de ATL.

Estrutura do ATL

ObservaçãoObservação

Este diagrama mostra CComObject que é derivado de CYourClass enquanto CComAggObject e CComPolyObject incluem CYourClass como um variável de membro.

Existem três maneiras para definir um objeto COM de ATL.a opção padrão é usar a classe de CComObject que é derivada de CYourClass.a segunda opção é criar um objeto agregado usando a classe de CComAggObject .a terceira opção é usar a classe de CComPolyObject .CComPolyObject atua como um híbrido: pode funcionar como uma classe de CComObject ou como uma classe de CComAggObject , dependendo de como é projetado principalmente.Para obter mais informações sobre como usar a classe de CComPolyObject , consulte Classe de CComPolyObject.

Quando você usa o padrão ATL COM, você usa dois objetos: um objeto externo e um objeto interno.Os clientes externos acesso à funcionalidade interna de objeto com as funções do wrapper que são definidas no objeto externo.O objeto externo é do tipo CComObject.

Quando você usa um objeto agregado, o objeto externo não fornece os wrappers para a funcionalidade interna do objeto.Em vez de isso, o objeto externo fornece um ponteiro que é acessado diretamente por clientes externos.Em esse cenário, o objeto externo é do tipo CComAggObject.O objeto interno é um variável de membro objeto externo, e é do tipo CYourClass.

Porque o cliente não precisa passar pelo objeto externo interagir com o objeto interno, os objetos agregados são geralmente mais eficientes.Além de isso, o objeto externo não precisa saber a funcionalidade do objeto agregado, dado que a interface do objeto diretamente agregado está disponível para o cliente.Em o entanto, nem todos os objetos podem ser agregados.Para que um objeto seja, agregado precisam ser criado com agregação em mente.

ATL implementa IUnknown em dois estágios:

Outros aspectos do seu objeto COM de ATL são tratados por outras classes:

  • CComCoClass define o modelo padrão de fábrica e de distribuição da classe do objeto.

  • IDispatchImpl fornece uma implementação padrão de parte de IDispatch Interface de todas as interfaces duais no objeto.

  • ISupportErrorInfoImpl implementa a interface de ISupportErrorInfo que garante que as informações de erro pode ser propagadas acima da cadeia de chamada corretamente.

Nesta seção

Seções relacionadas

  • criando um projeto de ATL
    Fornece informações sobre a criação de um objeto através de ATL.

  • ATL
    Fornece links para tópicos conceituais sobre como programar usando a biblioteca ativa do modelo.

Consulte também

Outros recursos

Conceitos de ATL