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


Функция SetClipboardData (winuser.h)

Помещает данные в буфер обмена в указанном формате буфера обмена. Окно должно быть текущим владельцем буфера обмена, а приложение должно вызывать функцию OpenClipboard . (При ответе на сообщение WM_RENDERFORMAT владелец буфера обмена не должен вызывать OpenClipboard перед вызовом SetClipboardData.)

Синтаксис

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

Параметры

[in] uFormat

Тип: UINT

Формат буфера обмена. Этот параметр может быть зарегистрированным или любым из стандартных форматов буфера обмена. Дополнительные сведения см. в разделах Стандартные форматы буфера обмена и Зарегистрированные форматы буфера обмена.

[in, optional] hMem

Тип: HANDLE

Дескриптор данных в указанном формате. Этот параметр может иметь значение NULL, указывая, что окно предоставляет данные в указанном формате буфера обмена (отображает формат) по запросу; это называется отложенной отрисовкой. Если окно задерживает отрисовку, оно должно обрабатывать WM_RENDERFORMAT и WM_RENDERALLFORMATS сообщения.

Если setClipboardData выполняется успешно, системе принадлежит объект, определяемый параметром hMem . Приложение не может записывать или освобождать данные после передачи права владения в систему, но оно может блокировать и считывать данные до вызова функции CloseClipboard . (Память должна быть разблокирована до закрытия буфера обмена.) Если параметр hMem идентифицирует объект памяти, объект должен быть выделен с помощью функции с флагом GMEM_MOVEABLE .

Возвращаемое значение

Тип: HANDLE

Если функция выполняется успешно, возвращается дескриптор данных.

Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Windows 8: Растровые изображения, к которым будет предоставлен общий доступ в приложения Магазина Windows, должны быть в формате CF_BITMAP (точечный рисунок, зависящий от устройства).

Если приложение вызывает SetClipboardData в ответ на WM_RENDERFORMAT или WM_RENDERALLFORMATS, приложение не должно использовать дескриптор после вызова SetClipboardData .

Если приложение вызывает OpenClipboard с hwnd, для параметра hwnd задано значение NULL, EmptyClipboard задает владельцу буфера обмена значение NULL; это приводит к сбою SetClipboardData .

Система выполняет неявное преобразование формата данных между определенными форматами буфера обмена, когда приложение вызывает функцию GetClipboardData . Например, если формат CF_OEMTEXT находится в буфере обмена, окно может получить данные в формате CF_TEXT . Формат в буфере обмена преобразуется в запрошенный формат по запросу. Дополнительные сведения см. в разделе Синтезированные форматы буфера обмена.

Примеры

Пример см. в разделе Копирование данных в буфер обмена.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-misc-l1-2-0 (представлено в Windows 8.1)

См. также раздел

Буфер обмена

CloseClipboard

Основные понятия

GetClipboardData

OpenClipboard

Справочные материалы

RegisterClipboardFormat

WM_RENDERALLFORMATS

WM_RENDERFORMAT