Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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