Поделиться через


Буфер обмена

буфер обмена — это набор функций и сообщений, позволяющих приложениям передавать данные. Так как все приложения имеют доступ к буферу обмена, данные можно легко передавать между приложениями или в приложении.

В этом обзоре не описывается копирование и вставка связанных или внедренных объектов. Дополнительные сведения об этих темах см. в документации по объектной модели компонентов (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 владелец буфера обмена не должен вызывать OpenClipboard перед вызовом SetClipboardData.)
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 Определяет формат рисунка метафайла, используемый для обмена данными метафайла через буфер обмена.