OleFlushClipboard 函数 (ole2.h)

执行剪贴板关闭序列。 它还释放由 OleSetClipboard 函数放置在剪贴板上的 IDataObject 指针。

语法

HRESULT OleFlushClipboard();

返回值

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

返回代码 说明
CLIPBRD_E_CANT_OPEN
在 OleFlushClipboard 中使用的 Windows OpenClipboard 函数失败。
CLIPBRD_E_CANT_CLOSE
在 OleFlushClipboard 中使用的 Windows CloseClipboard 函数失败。

注解

OleFlushClipboard 将数据对象中的数据呈现到剪贴板上,并释放指向数据对象的 IDataObject 指针。 当将数据对象放入剪贴板的应用程序正在运行时,剪贴板仅保留指向数据对象的指针,从而节省内存。 如果要编写充当剪贴板操作源的应用程序,则可以在应用程序关闭时调用 OleFlushClipboard 函数,例如当用户退出应用程序时。 调用 OleFlushClipboard 可在应用程序关闭后粘贴和粘贴 OLE 对象。

在调用 OleFlushClipboard 之前,可以通过调用 OleIsCurrentClipboard 函数轻松确定数据是否仍在剪贴板上。

OleFlushClipboard 将数据传输对象提供的所有格式(包括 OLE 1 兼容性格式)保留在剪贴板上,以便在应用程序关闭后可用。 除了 OLE 1 兼容性格式外,这些格式还包括全局句柄媒体上提供的所有格式, (除TYMED_FILE) 和格式化为 NULL 目标设备之外的所有格式。 例如,如果数据源应用程序提供特定的剪贴板格式 (iStorage 对象上说 cfFOO) ,并调用 OleFlushClipboard 函数,则存储对象将复制到内存中,并将 hglobal 内存句柄放在剪贴板上。

若要检索剪贴板上的信息,可以从另一个应用程序调用 OleGetClipboard 函数,这将创建默认数据对象,剪贴板中的 hglobal 再次成为存储对象。 此外, FORMATETC 枚举器和 IDataObject::QueryGetData 方法将正确指示原始剪贴板格式 (cfFOO) 再次可用于TYMED_ISTORAGE。

若要清空剪贴板,请调用 OleSetClipboard 函数,为其参数指定 NULL 值。 如果关闭后无需将数据保留在剪贴板上,或者使用标准 Windows 剪贴板函数将数据放置在剪贴板上,应用程序在关闭时应调用它。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ole2.h
Library Ole32.lib
DLL Ole32.dll
API 集 Windows 10版本 10.0.15063 中引入的 ext-ms-win-com-ole32-l1-1-5 ()

另请参阅

IDataObject

OleGetClipboard

OleIsCurrentClipboard

OleSetClipboard