Compartilhar via


Fundamentos de objetos COM de ATL

A ilustração a seguir representa o Relação entre as classes e interfaces que são usados para definir um ATL objeto COM.

Observação:

Isso diagrama mostra que CComObject é derivado de CYourClass enquanto CComAggObject e CComPolyObject incluir CYourClass sistema autônomo uma variável de membro.

Há três maneiras para definir um ATL objeto COM.A opção padrão é usar o CComObject classe que é derivado CYourClass. A segunda opção é criar um objeto agregado usando o CComAggObject classe. A terceira opção é usar o CComPolyObject classe. CComPolyObject atua sistema autônomo um híbrido: Ele pode funcionar sistema autônomo um CComObject classe ou sistema autônomo um CComAggObject classe, dependendo de sistema autônomo ela é criada pela primeira vez. Para obter mais informações sobre como usar o CComPolyObject classe, consulte Classe CComPolyObject.

Quando você usa o padrão COM ATL, você usa dois objetos: um objeto externo e um objeto interno.Clientes externos acessar a funcionalidade do objeto interno através de funções de wrapper definidas no objeto externo.O objeto externo é do tipo CComObject.

Quando você usa um objeto agregado, o objeto externo não fornece invólucros para a funcionalidade do objeto interno.Em vez disso, o objeto externo fornece um ponteiro que é acessado diretamente por clientes externos.Nesse cenário, o objeto externo é do tipo CComAggObject. O objeto interno é uma variável de membro do objeto externo e é do tipo CYourClass.

Porque o cliente não tem por meio do objeto externo para interagir com o objeto interno, os objetos de agregados são geralmente mais eficientes.Além disso, o objeto externo não tem conhecer a funcionalidade do objeto agregado, a interface de objeto agregado é diretamente disponível para o cliente.No entanto, nem todos os objetos podem ser agregados.Para um objeto ser agregados, ele precisa ser projetado com agregação em mente.

Implementa a ATLIUnknown em duas fases:

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

  • CComCoClass define o padrão do objeto fábrica de classes e modelo de agregação.

  • IDispatchImpl fornece uma implementação padrão do IDispatch Interface parte de qualquer interface duplo no objeto.

  • ISupportErrorInfoImpl implementa o ISupportErrorInfo interface que garante que as informações de erro pode ser propagada corretamente a cadeia de telefonar.

Nesta seção

Seções relacionadas

  • Criando um projeto do ATL
    Fornece informações sobre como criar um objeto ATL COM.

  • ATL
    Fornece links para tópicos conceituais sobre como programar usando o ativo modelo biblioteca.

Consulte também

Outros recursos

Conceitos atl