com_interface_entry (C++)
Dodaje wpis interfejs do mapy COM klasy docelowej.
[ com_interface_entry(
com_interface_entry
) ]
Parametry
- com_interface_entry
Ciąg zawierający tekst rzeczywistego wejścia.Aby uzyskać listę możliwych wartości, zobacz Makra COM_INTERFACE_ENTRY.
Uwagi
com_interface_entry Atrybut C++ Wstawia pełną zawartość ciąg znaków do mapa interfejsu COM obiekt docelowy.Jeśli atrybut jest raz zastosowany do obiektu docelowego, zapis jest wstawiany do początku istniejącej mapy interfejsu.Jeśli atrybut jest wielokrotnie stosowane do tego samego obiektu docelowego, dodaje się pozycje na początku mapę interfejsu w kolejności ich odebrania.
Atrybut ten wymaga, aby coclass, progid, lub vi_progid atrybutu (lub inny atrybut, który oznacza jeden z tych) również być stosowane do tego samego elementu.Każdy pojedynczy atrybut jest używany, pozostałe dwie są stosowane automatycznie.Na przykład jeśli progid jest stosowany, vi_progid i coclass są również stosowane.
Ponieważ pierwsze użycie com_interface_entry powoduje, że nowy interfejs ma zostać wstawiony na początku mapę interfejsu musi być jedną z następujących typów COM_INTERFACE_ENTRY:
COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
Zastosowania dodatkowych com_interface_entry atrybut można używać wszystkich obsługiwanych typów COM_INTERFACE_ENTRY.
To ograniczenie jest konieczne, ponieważ ATL używa pierwszego wpisu mapy interfejsu jako tożsamość IUnknown; w związku z tym wpis musi być prawidłowy interfejs.Na przykład następujący przykładowy kod źródłowy jest nieprawidłowa, ponieważ pierwszy wpis w tablicy interfejsu nie określa rzeczywiste interfejsu COM.
[ coclass, com_interface_entry =
"COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
class CMyClass
{
};
Przykład
Poniższy kod dodaje dwa wpisy do istniejącej mapy interfejsu COM z CMyBaseClass.Pierwszy to standardowy interfejs i ukrywa drugi IDebugTest interfejsu.
// 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
{
};
Wynikowy mapę obiektu COM dla CMyBaseClass jest w następujący sposób:
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()
Wymagania
Atrybutu kontekstu
Stosuje się do |
Klasa,struct |
Powtarzalne |
Tak |
Wymagane atrybuty |
Jeden lub więcej z następujących czynności: coclass, progid, lub vi_progid. |
Nieprawidłowe atrybuty |
Brak |
Aby uzyskać więcej informacji na temat kontekstów atrybutu, zobacz Kontekstów atrybutu.