com_interface_entry (C++)
Adiciona uma entrada de interface para o mapa COM da classe destino.
[ com_interface_entry(
com_interface_entry
) ]
Parâmetros
- com_interface_entry
Uma seqüência de caracteres que contém o texto real da entrada.Para obter uma lista dos valores possíveis, consulte Macros de COM_INTERFACE_ENTRY.
Comentários
O com_interface_entry atributo C++ insere o conteúdo de unabridged de uma seqüência de caracteres para o mapa de interface COM o objeto de destino.Se o atributo é aplicado uma vez para o objeto de destino, a entrada é inserida no início do mapa interface existente.Se o atributo é aplicado repetidamente ao mesmo objeto de destino, as entradas são inseridas no início do mapa da interface na ordem em que são recebidos.
Este atributo requer que o coclass, progid, ou vi_progid atributo (ou outro atributo implica um deles) também ser aplicadas ao mesmo elemento.Se qualquer atributo único for usado, as outras duas são aplicadas automaticamente.Por exemplo, se progid for aplicada, vi_progid e coclass também são aplicadas.
Porque o primeiro uso da com_interface_entry faz com que a nova interface a ser inserido no início do mapa de interface, ele deve ser um dos seguintes tipos de COM_INTERFACE_ENTRY:
COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
Usos adicionais da com_interface_entry atributo pode usar tipos de todas as COM_INTERFACE_ENTRY.
Essa restrição é necessária porque o ATL usa a primeira entrada no mapa de interface como a identidade IUnknown; Portanto, a entrada deve ser uma interface válida.Por exemplo, o exemplo de código a seguir é inválido porque a primeira entrada no mapa de interface não especifica uma interface de COM real.
[ coclass, com_interface_entry =
"COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
class CMyClass
{
};
Exemplo
O código a seguir adiciona duas entradas para o mapa existente COM interface de CMyBaseClass.A primeira é uma interface padrão e o segundo oculta o IDebugTest interface.
// cpp_attr_ref_com_interface_entry.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"
[module (name ="ldld")];
[ object,
uuid("7dbebed3-d636-4917-af62-c767a720a5b9")]
__interface IDebugTest{};
[ object,
uuid("2875ceac-f94b-4087-8e13-d13dc167fcfc")]
__interface IMyClass{};
[ coclass,
com_interface_entry ("COM_INTERFACE_ENTRY (IMyClass)"),
com_interface_entry ("COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"),
uuid("b85f8626-e76e-4775-b6a0-4826a9e94af2")
]
class CMyClass: public IMyClass, public IDebugTest
{
};
O mapa de objeto COM resultante de CMyBaseClass é o seguinte:
BEGIN_COM_MAP(CMyClass)
COM_INTERFACE_ENTRY (IMyClass)
COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)
COM_INTERFACE_ENTRY(IMyClass)
COM_INTERFACE_ENTRY2(IDispatch, IMyClass)
COM_INTERFACE_ENTRY(IDebugTest)
COM_INTERFACE_ENTRY(IProvideClassInfo)
END_COM_MAP()
Requisitos
Contexto de atributo
Se aplica a |
classe,struct |
Reproduzíveis |
Sim |
Atributos obrigatórios |
Um ou mais das seguintes opções: coclass, progid, ou vi_progid. |
Atributos inválidos |
Nenhum |
Para obter mais informações sobre os contextos de atributo, consulte Atributo contextos.