createStdDispatch 函数 (oleauto.h)
通过单个函数调用创建 IDispatch 接口的标准实现。 这简化了通过自动化公开对象。
语法
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
参数
punkOuter
对象的 IUnknown 实现。
pvThis
要公开的对象。
ptinfo
描述公开对象的类型信息。
ppunkStdDisp
实现 IDispatch 接口 QueryInterface 调用的 对象的私有未知。 如果函数失败,则此指针为 null。
返回值
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
前三个参数之一无效。 |
|
内存不足,无法完成操作。 |
注解
创建对象时,可以使用 CreateStdDispatch ,而不是为对象实现 IDispatch 成员函数。 但是, CreateStdDispatch 创建的实现具有以下限制:
- 仅支持一种国家/地区语言。
- 仅支持从 Invoke 返回的调度定义的异常代码。
LoadTypeLib、 GetTypeInfoOfGuid 和 CreateStdDispatch 构成了使用类型库公开对象时需要调用的最小函数集。 有关 LoadTypeLib 和 GetTypeInfoOfGuid 的详细信息,请参阅 类型说明接口。
CreateDispTypeInfo 和 CreateStdDispatch 构成了使用 INTERFACEDATA 结构提供的类型信息公开对象时需要调用的最小调度组件集。
示例
以下代码使用 CreateStdDispatch 实现 CCalc 类的 IDispatch 接口。
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 |
标头 | oleauto.h |
Library | OleAut32.lib |
DLL | OleAut32.dll |