com_interface_entry (C++)
Fügt der COM-Zuordnung der Zielklasse einen Schnittstelleneintrag hinzu.
Syntax
[ 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 com_interface_entry C++-Attribut fügt den ungekürzten Inhalt einer Zeichenfolge in die COM-Schnittstellenzuordnung des Zielobjekts ein. Wenn das Attribut einmal auf das Zielobjekt angewendet wird, wird der Eintrag am Anfang der vorhandenen Schnittstellenzuordnung eingefügt. Wenn das Attribut wiederholt auf dasselbe Zielobjekt angewendet wird, werden die Einträge am Anfang der Schnittstellenzuordnung in der Reihenfolge eingefügt, in der sie empfangen werden.
Dieses Attribut erfordert, dass die Attribute coclass, progid, oder vi_progid (oder ein anderes Attribut, das eines der genannten impliziert) auch auf demselben Element angewendet werden. Wenn ein einzelnes Attribut verwendet wird, werden die anderen beiden automatisch angewendet. Wenn sie beispielsweise progid
angewendet vi_progid
wird und coclass
auch angewendet werden.
Da die erste Verwendung von com_interface_entry bewirkt, dass die neue Schnittstelle am Anfang der Schnittstellenzuordnung eingefügt wird, muss sie einer der folgenden COM_INTERFACE_ENTRY Typen sein:
COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
Zusätzliche Verwendungen des attributs com_interface_entry können alle unterstützten COM_INTERFACE_ENTRY Typen verwenden.
Diese Einschränkung ist erforderlich, da ATL den ersten Eintrag in der Schnittstellenzuordnung als Identität IUnknown
verwendet. Daher muss der Eintrag eine gültige Schnittstelle sein. Das folgende Codebeispiel ist beispielsweise ungültig, da der erste Eintrag in der Schnittstellenzuordnung keine tatsächliche COM-Schnittstelle angibt.
[ coclass, com_interface_entry =
"COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
class CMyClass
{
};
Beispiel
Der folgende Code fügt der vorhandenen COM-Schnittstellenzuordnung CMyBaseClass
zwei Einträge hinzu. Die erste 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-Objektzuordnung lautet CMyBaseClass
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
Attributkontext | Wert |
---|---|
Gilt für | class , struct |
Wiederholbar | Ja |
Erforderliche Attribute | Eine oder mehrere der folgenden: coclass , , progid oder vi_progid . |
Ungültige Attribute | Keine |
Weitere Informationen zu den Attributkontexten finden Sie unter Attributkontexte.
Siehe auch
COM-Attribute
Klassenattribute
typedef-, enum-, union- und struct-Attribute