CreateDispTypeInfo
Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]
Vereinfachte Typinformationen für die Verwendung erstellt in einer Implementierung von IDispatch.
HRESULT CreateDispTypeInfo(
INTERFACEDATA pidata,
LCID lcid,
ITypeInfo FAR* FAR* pptinfo
);
Parameter
pidata
Die Schnittstellenbeschreibung, die diesem Typ beschreibt.LCID
Der Gebietsschemabezeichner für die Namen in die Typinformationen verwendet.pptinfo
Für return, Zeiger auf eine Art Informationen Implementierung für die Verwendung in DispGetIDsOfNames und DispInvoke.
Rückgabewert
Der Rückgabewert vom zurückgegebenen HRESULT ist eine der folgenden:
Rückgabewert |
Bedeutung |
---|---|
S_OK |
Die Schnittstelle wird unterstützt. |
E_INVALIDARG |
Die Schnittstellenbeschreibung oder die LCID ist ungültig. |
E_OUTOFMEMORY |
Unzureichender Arbeitsspeicher oder nicht genügend Speicherplatz. |
Kommentare
Sie können die Typinformationen zur Laufzeit erstellen, mithilfe von CreateDispTypeInfo und ein INTERFACEDATA-Struktur, die das Objekt verfügbar gemacht werden beschreibt.
Die Typinformationen von dieser Funktion zurückgegebene dient in erster Linie die Implementierung von IDispatch automatisieren. CreateDispTypeInfo zurück keine aller in Typ Beschreibung Schnittstellen beschriebenen Typinformationen. Das Argument Pidata ist keine vollständige Beschreibung einer Schnittstelle. Es schließt nicht Hilfe Informationen, Kommentare, optionale Parameter und anderer Typinformationen, die in verschiedenen Kontexten nützlich ist.
Dementsprechend ist die empfohlene Methode zum Bereitstellen der Typinformationen über ein Objekt beschreiben Sie das Objekt mit ODL (Object Description Language) und der Objektbeschreibung in einen Typ Bibliothek mit Microsoft Interface Definition Language (MIDL) Compiler kompilieren.
Typinformationen aus einen Typ Bibliothek verwenden möchten, verwenden Sie die LoadTypeLibGetTypeInfoOfGuid Funktionen und anstelle von CreateDispTypeInfo. Für Weitere Informationen Typ Beschreibung Schnittstellen.
Beispiel
Der Code, der folgt erstellt Typinformationen von INTERFACEDATA CCalc-Objekt verfügbar gemacht.
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 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;
}