Función CreateStdDispatch (oleauto.h)
Crea una implementación estándar de la interfaz IDispatch a través de una sola llamada de función. Esto simplifica la exposición de objetos a través de Automation.
Sintaxis
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
Parámetros
punkOuter
Implementación de IUnknown del objeto.
pvThis
Objeto que se va a exponer.
ptinfo
Información de tipo que describe el objeto expuesto.
ppunkStdDisp
Privado desconocido para el objeto que implementa la llamada QueryInterface de la interfaz IDispatch . Este puntero es null si se produce un error en la función.
Valor devuelto
Esta función puede devolver uno de estos valores.
Código devuelto | Descripción |
---|---|
|
Correcto. |
|
Uno de los tres primeros argumentos no es válido. |
|
No había memoria suficiente para completar la operación. |
Comentarios
Puede usar CreateStdDispatch al crear un objeto en lugar de implementar las funciones miembro IDispatch para el objeto . Sin embargo, la implementación que crea CreateStdDispatch tiene estas limitaciones:
- Solo admite un idioma nacional.
- Solo admite códigos de excepción definidos por el envío devueltos desde Invoke.
LoadTypeLib, GetTypeInfoOfGuid y CreateStdDispatch componen el conjunto mínimo de funciones a las que debe llamar para exponer un objeto mediante una biblioteca de tipos. Para obtener más información sobre LoadTypeLib y GetTypeInfoOfGuid, vea Interfaces de descripción de tipos.
CreateDispTypeInfo y CreateStdDispatch conforman el conjunto mínimo de componentes de envío que debe llamar para exponer un objeto mediante la información de tipo proporcionada por la estructura INTERFACEDATA.
Ejemplos
El código siguiente implementa la interfaz IDispatch para la clase CCalc mediante 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;
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | oleauto.h |
Library | OleAut32.lib |
Archivo DLL | OleAut32.dll |