iTypeComp::Bind 方法 (oaidl.h)

将名称映射到类型的成员,或者绑定类型库中包含的全局变量和函数。

语法

HRESULT Bind(
  [in]  LPOLESTR  szName,
  [in]  ULONG     lHashVal,
  [in]  WORD      wFlags,
  [out] ITypeInfo **ppTInfo,
  [out] DESCKIND  *pDescKind,
  [out] BINDPTR   *pBindPtr
);

参数

[in] szName

要绑定的名称。

[in] lHashVal

由 LHashValOfNameSys 计算的名称的哈希值。

[in] wFlags

INVOKEKIND 枚举中定义的一个或多个标志。 指定名称是作为方法引用还是作为属性引用。 绑定到变量时,请INVOKE_PROPERTYGET指定标志。 指定零以绑定到任何类型的成员。

[out] ppTInfo

如果返回了 FUNCDESC 或 VARDESC,则 ppTInfo 指向指向类型说明的指针,该说明包含它绑定到的项。

[out] pDescKind

指示绑定到 的名称是 VARDESC、FUNCDESC 还是 TYPECOMP。 如果没有匹配项,DESCKIND_NONE。

[out] pBindPtr

绑定到 VARDESC、FUNCDESC 或 ITypeComp 接口。

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK
成功。
E_INVALIDARG
一个或多个参数无效。
E_OUTOFMEMORY
内存不足,无法完成操作。

注解

使用 Bind 绑定到类型的变量和方法,或绑定到类型库中的全局变量和方法。 返回的 DESCKIND 指针 pDescKind 指示名称是绑定到 VARDESC、FUNCDESC 还是 绑定到 ITypeComp 实例。 返回的 pBindPtr 指向 VARDESC、FUNCDESC 或 ITypeComp

如果数据成员或方法绑定到 ,则 ppTInfopoints 到包含该方法或数据成员的类型说明。

如果 Bind 将名称绑定到嵌套绑定上下文,它将返回指向 pBindPtrITypeComp 实例的指针和 ppTInfo 中的 null 类型说明指针。 例如,如果为模块传递类型说明的名称 (TKIND_MODULE) 、枚举 (TKIND_ENUM) 或 coclass (TKIND_COCLASS) ,则 Bind 将返回模块、枚举或 coclass 的类型说明 的 ITypeComp 实例。 此功能支持 Visual Basic 等语言,这些语言允许通过类型说明的名称限定对类型说明成员的引用。 例如,模块中的函数可以通过 modulename 引用。functionname。

标记为 Application 对象的 TKIND_ENUM、TKIND_MODULE 和 TKIND_COCLASS 类型的成员可以直接从 ITypeComp 绑定到 ,而无需指定模块的名称。 coclass 的 ITypeComp 遵循其默认接口的 ITypeComp

ITypeCompITypeInfoITypeInfo 的其他方法一样,调用代码负责释放返回的对象实例或结构。 如果返回 VARDESC 或 FUNCDESC,则调用方负责使用返回的类型说明将其删除并释放类型说明实例本身。 否则,如果返回 ITypeComp 实例,调用方必须释放它。

如果调用类型库的 Bind 方法,将 Application 对象类的成员的名称传递给 () 设置了TYPEFLAG_FAPPOBJECT标志的类,则适用特殊规则。 在本例中,Bind 返回 pDescKind 中的DESCKIND_IMPLICITAPPOBJ、描述 pBindPtr 中的 Application 对象的 VARDESC 和 ppTInfo 中 Application 对象类的 ITypeInfo。 若要绑定到对象,ITypeInfo::GetTypeComp 必须调用 以获取 Application 对象类的 ITypeComp,然后使用最初传递给类型库的 ITypeComp 的名称重新调用其 Bind 方法。

调用方应使用返回的 ITypeInfo 指针 (ppTInfo) 来获取成员的地址。

注意wflags 参数与 IDispatch::Invoke 中的 wflags 参数相同。
 

要求

要求
目标平台 Windows
标头 oaidl.h

另请参阅

ITypeComp