Буфер обмена. Добавление других форматов
В этом разделе объясняется, как развернуть список поддерживаемых форматов, особенно для поддержки OLE. Раздел Буфер обмена: копирование и вставка данных описывает минимальную реализацию, необходимую для поддержки копирования и вставки из буфера обмена. Если это все, что вы реализуете, единственными форматами, размещенными в буфере обмена, являются CF_METAFILEPICT, CF_EМБ EDSOURCE, CF_OBJECTDESCRIPTOR и, возможно, CF_LINKSOURCE. Большинству приложений потребуется больше форматов в буфере обмена, чем эти три.
Регистрация пользовательских форматов
Чтобы создать собственные настраиваемые форматы, выполните ту же процедуру, что и при регистрации любого пользовательского формата буфера обмена: передайте имя формата в функцию RegisterClipboardFormat и используйте его возвращаемое значение в качестве идентификатора формата.
Размещение форматов в буфере обмена
Чтобы добавить дополнительные форматы в буфер обмена, необходимо переопределить OnGetClipboardData
функцию в классе, производном от одного COleClientItem
или COleServerItem
(в зависимости от того, копируются ли данные в собственном коде). В этой функции следует использовать следующую процедуру.
Размещение форматов в буфере обмена
Создание объекта
COleDataSource
.Передайте этот источник данных в функцию, которая добавляет собственные форматы данных в список поддерживаемых форматов путем вызова
COleDataSource::CacheGlobalData
.Добавьте стандартные форматы, вызывая
COleDataSource::CacheGlobalData
каждый стандартный формат, который требуется поддерживать.
Этот метод используется в примере программы OLE MFC HIERSVR (изучите OnGetClipboardData
функцию-член класса CServerItem ). Единственное различие в этом примере заключается в том, что шаг 3 не реализован, так как HIERSVR не поддерживает другие стандартные форматы.