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:
CComObject, CComAggObject, or CComPolyObject implementa o IUnknown métodos.
CComObjectRoot or CComObjectRootEx gerencia a contagem de referência e ponteiros externos de IUnknown.
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
Implementando CComObjectRootEx
Mostrar exemplo COM entradas de MAP de implementação CComObjectRootEx.Implementação CComObject, CComAggObject e CComPolyObject
Discute como a DECLARE_ * _AGGREGATABLE macros afetam o uso do CComObject, CComAggObject, e CComPolyObject.Suporte a IDispatch e IErrorInfo
Lista as classes de implementação do ATL para oferecer suporte a IDispatch e IErrorInfo interfaces.Suporte IDispEventImpl
Discute as etapas para implementar um ponto de conexão para sua classe.Alterar o padrão fábrica de classes e o modelo de agregação
Mostre que as macros para usar para alterar o modelo de fábrica e agregação de classe padrão.Criando um objeto agregado
Lista as etapas para criar um objeto agregado.
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.