IOleObject::InitFromData 方法 (oleidl.h)

使用指定数据对象中的数据初始化新创建的对象,该对象可以驻留在同一容器中,也可以驻留在剪贴板上。

语法

HRESULT InitFromData(
  [in] IDataObject *pDataObject,
  [in] BOOL        fCreation,
  [in] DWORD       dwReserved
);

parameters

[in] pDataObject

指向要从中获取初始化数据的数据对象上的 IDataObject 接口的指针。 此参数可以为 NULL,表示调用方想知道是否值得尝试发送数据;也就是说,容器是否能够从传递给它的数据初始化对象。 要传递的数据对象可以基于容器文档中的当前选择,也可以基于从外部源传输到容器的数据。

[in] fCreation

TRUE 表示容器在自身内部插入新对象,并使用当前所选内容中的数据初始化该对象; FALSE 表示更常规的编程数据传输,最有可能来自当前所选内容以外的源。

[in] dwReserved

此参数是保留的,必须为零。

返回值

如果 pDataObject 不为 NULL,则此方法返回S_OK,该对象已成功尝试从提供的数据初始化自身;如果 pDataObjectNULL,则表示对象能够尝试成功初始化。。 其他可能的返回值包括以下内容。

返回代码 说明
S_FALSE
如果 pDataObject 不为 NULL,则对象不会尝试初始化自身;如果 pDataObjectNULL,则对象无法尝试从提供的数据初始化自身。
E_NOTIMPL
对象不支持 InitFromData
OLE_E_NOTRUNNING
对象未运行,因此无法执行该操作。

注解

此方法使容器文档能够在自身中插入一个新对象,该对象的内容基于容器中的当前数据选择。 例如,电子表格文档可能希望基于所选单元格区域中的数据创建图形对象。

使用此方法,容器还可以将嵌入对象的内容替换为从另一个源传输的数据。 这提供了更新嵌入对象的便捷方法。

调用方备注

初始化后,容器应调用 IOleObject::GetMiscStatus 以检查OLEMISC_INSERTNOTREPLACE位的值。 如果位处于打开状态,则新对象在所选数据之后插入自身。 如果位处于关闭状态,则新对象将替换所选数据。

实施者说明

容器通过将 TRUEFALSE 传递给 fCreation 参数来指定是否基于当前选定内容的新对象。

如果 fCreationTRUE,则容器将尝试创建对象的新实例,并使用数据对象指定的选定数据对其进行初始化。

如果 fCreationFALSE,则调用方尝试将对象的当前内容替换为 pDataObject 指向的内容。 粘贴操作期间应用于对象的常用约束应在此处应用。 例如,如果提供的数据类型不可接受,则 对象应无法初始化并返回S_FALSE。

如果对象返回S_FALSE,则无法从提供的数据中初始化自身。

要求

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

请参阅

IDataObject::SetData

IOleObject

IOleObject::GetMiscStatus