OleCreate 函数 (ole2.h)

创建由 CLSID 标识的嵌入对象。 通常使用它来实现允许最终用户插入新对象的菜单项。

语法

HRESULT OleCreate(
  [in]  REFCLSID        rclsid,
  [in]  REFIID          riid,
  [in]  DWORD           renderopt,
  [in]  LPFORMATETC     pFormatEtc,
  [in]  LPOLECLIENTSITE pClientSite,
  [in]  LPSTORAGE       pStg,
  [out] LPVOID          *ppvObj
);

参数

[in] rclsid

要创建的嵌入对象的 CLSID。

[in] riid

对接口标识符的引用,通常IID_IOleObject (OLE 标头中定义为 IOleObject) 的接口标识符,调用方将通过该标识符与新对象进行通信。

[in] renderopt

枚举 OLERENDER 中的一个值,指示新创建的对象要具有的本地缓存绘图功能。 选择的 OLERENDER 值会影响 pFormatEtc 参数的可能值。

[in] pFormatEtc

根据哪个 OLERENDER 标志用作 renderopt 的值,指向 FORMATETC 枚举值之一的指针。 有关限制,请参阅 OLERENDER 枚举。 此参数与 renderopt 参数一起指定新对象最初可以缓存的内容。

[in] pClientSite

如果希望 OleCreate 调用 IOleObject::SetClientSite,则指向容器上的 IOleClientSite 接口的指针。 该值可以为 NULL,在这种情况下,必须在尝试操作之前专门调用 IOleObject::SetClientSite

[in] pStg

指向存储对象上 IStorage 接口实例的指针。 此参数不能为 NULL

[out] ppvObj

接收 riid 中请求的接口指针的指针变量的地址。 成功返回后,*ppvObject 包含请求的接口指针。

返回值

此函数在成功时返回S_OK,并支持标准返回值E_OUTOFMEMORY。

返回代码 说明
E_OUTOFMEMORY
操作的内存不足。

注解

OleCreate 函数创建一个新的嵌入对象,通常调用 它来实现菜单项“插入新对象”。 当 OleCreate 返回时,它创建的对象为空白, (不包含任何数据) ,除非 renderopt 已OLERENDER_DRAW或OLERENDER_FORMAT,并且已加载。 然后,容器通常会调用 OleRun 函数或 IOleObject::D oVerb 以显示对象以供初始编辑。

rclsid 参数指定所请求对象的 CLSID。 已注册对象的 CLSD 存储在系统注册表中。 当应用程序用户选择“插入对象”时,选择框允许用户从注册表中的对象中选择所需的对象类型。 使用 OleCreate 实现“插入对象”菜单项时,与所选项关联的 CLSID 将分配给 OleCreate 的 rclsid 参数。

riid 参数指定客户端将用于与新对象通信的接口。 成功返回后, ppvObject 参数将保留指向所请求接口的指针。

创建的 对象的缓存包含允许在打开容器时呈现包含对象的信息。 有关应缓存的内容的信息在 renderoptpFormatetc 值中传递。 当 OleCreate 返回时,不一定填充所创建对象的缓存。 而是在对象首次进入运行状态时填充缓存。 调用方可以在返回 OleCreate 之后和对象运行之前通过调用 IOleCache::Cache 添加其他缓存控件。 如果 renderopt OLERENDER_DRAW或OLERENDER_FORMAT, 则 OleCreate 要求对象支持 IOleCache 接口。 对于 renderopt 的任何其他值,没有此类要求。

如果 pClientSite 为非 NULL则 OleCreate 通过 pClientSite 指针调用 IOleObject::SetClientSiteIOleClientSite 是对象从其容器请求服务的主要接口。 如果 pClientSiteNULL,则必须在尝试任何操作之前对 IOleObject::SetClientSite 进行特定的调用。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ole2.h (包括 Ole2.h)
Library Ole32.lib
DLL Ole32.dll

另请参阅

FORMATETC

IOleClientSite

IOleObject

OLERENDER