Kelas IDispatchImpl
Menyediakan implementasi default untuk IDispatch
bagian dari antarmuka ganda.
Penting
Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.
Sintaks
template<class T,
const IID* piid= &__uuidof(T),
const GUID* plibid = &CAtlModule::m_libid,
WORD wMajor = 1,
WORD wMinor = 0,
class tihclass = CComTypeInfoHolder>
class ATL_NO_VTABLE IDispatchImpl : public T
Parameter
T
[di] Antarmuka ganda.
piid
[di] Penunjuk ke IID T.
plibid
[di] Penunjuk ke LIBID pustaka jenis yang berisi informasi tentang antarmuka. Secara default, pustaka jenis tingkat server diteruskan.
wMajor
[di] Versi utama pustaka jenis. Secara default, nilainya adalah 1.
wMinor
[di] Versi minor dari pustaka jenis. Secara default, nilainya adalah 0.
tihclass
[di] Kelas yang digunakan untuk mengelola informasi jenis untuk T. Secara default, nilainya adalah CComTypeInfoHolder
.
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
IDispatchImpl::IDispatchImpl | Konstruktor. AddRef Panggilan pada variabel anggota yang dilindungi yang mengelola informasi jenis untuk antarmuka ganda. Destruktor memanggil Release . |
Metode Publik
Nama | Deskripsi |
---|---|
IDispatchImpl::GetIDsOfNames | Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. |
IDispatchImpl::GetTypeInfo | Mengambil informasi jenis untuk antarmuka ganda. |
IDispatchImpl::GetTypeInfoCount | Menentukan apakah ada informasi jenis yang tersedia untuk antarmuka ganda. |
IDispatchImpl::Invoke | Menyediakan akses ke metode dan properti yang diekspos oleh antarmuka ganda. |
Keterangan
IDispatchImpl
menyediakan implementasi default untuk IDispatch
bagian dari antarmuka ganda apa pun pada objek. Antarmuka ganda berasal dari IDispatch
dan hanya menggunakan jenis yang kompatibel dengan Automation. Seperti dispinterface, antarmuka ganda mendukung pengikatan awal dan pengikatan terlambat; namun, antarmuka ganda juga mendukung pengikatan vtable.
Contoh berikut menunjukkan implementasi umum dari IDispatchImpl
.
class ATL_NO_VTABLE CBeeper :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CBeeper, &CLSID_Beeper>,
public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
Secara default, IDispatchImpl
kelas mencari informasi jenis untuk T di registri. Untuk menerapkan antarmuka yang tidak terdaftar, Anda dapat menggunakan IDispatchImpl
kelas tanpa mengakses registri dengan menggunakan nomor versi yang telah ditentukan sebelumnya. Jika Anda membuat IDispatchImpl
objek yang memiliki 0xFFFF sebagai nilai untuk wMajor dan 0xFFFF sebagai nilai untuk wMinor, IDispatchImpl
kelas mengambil pustaka jenis dari file .dll alih-alih registri.
IDispatchImpl
berisi anggota statis jenis CComTypeInfoHolder
yang mengelola informasi jenis untuk antarmuka ganda. Jika Anda memiliki beberapa objek yang mengimplementasikan antarmuka ganda yang sama, hanya satu instans yang CComTypeInfoHolder
digunakan.
Hierarki Warisan
T
IDispatchImpl
Persyaratan
Header: atlcom.h
IDispatchImpl::GetIDsOfNames
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.
STDMETHOD(GetIDsOfNames)(
REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgdispid);
Keterangan
Lihat IDispatch::GetIDsOfNames di Windows SDK.
IDispatchImpl::GetTypeInfo
Mengambil informasi jenis untuk antarmuka ganda.
STDMETHOD(GetTypeInfo)(
UINT itinfo,
LCID lcid,
ITypeInfo** pptinfo);
Keterangan
Lihat IDispatch::GetTypeInfo di Windows SDK.
IDispatchImpl::GetTypeInfoCount
Menentukan apakah ada informasi jenis yang tersedia untuk antarmuka ganda.
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
Keterangan
Lihat IDispatch::GetTypeInfoCount
di Windows SDK.
IDispatchImpl::IDispatchImpl
Konstruktor. AddRef
Panggilan pada variabel anggota yang dilindungi yang mengelola informasi jenis untuk antarmuka ganda. Destruktor memanggil Release
.
IDispatchImpl();
IDispatchImpl::Invoke
Menyediakan akses ke metode dan properti yang diekspos oleh antarmuka ganda.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* pexcepinfo,
UINT* puArgErr);
Keterangan
Lihat IDispatch::Invoke di Windows SDK.