IOleClientSite::GetMoniker 方法 (oleidl.h)

检索对象的客户端站点的名称对象。 对象可以通过为 dwAssign 指定值来强制分配其自己的或容器的名称对象。

语法

HRESULT GetMoniker(
  [in]  DWORD    dwAssign,
  [in]  DWORD    dwWhichMoniker,
  [out] IMoniker **ppmk
);

参数

[in] dwAssign

指定是否仅在名字对象已存在时才获取名字对象、强制分配名字对象、创建临时名字对象或删除已分配的名字对象。 实际上,通常会请求容器强制分配名字对象。 可能的值取自 OLEGETMONIKER 枚举。

[in] dwWhichMoniker

指定是返回容器的名字对象、相对于容器的对象名字对象还是对象的完整名字对象。 实际上,通常会请求对象的完整名字对象。 可能的值取自 OLEWHICHMK 枚举。

[out] ppmk

指向 IMoniker 指针变量的指针,该变量接收指向对象客户端站点名字对象的接口指针。 如果发生错误,实现必须将 ppmk 设置为 NULL。 每次容器收到对 IOleClientSite::GetMoniker 的调用时,它都必须增加它返回的 ppmk 指针上的引用计数。 调用方负责在完成指针时调用 Release

返回值

此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。

返回代码 说明
E_NOTIMPL
此容器无法将名字对象分配给对象。 OLE 1 容器就是这种情况。

注解

容器实现 GetMoniker 是将其嵌入对象的名字对象传递给需要链接到这些对象的客户端的一种方式。

当链接到嵌入对象或其中伪对象时, (电子表格中的单元格区域(例如) ),该对象需要一个名字对象来构造指示链接源的复合名字对象。 如果嵌入对象还没有名字对象,它可以调用 GetMoniker 来请求一个名字对象。

每个预期包含嵌入链接的容器都应支持 GetMoniker 发出OLEWHICHMK_CONTAINER,从而在链接客户端和链接源文件移动时启用链接跟踪,但保持相同的相对位置。

对象不得持久存储其完整名字对象或其容器的名称对象,因为这些对象在未加载时可能会更改。 例如,可以重命名容器或对象,在这种情况下,存储容器的名字对象或对象的完整名字对象会使客户端无法跟踪指向对象的链接。

在某些非常特殊的情况下,对象可能不再需要以前分配给它的名字对象,并且可能希望将其作为优化删除。 在这种情况下,对象可以使用 OLEGETMONIKER_UNASSIGN 调用 GetMoniker 以删除名字对象。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 oleidl.h

另请参阅

IOleClientSite

IOleClientSite::GetMoniker

IOleObject::SetMoniker