Función CreateDispTypeInfo (oleauto.h)
Crea información de tipo simplificada para su uso en una implementación de IDispatch.
Sintaxis
HRESULT CreateDispTypeInfo(
INTERFACEDATA *pidata,
LCID lcid,
ITypeInfo **pptinfo
);
Parámetros
pidata
Descripción de la interfaz que describe esta información de tipo.
lcid
Identificador de configuración regional de los nombres usados en la información de tipo.
pptinfo
Al devolver, puntero a una implementación de información de tipo para su uso en DispGetIDsOfNames y DispInvoke.
Valor devuelto
Esta función puede devolver uno de estos valores.
Código devuelto | Descripción |
---|---|
|
Se admite la interfaz . |
|
La descripción de la interfaz o el LCID no son válidos. |
|
Memoria insuficiente para completar la operación. |
Comentarios
Puede construir información de tipo en tiempo de ejecución mediante CreateDispTypeInfo y una estructura INTERFACEDATA que describe el objeto que se expone.
La información de tipo devuelta por esta función está diseñada principalmente para automatizar la implementación de IDispatch. CreateDispTypeInfo no devuelve toda la información de tipo descrita en Interfaces de descripción de tipos. El argumento pidata no es una descripción completa de una interfaz. No incluye información de Ayuda, comentarios, parámetros opcionales y otra información de tipo que resulta útil en contextos diferentes.
En consecuencia, el método recomendado para proporcionar información de tipo sobre un objeto es describir el objeto mediante el lenguaje de descripción de objetos (ODL) y compilar la descripción del objeto en una biblioteca de tipos mediante el compilador del lenguaje de definición de interfaz de Microsoft (MIDL).
Para usar la información de tipos de una biblioteca de tipos, use las funciones LoadTypeLib y GetTypeInfoOfGuid en lugar de CreateDispTypeInfo. Para obtener más información , escriba interfaces de descripción.
Ejemplos
El código siguiente crea información de tipo de INTERFACEDATA para exponer el objeto CCalc.
static METHODDATA NEARDATA rgmdataCCalc[] =
{
PROPERTY(VALUE, IMETH_ACCUM, IDMEMBER_ACCUM, VT_I4),
PROPERTY(ACCUM, IMETH_ACCUM, IDMEMBER_ACCUM, VT_I4),
PROPERTY(OPND, IMETH_OPERAND, IDMEMBER_OPERAND, VT_I4),
PROPERTY(OP, IMETH_OPERATOR, IDMEMBER_OPERATOR, VT_I2),
METHOD0(EVAL, IMETH_EVAL, IDMEMBER_EVAL, VT_BOOL),
METHOD0(CLEAR, IMETH_CLEAR, IDMEMBER_CLEAR, VT_EMPTY),
METHOD0(DISPLAY, IMETH_DISPLAY, IDMEMBER_DISPLAY, VT_EMPTY),
METHOD0(QUIT, IMETH_QUIT, IDMEMBER_QUIT, VT_EMPTY),
METHOD1(BUTTON, IMETH_BUTTON, IDMEMBER_BUTTON, VT_BOOL),
};
INTERFACEDATA NEARDATA g_idataCCalc =
{
rgmdataCCalc, DIM(rgmdataCCalc)
};
// Use Dispatch interface API functions to implement IDispatch.
CCalc *
CCalc::Create()
{
HRESULT hresult;
CCalc * pcalc;
CArith * parith;
ITypeInfo * ptinfo;
IUnknown * punkStdDisp;
extern INTERFACEDATA NEARDATA g_idataCCalc;
if((pcalc = new 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 |