剪贴板

剪贴板 是一组函数和消息,使应用程序能够传输数据。 由于所有应用程序都可以访问剪贴板,因此可以在应用程序之间或应用程序中轻松传输数据。

本概述不介绍如何复制和粘贴链接的对象或嵌入对象。 有关这些主题的信息,请参阅组件对象模型 (COM) 文档。

本部分内容

以下主题提供有关剪贴板、剪贴板格式、剪贴板作和剪贴板消息的信息。 API 引用包含可用于处理剪贴板的函数和消息。

名字 描述
关于剪贴板 讨论剪贴板。
剪贴板格式 讨论剪贴板格式。 一个窗口可以在剪贴板上放置多个对象,每个对象都以不同的剪贴板格式表示相同的信息。 用户无需注意剪贴板上对象所用的剪贴板格式。
剪贴板作 讨论剪贴板作。 在剪切、复制或粘贴数据时,窗口应使用剪贴板。 窗口在剪贴板上放置用于剪切和复制作的数据,并从剪贴板中检索用于粘贴作的数据。
HTML 剪贴板格式 讨论 HTML 剪贴板格式。
使用剪贴板 剪贴板查看器窗口显示剪贴板的当前内容,并在剪贴板内容更改时接收消息。
剪贴板参考 包含 API 参考。

剪贴板函数

下表列出了可用于处理剪贴板的函数:

名字 描述
AddClipboardFormatListener 将给定窗口置于系统维护的剪贴板格式侦听器列表中。
ChangeClipboardChain 从剪贴板查看器链中删除指定的窗口。
CloseClipboard 关闭剪贴板。
CountClipboardFormats 检索剪贴板上当前不同数据格式的数量。
EmptyClipboard 清空剪贴板并释放剪贴板中的数据句柄。 然后,该函数将剪贴板的所有权分配给当前打开剪贴板的窗口。
EnumClipboardFormats 枚举剪贴板上当前可用的数据格式。 剪贴板数据格式存储在有序列表中。 若要执行剪贴板数据格式的枚举,请对 EnumClipboardFormats 函数进行一系列调用。 对于每个调用,格式 参数指定可用的剪贴板格式,该函数返回下一个可用的剪贴板格式。
GetClipboardData 以指定格式从剪贴板中检索数据。 剪贴板之前必须已打开。
GetClipboardFormatName 从剪贴板中检索指定注册格式的名称。 该函数将名称复制到指定的缓冲区。
GetClipboardOwner 检索剪贴板当前所有者的窗口句柄。
GetClipboardSequenceNumber 检索当前窗口工作站的剪贴板序列号。
GetClipboardViewer 检索剪贴板查看器链中第一个窗口的句柄。
GetOpenClipboardWindow 检索当前打开剪贴板的窗口的句柄。
GetPriorityClipboardFormat 检索指定列表中的第一个可用剪贴板格式。
GetUpdatedClipboardFormats 检索当前支持的剪贴板格式。
IsClipboardFormatAvailable 确定剪贴板是否包含指定格式的数据。
OpenClipboard 打开剪贴板进行检查,并阻止其他应用程序修改剪贴板内容。
RegisterClipboardFormat 注册新的剪贴板格式。 然后,此格式可用作有效的剪贴板格式。
RemoveClipboardFormatListener 从系统维护的剪贴板格式侦听器列表中删除给定窗口。
SetClipboardData 以指定的剪贴板格式将数据置于剪贴板上。 窗口必须是当前剪贴板所有者,应用程序必须调用 OpenClipboard 函数。 (响应 WM_RENDERFORMAT 消息时,剪贴板所有者在调用 SetClipboardData 之前不得调用 OpenClipboard
SetClipboardViewer 将指定的窗口添加到剪贴板查看器链中。 每当剪贴板内容发生更改时,剪贴板查看器窗口都会收到 WM_DRAWCLIPBOARD 消息。

剪贴板消息

下表列出了发送到剪贴板查看器窗口的消息:

名字 描述
WM_CLEAR 发送到编辑控件或组合框,以从编辑控件中删除当前所选内容(如果有)。
WM_COPY 发送到编辑控件或组合框,以 CF_TEXT 格式将当前选择复制到剪贴板。
WM_CUT 发送到编辑控件或组合框以删除(剪切)当前所选内容(如果有),并在编辑控件中以 CF_TEXT 格式将已删除的文本复制到剪贴板。
WM_PASTE 发送到编辑控件或组合框,将剪贴板的当前内容复制到当前插入点位置的编辑控件。 仅当剪贴板包含 CF_TEXT 格式的数据时,才会插入数据。

剪贴板通知

下表列出了发送到剪贴板查看器窗口的剪贴板通知消息:

名字 描述
WM_ASKCBFORMATNAME 通过剪贴板查看器窗口发送到剪贴板所有者,以请求 CF_OWNERDISPLAY 剪贴板格式的名称。
WM_CHANGECBCHAIN 从链中删除窗口时,发送到剪贴板查看器链中的第一个窗口。
WM_CLIPBOARDUPDATE 当剪贴板的内容发生更改时发送。
WM_DESTROYCLIPBOARD 在调用 EmptyClipboard 函数清空剪贴板时,剪贴板所有者会被发送通知。
WM_DRAWCLIPBOARD 当剪贴板内容发生更改时,发送到剪贴板查看器链中的第一个窗口。 这使剪贴板查看器窗口能够显示剪贴板的新内容。
WM_HSCROLLCLIPBOARD 通过剪贴板查看器窗口发送到剪贴板所有者。 当剪贴板包含 CF_OWNERDISPLAY 格式的数据,并且剪贴板查看器的水平滚动条中发生事件时,会出现这种情况。 所有者应滚动剪贴板图像并更新滚动条值。
WM_PAINTCLIPBOARD 当剪贴板包含 CF_OWNERDISPLAY 格式的数据,并且剪贴板查看器的客户区需要重新绘制时,这条消息从剪贴板查看器窗口发送给剪贴板所有者。
WM_RENDERALLFORMATS 如果剪贴板所有者延迟呈现一个或多个剪贴板格式,则将其发送到剪贴板所有者,然后再将其销毁。 若要使剪贴板的内容可供其他应用程序使用,剪贴板所有者必须以能够生成的所有格式呈现数据,并通过调用 SetClipboardData 函数将数据放置在剪贴板上。
WM_RENDERFORMAT 如果剪贴板所有者延迟呈现特定剪贴板格式,并且应用程序已请求该格式的数据,则将其发送到剪贴板所有者。 剪贴板所有者必须以指定的格式呈现数据,并通过调用 SetClipboardData 函数将其置于剪贴板上。
WM_SIZECLIPBOARD 当剪贴板包含 CF_OWNERDISPLAY 格式的数据,并且剪贴板查看器的客户端区域已更改大小时,剪贴板查看器窗口会将信息发送到剪贴板所有者。
WM_VSCROLLCLIPBOARD 当剪贴板包含 CF_OWNERDISPLAY 格式的数据并且剪贴板查看器的垂直滚动条中发生事件时,剪贴板查看器窗口会向剪贴板所有者发送通知。 所有者应滚动剪贴板图像并更新滚动条值。

结构

下表列出了与剪贴板一起使用的结构:

名字 描述
METAFILEPICT 定义用于通过剪贴板交换图元文件数据的图元文件图片格式。