Área de transferência: adicionando outros formatos
Este tópico explica como expandir a lista de formatos com suporte, especialmente para suporte a OLE. O tópico Área de Transferência: copiando e colando dados descreve a implementação mínima necessária para dar suporte à cópia e à colagem da Área de Transferência. Se isso for tudo o que você implementar, os únicos formatos colocados na Área de Transferência serão CF_METAFILEPICT, CF_EMBEDSOURCE, CF_OBJECTDESCRIPTOR e, possivelmente, CF_LINKSOURCE. A maioria dos aplicativos precisará de mais formatos na Área de Transferência do que esses três.
Registrando formatos personalizados
Para criar seus formatos personalizados, siga o mesmo procedimento que você usaria ao registrar qualquer formato personalizado da Área de Transferência: passe o nome do formato para a função RegisterClipboardFormat e use o valor retornado como a ID de formato.
Colocando formatos na Área de Transferência
Para adicionar mais formatos aos colocados na Área de Transferência, você precisa substituir a função OnGetClipboardData
na classe derivada de COleClientItem
ou COleServerItem
(dependendo de os dados a serem copiados serem nativos). Nesta função, você deve usar o procedimento a seguir.
Para colocar formatos na Área de Transferência
Crie um objeto
COleDataSource
.Passe essa fonte de dados para uma função que adiciona seus formatos de dados nativos à lista de formatos com suporte chamando
COleDataSource::CacheGlobalData
.Adicione formatos padrão chamando
COleDataSource::CacheGlobalData
para cada formato padrão a que você desejar dar suporte.
Essa técnica é usada no programa de exemplo OLE do MFC HIERSVR (examine a função membro OnGetClipboardData
da classe CServerItem). A única diferença neste exemplo é que a etapa três não é implementada porque HIERSVR não dá suporte a nenhum outro formato padrão.
O que mais você deseja saber?
Confira também
Área de transferência: usando o mecanismo de área de transferência do OLE