Синтезированные форматы буфера обмена
Система неявно преобразует данные между некоторыми форматами буфера обмена: если окно запрашивает данные в формате, которого нет в буфере обмена, система преобразует доступный формат в затребованный формат. Система может преобразовать данные как обозначено в следующей ниже таблице.
Формат буфера обмена | Преобразованный формат | Поддерживающая платформа |
---|---|---|
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.