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。
返回代码 | 说明 |
---|---|
|
操作的内存不足。 |
注解
OleCreate 函数创建一个新的嵌入对象,通常调用 它来实现菜单项“插入新对象”。 当 OleCreate 返回时,它创建的对象为空白, (不包含任何数据) ,除非 renderopt 已OLERENDER_DRAW或OLERENDER_FORMAT,并且已加载。 然后,容器通常会调用 OleRun 函数或 IOleObject::D oVerb 以显示对象以供初始编辑。
rclsid 参数指定所请求对象的 CLSID。 已注册对象的 CLSD 存储在系统注册表中。 当应用程序用户选择“插入对象”时,选择框允许用户从注册表中的对象中选择所需的对象类型。 使用 OleCreate 实现“插入对象”菜单项时,与所选项关联的 CLSID 将分配给 OleCreate 的 rclsid 参数。
riid 参数指定客户端将用于与新对象通信的接口。 成功返回后, ppvObject 参数将保留指向所请求接口的指针。
创建的 对象的缓存包含允许在打开容器时呈现包含对象的信息。 有关应缓存的内容的信息在 renderopt 和 pFormatetc 值中传递。 当 OleCreate 返回时,不一定填充所创建对象的缓存。 而是在对象首次进入运行状态时填充缓存。 调用方可以在返回 OleCreate 之后和对象运行之前通过调用 IOleCache::Cache 添加其他缓存控件。 如果 renderopt OLERENDER_DRAW或OLERENDER_FORMAT, 则 OleCreate 要求对象支持 IOleCache 接口。 对于 renderopt 的任何其他值,没有此类要求。
如果 pClientSite 为非 NULL,则 OleCreate 通过 pClientSite 指针调用 IOleObject::SetClientSite。 IOleClientSite 是对象从其容器请求服务的主要接口。 如果 pClientSite 为 NULL,则必须在尝试任何操作之前对 IOleObject::SetClientSite 进行特定的调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ole2.h (包括 Ole2.h) |
Library | Ole32.lib |
DLL | Ole32.dll |