atribut ganda
Atribut ganda mengidentifikasi antarmuka yang mengekspos properti dan metode melalui IDispatch dan langsung melalui VTBL.
[
uuid(uuid-number),
oleautomation,
dual
[ , optional-attribute-list]
]
interface interface-name
{
. . .
};
Parameter
-
uuid-number
-
Menentukan nomor identifikasi unik universal untuk antarmuka
-
optional-attribute-list
-
Menentukan daftar atribut MIDL tambahan atau nol atau lebih.
-
nama antarmuka
-
Nama antarmuka tempat atribut ganda akan diterapkan.
Keterangan
Antarmuka yang diidentifikasi oleh atribut ganda harus kompatibel dengan Automation dan berasal dari IDispatch. Atribut ini tidak diizinkan pada dispinterfaces.
Atribut ganda membuat antarmuka yang merupakan antarmuka IDispatch dan antarmuka Component Object Model (COM). Tujuh entri pertama VTBL untuk antarmuka ganda adalah tujuh anggota IDispatch, dan entri yang tersisa adalah untuk akses langsung ke anggota antarmuka ganda. Semua parameter dan jenis pengembalian yang ditentukan untuk anggota antarmuka ganda harus jenis yang kompatibel dengan Automation.
Semua anggota antarmuka ganda harus melewati HRESULT sebagai nilai pengembalian fungsi. Anggota, seperti fungsi pengaktif properti, yang perlu mengembalikan nilai lain, harus menentukan parameter terakhir sebagai out, retval, yang menunjukkan parameter output yang mengembalikan nilai fungsi. Selain itu, anggota yang perlu mendukung beberapa lokal harus melewati parameter lcid .
Antarmuka ganda menyediakan kecepatan pengikatan VTBL langsung dan fleksibilitas pengikatan IDispatch . Untuk alasan ini, antarmuka ganda disarankan jika memungkinkan.
Catatan
Jika aplikasi Anda mengakses data objek dengan mentransmisikan pointer ini dalam panggilan antarmuka, Anda harus memeriksa pointer VTBL dalam objek terhadap pointer VTBL Anda sendiri untuk memastikan bahwa Anda terhubung ke proksi yang sesuai.
Menentukan ganda pada antarmuka menyiratkan bahwa antarmuka kompatibel dengan Automation, dan karenanya menyebabkan bendera TYPEFLAG_FDUAL dan TYPEFLAG_FOLEAUTOMATION diatur.
Bendera
TYPEFLAG_FDUAL, TYPEFLAG_FOLEAUTOMATION
Contoh
[
uuid(1e196b20-1f3c-1069-996b-00dd010fe676),
oleautomation, dual
]
interface IHello : IDispatch
{
//Diverse properties and methods defined here.
};
Lihat juga