Синтезированные форматы буфера обмена

Система неявно преобразует данные между некоторыми форматами буфера обмена: если окно запрашивает данные в формате, которого нет в буфере обмена, система преобразует доступный формат в затребованный формат. Система может преобразовать данные как обозначено в  следующей ниже таблице.

Формат буфера обмена Преобразованный формат Поддерживающая платформа
CF_BITMAP CF_DIB Microsoft Windows NT®/Windows 2000, Windows 95/Windows 98/Windows Millennium Edition (Windows Me) 
CF_BITMAP CF_DIBV5 Windows 2000/XP 
CF_DIB CF_BITMAP Windows NT/Windows 2000, Windows 95/Windows 98/Windows Me 
CF_DIB CF_PALETTE Windows NT/Windows 2000, Windows 95/Windows 98/Windows Me 
CF_DIB CF_DIBV5 Windows 2000 
CF_DIBV5 CF_BITMAP Windows 2000 
CF_DIBV5 CF_DIB Windows 2000 
CF_DIBV5 CF_PALETTE Windows 2000 
CF_ENHMETAFILE CF_METAFILEPICT Windows NT/Windows 2000, Windows 95/Windows 98/Windows Me 
CF_METAFILEPICT CF_ENHMETAFILE Windows NT/Windows 2000, Windows 95/Windows 98/Windows Me 
CF_OEMTEXT CF_TEXT Windows NT/Windows 2000, Windows 95/Windows 98/Windows Me 
CF_OEMTEXT CF_UNICODETEXT Windows NT/Windows 2000 
CF_TEXT CF_OEMTEXT Windows NT/Windows 2000, Windows 95/Windows 98/Windows Me 
CF_TEXT CF_UNICODETEXT Windows NT/Windows 2000 
CF_UNICODETEXT CF_OEMTEXT Windows NT/Windows 2000 
CF_UNICODETEXT CF_TEXT Windows NT/Windows 2000 

Если система предусматривает автоматическое преобразование типов для конкретного формата буфера обмена, нет никакой пользы от размещения конверсионного формата(ов) в буфере обмена.

Если система предусматривает автоматическое преобразование типов для конкретного формата буфера обмена, и Вы вызываете функцию  EnumClipboardFormats, чтобы перечислить форматы данных буфера, система сначала перечисляет форматы, которые принадлежат буферу обмена, а далее форматы, в которые их можно преобразовать.

Когда копируются точечные рисунки, их лучше помещать в буфер обмена в формате CF_DIB или  CF_DIBV5 . Это должно быть так потому, что цвета в зависимом от устройства точечном рисунке (CF_BITMAP) определяются относительно системной палитры, которая может измениться прежде, чем точечный рисунок будет вставлен. Если форматы CF_DIB или  CF_DIBV5 принадлежат буферу обмена и окно запрашивает формат CF_BITMAP, тогда система формирует изображение не зависящим от устройства точечным рисунком  (DIB), используя текущую палитру.

Если Вы помещаете формат CF_BITMAP в буфер обмена (а не CF_DIB), система формирует изображение форматом буфера обмена CF_DIB или CF_DIBV5 , как только буфер будет закрыт. Это гарантирует то, что будет использована правильная палитра  для создания аппаратно-независимой точечной картинки (DIB). Если Вы помещаете в буфере обмена формат CF_DIBV5 с растровой информацией о цветовом пространстве, система преобразует растровые биты рисунка из растрового цветового пространства в sRGB цветовое пространство, когда затребованы форматы CF_DIB или CF_DIBV5 . Если CF_DIBV5 затребован тогда, когда в буфере обмена нет никакой информации о цветовом пространстве, система возвращает  информацию о цветовом пространстве sRGB  в структуре BITMAPV5HEADER. Преобразования между другими форматами буфера обмена происходят после запроса.

Если буфер обмена содержит данные в формате CF_PALETTE, приложение  должно использовать функции SelectPalette и RealizePalette, чтобы реализовать любые другие данные в буфере вместо этой логической палитры.

Есть два формата буфера обмена для метафайлов: CF_ENHMETAFILE и CF_METAFILEPICT. Установите CF_ENHMETAFILE для расширенных метафайлов и CF_METAFILEPICT для метафайлов Windows.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz