Macros de COM_INTERFACE_ENTRY
Esses macros insira as interfaces de um objeto no seu mapa COM para que eles possam ser acessados por QueryInterface.A ordem de entradas no mapa COM é interfaces do pedido será selecionado a existência IID compatível durante QueryInterface.
Cada objeto que deseja expor as interfaces através de QueryInterface deve ter seu próprio mapeamento COM.Inicia o mapa de BEGIN_COM_MAPCOM com macros.As entradas de interface são adicionadas a um ou mais dos COM_INTERFACE_ENTRY de macros, e o mapa terminar com a macro de END_COM_MAP .Por exemplo:
BEGIN_COM_MAP(CMyObject)
COM_INTERFACE_ENTRY(IMyObject)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
Observe que a primeira entrada no mapa COM deve ser uma interface no objeto que contém o mapa COM.Portanto, não pode iniciar suas entradas de mapa de COM_INTERFACE_ENTRY_CHAINCOM com, o que faz com que o mapa da de um objeto diferente a ser pesquisada no ponto onde COM_INTERFACE_ENTRY_CHAIN(COtherObject) aparece no mapa da do objeto.Se você deseja pesquisar primeiro o mapa da de outro objeto, para adicionar uma entrada de interface para IUnknown ao seu mapa COM, então encadear o mapa da de outro objeto.Por exemplo:
BEGIN_COM_MAP(CThisObject)
COM_INTERFACE_ENTRY(IUnknown)
COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()
Cuidado |
---|
Até a data de versão 3,0, ATL usa a palavra-chave __uuidof( class ) do compilador para obter o IID correspondente para uma determinada classe.Devido a alterações em macros de COM_INTERFACE_ENTRY vigor na versão 3,0, agora você incluir somente o cabeçalho para que a interface, use em vez de também vincular a uma biblioteca que define o IIDs correspondente para a interface.Essa alteração pode causar problemas se o cabeçalho foi gerado anteriormente por uma versão anterior de MIDL, ou se mão- foi codificado e não marcado adequadamente.Se a declaração para a interface no cabeçalho não foi marcada comum uuidassociado )de __declspec( , então qualquer tentativa de usar a palavra-chave de __uuidof para essa interface falhará.Você pode reverter para o mais antigos (macros de ATL 2.x) COM_INTERFACE_ENTRY definindo _ATL_NO_UUIDOF em suas configurações de compilação para trabalhar em torno de alguns problemas com esse novo comportamento. |
Macros de entrada de mapa COM
A seguir estão as macros disponíveis de entrada:
Requisitos
Cabeçalho: atlcom.h