Bagikan melalui


com_interface_entry (C++)

Menambahkan entri antarmuka ke dalam peta COM kelas target.

Sintaks

[ com_interface_entry(
  com_interface_entry) ]

Parameter

com_interface_entry
String yang berisi teks aktual entri. Untuk daftar nilai yang mungkin, lihat COM_INTERFACE_ENTRY Makro.

Keterangan

Atribut C++ com_interface_entry menyisipkan konten unabridged string karakter ke dalam peta antarmuka COM objek target. Jika atribut diterapkan sekali ke objek target, entri dimasukkan ke awal peta antarmuka yang ada. Jika atribut diterapkan berulang kali ke objek target yang sama, entri disisipkan di awal peta antarmuka dalam urutan diterima.

Atribut ini mengharuskan atribut coclass, progid, atau vi_progid (atau atribut lain yang menyiratkan salah satu dari atribut ini) juga diterapkan ke elemen yang sama. Jika ada atribut tunggal yang digunakan, dua atribut lainnya akan diterapkan secara otomatis. Misalnya, jika progid diterapkan, vi_progid dan coclass juga diterapkan.

Karena penggunaan pertama com_interface_entry menyebabkan antarmuka baru dimasukkan di awal peta antarmuka, antarmuka harus menjadi salah satu jenis COM_INTERFACE_ENTRY berikut:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

Penggunaan tambahan atribut com_interface_entry dapat menggunakan semua jenis COM_INTERFACE_ENTRY yang didukung.

Pembatasan ini diperlukan karena ATL menggunakan entri pertama dalam peta antarmuka sebagai identitas IUnknown; oleh karena itu, entri harus menjadi antarmuka yang valid. Misalnya, sampel kode berikut tidak valid karena entri pertama dalam peta antarmuka tidak menentukan antarmuka COM yang sebenarnya.

[ coclass, com_interface_entry =
    "COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
   class CMyClass
   {
   };

Contoh

Kode berikut menambahkan dua entri ke peta antarmuka COM yang ada dari CMyBaseClass. Yang pertama adalah antarmuka standar, dan yang kedua menyembunyikan IDebugTest antarmuka.

// 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
{
};

Peta objek COM yang dihasilkan adalah CMyBaseClass sebagai berikut:

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()

Persyaratan

Konteks atribut Nilai
Berlaku untuk class, struct
Berulang Ya
Atribut yang diperlukan Satu atau beberapa hal berikut ini: coclass, , progidatau vi_progid.
Atribut tidak valid Tidak

Untuk informasi selengkapnya tentang konteks atribut, lihat Konteks Atribut.

Lihat juga

Atribut COM
Atribut Kelas
Atribut Typedef, Enum, Union, dan Struct