Функция 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) |
См. также раздел
Основные понятия
Справочные материалы