Функция CreateStdDispatch (oleauto.h)
Создает стандартную реализацию интерфейса IDispatch с помощью одного вызова функции. Это упрощает предоставление объектов с помощью автоматизации.
Синтаксис
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
Параметры
punkOuter
Реализация объекта IUnknown .
pvThis
Объект для предоставления.
ptinfo
Сведения о типе, описывающие предоставленный объект.
ppunkStdDisp
Частная неизвестная для объекта, реализующего вызов QueryInterface интерфейса IDispatch . Этот указатель имеет значение NULL, если функция завершается сбоем.
Возвращаемое значение
Эта функция может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Один из первых трех аргументов недопустим. |
|
Недостаточно памяти для завершения операции. |
Комментарии
CreateStdDispatch можно использовать при создании объекта вместо реализации функций-членов IDispatch для объекта . Однако реализация, которую создает CreateStdDispatch , имеет следующие ограничения:
- Поддерживает только один национальный язык.
- Поддерживает только коды исключений, определяемые диспетчером, возвращаемые командой Invoke.
LoadTypeLib, GetTypeInfoOfGuid и CreateStdDispatch составляют минимальный набор функций, которые необходимо вызвать для предоставления объекта с помощью библиотеки типов. Дополнительные сведения о LoadTypeLib и GetTypeInfoOfGuid см. в разделе Интерфейсы описания типов.
CreateDispTypeInfo и CreateStdDispatch составляют минимальный набор компонентов диспетчеризации, которые необходимо вызвать для предоставления объекта с использованием сведений о типе, предоставляемых структурой INTERFACEDATA.
Примеры
Следующий код реализует интерфейс IDispatch для класса CCalc с помощью 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;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | oleauto.h |
Библиотека | OleAut32.lib |
DLL | OleAut32.dll |