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
S_OK
Berhasil.
E_INVALIDARG
Salah satu dari tiga argumen pertama tidak valid.
E_OUTOFMEMORY
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

Lihat juga

Pembuatan Fungsi API Pengiriman

IDispatch