Funzione CreateStdDispatch (oleauto.h)
Crea un'implementazione standard dell'interfaccia IDispatch tramite una singola chiamata di funzione. Ciò semplifica l'esposizione di oggetti tramite Automazione.
Sintassi
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
Parametri
punkOuter
Implementazione IUnknown dell'oggetto.
pvThis
Oggetto da esporre.
ptinfo
Informazioni sul tipo che descrivono l'oggetto esposto.
ppunkStdDisp
Oggetto sconosciuto privato per l'oggetto che implementa la chiamata QueryInterface dell'interfaccia IDispatch . Questo puntatore è Null se la funzione ha esito negativo.
Valore restituito
Questa funzione può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Uno dei primi tre argomenti non è valido. |
|
Memoria insufficiente per completare l'operazione. |
Commenti
È possibile usare CreateStdDispatch quando si crea un oggetto anziché implementare le funzioni membro IDispatch per l'oggetto. Tuttavia, l'implementazione creata da CreateStdDispatch presenta queste limitazioni:
- Supporta una sola lingua nazionale.
- Supporta solo i codici di eccezione definiti dalla distribuzione restituiti da Invoke.
LoadTypeLib, GetTypeInfoOfGuid e CreateStdDispatch costituiscono il set minimo di funzioni che è necessario chiamare per esporre un oggetto usando una libreria dei tipi. Per altre informazioni su LoadTypeLib e GetTypeInfoOfGuid, vedere Interfacce di descrizione dei tipi.
CreateDispTypeInfo e CreateStdDispatch costituiscono il set minimo di componenti dispatch che è necessario chiamare per esporre un oggetto usando le informazioni sul tipo fornite dalla struttura INTERFACEDATA.
Esempio
Il codice seguente implementa l'interfaccia IDispatch per la classe CCalc usando 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;
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | oleauto.h |
Libreria | OleAut32.lib |
DLL | OleAut32.dll |