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 |
---|---|
|
Erfolg. |
|
Eines der ersten drei Argumente ist ungültig. |
|
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 |