Функция OleFlushClipboard (ole2.h)

Выполняет последовательность завершения работы буфера обмена. Он также освобождает указатель IDataObject , который был помещен в буфер обмена функцией OleSetClipboard .

Синтаксис

HRESULT OleFlushClipboard();

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

Эта функция возвращает S_OK об успешном выполнении. Ниже перечислены другие возможные значения.

Код возврата Описание
CLIPBRD_E_CANT_OPEN
Сбой функции Windows OpenClipboard, используемой в OleFlushClipboard .
CLIPBRD_E_CANT_CLOSE
Сбой функции Windows CloseClipboard, используемой в OleFlushClipboard .

Комментарии

OleFlushClipboard отображает данные из объекта данных в буфер обмена и освобождает указатель IDataObject на объект данных. Пока приложение, помещающее объект данных в буфер обмена, работает, буфер обмена содержит только указатель на объект данных, тем самым экономя память. Если вы пишете приложение, которое выступает в качестве источника операции с буфером обмена, можно вызвать функцию OleFlushClipboard при закрытии приложения, например при выходе пользователя из приложения. Вызов OleFlushClipboard позволяет вставлять и вставлять привязки объектов OLE после завершения работы приложения.

Перед вызовом OleFlushClipboard можно легко определить, остаются ли данные в буфере обмена, с помощью вызова функции OleIsCurrentClipboard .

OleFlushClipboard оставляет все форматы, предлагаемые объектом передачи данных, включая форматы совместимости OLE 1, в буфере обмена, чтобы они были доступны после завершения работы приложения. Помимо форматов совместимости OLE 1, к ним относятся все форматы, предлагаемые на глобальном носителе дескриптора (все, кроме TYMED_FILE) и отформатированные с помощью целевого устройства NULL . Например, если приложение источника данных предлагает определенный формат буфера обмена (например, cfFOO) для объекта IStorage и вызывает функцию OleFlushClipboard , объект хранилища копируется в память, а дескриптор hglobal памяти помещается в буфер обмена.

Чтобы получить сведения из буфера обмена, можно вызвать функцию OleGetClipboard из другого приложения, которое создает объект данных по умолчанию, а hglobal из буфера обмена снова становится объектом хранилища. Кроме того, перечислитель FORMATETC и метод IDataObject::QueryGetData правильно указывают на то, что исходный формат буфера обмена (cfFOO) снова доступен на TYMED_ISTORAGE.

Чтобы очистить буфер обмена, вызовите функцию OleSetClipboard , указав значение NULL для ее параметра. Приложение должно вызывать его при закрытии, если нет необходимости оставлять данные в буфере обмена после завершения работы или если данные будут помещены в буфер обмена с помощью стандартных функций буфера обмена Windows.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ole2.h
Библиотека Ole32.lib
DLL Ole32.dll
Набор API ext-ms-win-com-ole32-l1-1-5 (представлен в Windows 10 версии 10.0.15063)

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

Idataobject

OleGetClipboard

OleIsCurrentClipboard

OleSetClipboard