CreateStdDispatch-Funktion (oleauto.h)

Erstellt eine Standardimplementierung der IDispatch-Schnittstelle über einen einzelnen Funktionsaufruf. Dies vereinfacht das Verfügbarmachen von Objekten über Automation.

Syntax

HRESULT CreateStdDispatch(
  IUnknown  *punkOuter,
  void      *pvThis,
  ITypeInfo *ptinfo,
  IUnknown  **ppunkStdDisp
);

Parameter

punkOuter

Die IUnknown-Implementierung des Objekts.

pvThis

Das objekt, das verfügbar gemacht werden soll.

ptinfo

Die Typinformationen, die das verfügbar gemachte Objekt beschreiben.

ppunkStdDisp

Der private unbekannte für das Objekt, das den QueryInterface-Aufruf der IDispatch-Schnittstelle implementiert. Dieser Zeiger ist NULL, wenn die Funktion fehlschlägt.

Rückgabewert

Diese Funktion kann einen dieser Werte zurückgeben.

Rückgabecode Beschreibung
S_OK
Erfolg.
E_INVALIDARG
Eines der ersten drei Argumente ist ungültig.
E_OUTOFMEMORY
Es war nicht genügend Arbeitsspeicher vorhanden, um den Vorgang abzuschließen.

Hinweise

Sie können CreateStdDispatch verwenden, wenn Sie ein Objekt erstellen, anstatt die IDispatch-Memberfunktionen für das Objekt zu implementieren. Die von CreateStdDispatch erstellte Implementierung weist jedoch folgende Einschränkungen auf:

  • Unterstützt nur eine Landessprache.
  • Unterstützt nur vom Dispatch definierte Ausnahmecodes, die von Invoke zurückgegeben werden.

LoadTypeLib, GetTypeInfoOfGuid und CreateStdDispatch umfassen den Mindestsatz von Funktionen, die Sie aufrufen müssen, um ein Objekt mithilfe einer Typbibliothek verfügbar zu machen. Weitere Informationen zu LoadTypeLib und GetTypeInfoOfGuid finden Sie unter Typbeschreibungsschnittstellen.

CreateDispTypeInfo und CreateStdDispatch umfassen den Mindestsatz von Dispatchkomponenten, die Sie aufrufen müssen, um ein Objekt mithilfe von Typinformationen verfügbar zu machen, die von der INTERFACEDATA-Struktur bereitgestellt werden.

Beispiele

Der folgende Code implementiert die IDispatch-Schnittstelle für die CCalc-Klasse mithilfe von 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;
}

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile oleauto.h
Bibliothek OleAut32.lib
DLL OleAut32.dll

Weitere Informationen

Erstellen von Dispatch-API-Funktionen

IDispatch