SetClipboardData 函数 (winuser.h)

将数据以指定的剪贴板格式放置在剪贴板上。 窗口必须是当前剪贴板所有者,并且应用程序必须已调用 OpenClipboard 函数。 (响应WM_RENDERFORMAT消息时,剪贴板所有者不得在调用 SetClipboardData.)

语法

HANDLE SetClipboardData(
  [in]           UINT   uFormat,
  [in, optional] HANDLE hMem
);

参数

[in] uFormat

类型: UINT

剪贴板格式。 此参数可以是注册格式或任何标准剪贴板格式。 有关详细信息,请参阅 标准剪贴板格式已注册的剪贴板格式

[in, optional] hMem

类型: HANDLE

指定格式的数据的句柄。 此参数可以为 NULL,表示窗口以指定的剪贴板格式提供数据, (请求时呈现格式) ;这称为 延迟呈现。 如果窗口延迟呈现,则必须处理 WM_RENDERFORMATWM_RENDERALLFORMATS 消息。

如果 SetClipboardData 成功,则系统拥有 由 hMem 参数标识的对象。 将所有权转让给系统后,应用程序可能不会写入或释放数据,但在调用 CloseClipboard 函数之前,应用程序可以锁定数据并从中读取数据。 (必须在关闭剪贴板之前解锁内存。) 如果 hMem 参数标识内存对象,则必须使用带有 GMEM_MOVEABLE 标志的 函数分配对象。

返回值

类型: HANDLE

如果函数成功,则返回值是数据的句柄。

如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。

注解

Windows 8: 要与 Windows 应用商店应用共享的位图必须采用与设备相关的 图) (CF_BITMAP格式。

如果应用程序调用 SetClipboardData 以响应 WM_RENDERFORMATWM_RENDERALLFORMATS,则调用 SetClipboardData 后,应用程序不应使用句柄。

如果应用程序调用 OpenClipboard 且 hwnd 设置为 NULL则 EmptyClipboard 会将剪贴板所有者设置为 NULL;这会导致 SetClipboardData 失败。

当应用程序调用 GetClipboardData 函数时,系统会在某些剪贴板格式之间执行隐式数据格式转换。 例如,如果 CF_OEMTEXT 格式位于剪贴板上,则窗口可以检索 CF_TEXT 格式的数据。 剪贴板上的格式将按需转换为请求的格式。 有关详细信息,请参阅 合成剪贴板格式

示例

有关示例,请参阅 将信息复制到剪贴板

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 在 Windows 8.1) 中引入的 ext-ms-win-ntuser-misc-l1-2-0 (

另请参阅

剪贴板

CloseClipboard

概念性

GetClipboardData

OpenClipboard

引用

RegisterClipboardFormat

WM_RENDERALLFORMATS

WM_RENDERFORMAT