Skip to main content
Komponentenautomatisierung
CreateStdDispatch

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

Erstellt eine Standardimplementierung der IDispatch-Schnittstelle durch einen Aufruf einzelne Funktion. Dies vereinfacht die Kennzeichnung Objekte über die Automatisierung.

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

Zeiger auf das Objekt IUnknown Implementierung.

pvThis

Zeiger auf das Objekt um verfügbar zu machen.

ptinfo

Zeiger auf die Typinformationen, die offen gelegte Objekt beschreibt.

ppunkStdDisp

Dies ist die private unbekannte für das Objekt, das die IDispatch Schnittstelle Aufruf von QueryInterface implementiert. This-Zeiger ist NULL, wenn die Funktion fehlschlägt.

Der Rückgabewert vom zurückgegebenen HRESULT ist eine der folgenden:

Rückgabewert

Bedeutung

S_OK

Erfolg.

E_INVALIDARG

Einer der ersten drei Argumente ist ungültig.

E_OUTOFMEMORY

Nicht genügend Arbeitsspeicher, um den Vorgang abzuschließen.

CreateStdDispatch können beim Erstellen eines Objekts statt die IDispatch Memberfunktionen für das Objekt zu implementieren. Die Implementierung erstellt jedoch, dass CreateStdDispatch unterliegt folgenden Einschränkungen:

  • Nur eine nationale Sprache unterstützt.

  • Unterstützt nur Dispatch-definierte Ausnahme Codes von Invoke zurückgegeben.

LoadTypeLib GetTypeInfoOfGuidund CreateStdDispatch umfassen den minimalen Satz von Funktionen, die Sie aufrufen, um ein Objekt mit einer Bibliothek Typ offen legen müssen. Weitere Informationen zum LoadTypeLib und GetTypeInfoOfGuidfinden Sie unter Typ Beschreibung Schnittstellen.

CreateDispTypeInfo und CreateStdDispatch umfassen den minimalen Satz von Dispatch Komponenten, die Sie aufrufen, um ein Objekt mit der Struktur INTERFACEDATA bereitgestellten Typ Informationen offen legen müssen.

Der folgende Code implementiert die IDispatch Schnittstelle für die CCalc Klasse von CreateStdDispatch .

CCalc FAR*
CCalc::Create()
{
   HRESULT hresult;
   CCalc FAR* pcalc;
   CArith FAR* parith;
   ITypeInfo FAR* ptinfo;
   IUnknown FAR* 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;
}