com_interface_entry (C++)
Fügt einen Eintrag Schnittstellen in die COM-Zuordnung der Zielklasse hinzu.
[ com_interface_entry(
com_interface_entry
) ]
Parameter
- com_interface_entry
Eine Zeichenfolge, die den tatsächlichen Text des Eintrags enthält.Eine Liste der möglichen Werte finden Sie unter COM_INTERFACE_ENTRY-Makros.
Hinweise
Das Attribut com_interface_entry C++ fügt die ungekürzten Inhalt einer Zeichenfolge in die COM-Schnittstellenzuordnung des Zielobjekts.Wenn das Attribut auf das Zielobjekt einmal angewendet wurde, wird der Eintrag in den Beginn der vorhandenen Schnittstellen eingefügt zugeordnet.Wenn das Attribut wiederholt auf dasselbe Zielobjekt angewendet wird, werden die Einträge am Anfang der Schnittstellen in der Reihenfolge zugeordnet eingefügt, die sie empfangen werden.
Dieses Attribut erfordert, dass Co-Klasse, ProgIDoder vi_progid-Attribut (oder ein anderes Attribut, das ein solcher Test vorhanden), bedeutet auch auf das gleiche Element übernommen werden.Wenn ein einzelnes Attribut wird, die anderen zwei automatisch angewendet werden.Wenn z. B. progid angewendet wird, werden vi_progid und coclass ebenfalls angewendet.
Da die erste Verwendung von com_interface_entry bewirkt, dass die neue Schnittstelle zugeordnet zu Beginn der Schnittstellen eingefügt werden soll, muss sie eine der folgenden COM_INTERFACE_ENTRY-Typen sein:
COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
Zusätzliche Verwendung des com_interface_entry-Attributs kann alle unterstützten COM_INTERFACE_ENTRY-Typen verwenden.
Diese Einschränkung ist erforderlich, da ATL den ersten Eintrag in der Schnittstellen als Identität zugeordnet IUnknownverwendet. Daher muss der Eintrag eine gültige Schnittstelle sein.Beispielsweise ist das folgende Codebeispiel ungültig, da der erste Eintrag in der Schnittstellen keine wirkliche COM-Schnittstelle zugeordnet.
[ coclass, com_interface_entry =
"COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
class CMyClass
{
};
Beispiel
Der folgende Code fügt zwei Einträge in der vorhandenen COM-Schnittstellenzuordnung von CMyBaseClasshinzu.Das erste Element ist eine Standardschnittstelle und die zweite blendet die IDebugTest-Schnittstelle aus.
// 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
{
};
Die resultierende COM-Objekt-Karte für CMyBaseClass lautet wie folgt:
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()
Anforderungen
Attribut-Kontext
Betrifft |
Klasse, struct |
Wiederholbar |
Ja |
Erforderliche Attribute |
Ein oder mehrere der folgenden Schritte aus: coclass, progidoder vi_progid. |
Ungültige Attribute |
None |
Weitere Informationen über das kontexte finden Sie unter Attribut-Kontexte.