Fungsi CreateStdDispatch (oleauto.h)
Membuat implementasi standar antarmuka IDispatch melalui satu panggilan fungsi. Ini menyederhanakan mengekspos objek melalui Automation.
Sintaks
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
Parameter
punkOuter
Implementasi IUnknown objek.
pvThis
Objek yang akan diekspos.
ptinfo
Informasi jenis yang menjelaskan objek yang diekspos.
ppunkStdDisp
Privat yang tidak diketahui untuk objek yang mengimplementasikan panggilan QueryInterface antarmuka IDispatch . Penunjuk ini null jika fungsi gagal.
Nilai kembali
Fungsi ini dapat mengembalikan salah satu nilai ini.
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Salah satu dari tiga argumen pertama tidak valid. |
|
Memori tidak cukup untuk menyelesaikan operasi. |
Keterangan
Anda dapat menggunakan CreateStdDispatch saat membuat objek alih-alih mengimplementasikan fungsi anggota IDispatch untuk objek. Namun, implementasi yang dibuat CreateStdDispatch memiliki batasan berikut:
- Hanya mendukung satu bahasa nasional.
- Hanya mendukung kode pengecualian yang ditentukan pengiriman yang dikembalikan dari Invoke.
LoadTypeLib, GetTypeInfoOfGuid, dan CreateStdDispatch terdiri dari kumpulan fungsi minimum yang perlu Anda panggil untuk mengekspos objek menggunakan pustaka jenis. Untuk informasi selengkapnya tentang LoadTypeLib dan GetTypeInfoOfGuid, lihat Antarmuka Deskripsi Jenis.
CreateDispTypeInfo dan CreateStdDispatch terdiri dari set minimum komponen pengiriman yang perlu Anda panggil untuk mengekspos objek menggunakan informasi jenis yang disediakan oleh struktur INTERFACEDATA.
Contoh
Kode berikut mengimplementasikan antarmuka IDispatch untuk kelas CCalc menggunakan CreateStdDispatch.
CCalc FAR*
CCalc::Create()
{
HRESULT hresult;
CCalc * pcalc;
CArith * parith;
ITypeInfo* ptinfo;
IUnknown * punkStdDisp;
extern INTERFACEDATA NEARDATA g_idataCCalc;
if((pcalc = new FAR CCalc()) == NULL)
return NULL;
pcalc->AddRef();
parith = &(pcalc->m_arith);
// Build type information for the functionality on this object that
// is being exposed for external programmability.
hresult = CreateDispTypeInfo(
&g_idataCCalc, LOCALE_SYSTEM_DEFAULT, &ptinfo);
if(hresult != NOERROR)
goto LError0;
// Create an aggregate with an instance of the default
// implementation of IDispatch that is initialized with
// type information.
hresult = CreateStdDispatch(
pcalc, // Controlling unknown.
parith, // Instance to dispatch on.
ptinfo, // Type information describing the instance.
&punkStdDisp);
ptinfo-&>Release();
if(hresult != NOERROR)
goto LError0;
pcalc->m_punkStdDisp = punkStdDisp;
return pcalc;
LError0:;
pcalc->Release();
return NULL;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | oleauto.h |
Pustaka | OleAut32.lib |
DLL | OleAut32.dll |