Portapapeles: Agregar otros formatos
En este tema se explica cómo expandir la lista de formatos admitidos, especialmente para la compatibilidad con OLE. En el tema Portapapeles: Copiado y pegado de datos se describe la implementación mínima necesaria para admitir la copia y el pegado desde el Portapapeles. Si esto es todo lo que implementa, los únicos formatos colocados en el Portapapeles son CF_METAFILEPICT, CF_EMBEDSOURCE, CF_OBJECTDESCRIPTOR y, posiblemente, CF_LINKSOURCE. La mayoría de las aplicaciones van a necesitar más formatos en el Portapapeles que estos tres.
Registro de formatos personalizados
Para crear formatos propios personalizados, siga el mismo procedimiento que usaría al registrar cualquier formato personalizado del Portapapeles: pase el nombre del formato a la función RegisterClipboardFormat y use su valor devuelto como identificador de formato.
Colocación de formatos en el Portapapeles
Para agregar más formatos a los colocados en el Portapapeles, debe invalidar la función OnGetClipboardData
en la clase derivada de COleClientItem
o COleServerItem
(en función de si los datos que se van a copiar son nativos). En esta función debe usar el procedimiento siguiente.
Para colocar formatos en el Portapapeles
Crear un objeto
COleDataSource
.Pase este origen de datos a una función que agregue los formatos de datos nativos a la lista de formatos admitidos mediante una llamada a
COleDataSource::CacheGlobalData
.Agregue formatos estándar mediante una llamada a
COleDataSource::CacheGlobalData
por cada formato estándar que quiera admitir.
Esta técnica se usa en el programa de ejemplo OLE de MFC HIERSVR (examine la función miembro OnGetClipboardData
de la clase CServerItem). La única diferencia de este ejemplo es que el paso tres no se implementa porque HIERSVR no admite ningún otro formato estándar.