Partilhar via


Implementando uma interface dupla

Você pode implementar uma interface dupla usando a classe IDispatchImpl, que fornece uma implementação padrão dos métodos IDispatch em uma interface dupla. Para obter mais informações, confira Como implementar a interface IDispatch.

Para usar esta classe:

  • Defina sua interface dupla em uma biblioteca de tipos.

  • Derive sua classe de uma especialização de IDispatchImpl (passe informações sobre a interface e a biblioteca de tipos como os argumentos de modelo).

  • Adicione uma ou mais entradas ao mapa COM para expor a interface dupla por meio de QueryInterface.

  • Implemente a parte vtable da interface na sua classe.

  • Verifique se a biblioteca de tipos que contém a definição de interface está disponível para seus objetos no runtime.

Assistente de objeto simples da ATL

Se você quiser criar uma interface e uma classe para implementá-la, poderá usar a caixa de diálogo Adicionar Classe da ATL e, em seguida, o Assistente de Objeto Simples da ATL.

Assistente de Implementação de Interface

Se você já tiver uma interface, poderá usar o Assistente para Implementar Interface para adicionar as implementações necessárias de classe base, entradas de mapa COM e método skeleton a uma classe existente.

Observação

Talvez seja necessário ajustar a classe base gerada para que os números de versão principal e secundária da biblioteca de tipos sejam passados como argumentos de modelo para sua classe base IDispatchImpl. O Assistente para Implementar Interface não verifica o número de versão da biblioteca de tipos para você.

Implementando IDispatch

É possível usar uma classe base IDispatchImpl para fornecer uma implementação de uma dispinterface apenas especificando a entrada apropriada no mapa COM (usando a macro COM_INTERFACE_ENTRY2 ou COM_INTERFACE_ENTRY_IID), desde que você tenha uma biblioteca de tipos que descreva uma interface dupla correspondente. É bastante comum implementar a interface IDispatch dessa forma, por exemplo. O Assistente de Objeto Simples da ATL e o Assistente de Implementação de Interface pressupõem que você pretende implementar IDispatch dessa forma; então, eles adicionarão a entrada apropriada ao mapa.

Observação

A ATL oferece as classes IDispEventImpl e IDispEventSimpleImpl para ajudar a implementar dispinterfaces sem exigir uma biblioteca de tipos que contenha a definição de uma interface dupla compatível.

Confira também

Interfaces duplas e a ATL