Área de transferência: Usando o mecanismo de área de transferência OLE
OLE usa formatos padrão e alguns formatos específicos de OLE para transferência de dados por meio da área de transferência.
Quando você recorta ou copia dados de um aplicativo, os dados são armazenados na área de transferência a ser usado posteriormente em operações de colagem.Esses dados estão em uma variedade de formatos.Quando um usuário escolhe colar dados da área de transferência, o aplicativo pode escolher qual desses formatos para usar.O aplicativo deve ser escrito para escolher o formato que fornece o máximo de informações, a menos que o usuário solicitar especificamente para um determinado formato, Colar especial.Antes de continuar, talvez você queira ler o objetos de dados e fontes de dados (OLE) tópicos.Eles descrevem os fundamentos de como funcionam as transferências de dados e como implementá-los em seus aplicativos.
Windows define um número de formatos padrão que podem ser usados para transferir dados através de área de transferência.Eles incluem metarquivos, texto, bitmaps e outros.OLE define um número de formatos específicos de OLE, também.Para aplicativos que precisam de mais detalhes do que determinado por esses formatos padrão, é uma boa idéia para registrar seus próprios formatos personalizados de área de transferência.Use a função de API do Win32 RegisterClipboardFormat para fazer isso.
Por exemplo, o Microsoft Excel registra um formato personalizado para planilhas.Esse formato carrega muito mais informações que, por exemplo, faz um bitmap.Quando esses dados são colados em um aplicativo que suporte o formato de planilha, as fórmulas e valores da planilha são mantidos e podem ser atualizados se necessário.O Microsoft Excel também coloca os dados na área de transferência em formatos para que podem ser colado como um item OLE.Qualquer documento recipiente OLE pode colar essas informações como um item incorporado.Este item incorporado pode ser alterado usando o Microsoft Excel.A área de transferência também contém um bitmap simples da imagem do intervalo selecionado na planilha.Isso também pode ser colado em recipientes de documento OLE ou em editores de bitmap, como o Paint.No caso de um bitmap, no entanto, não é possível manipular os dados como uma planilha.
Para recuperar o máximo de informações da área de transferência, aplicativos devem verificar esses formatos personalizados antes de colar dados da área de transferência.
Por exemplo, para habilitar o comando Recortar, você pode escrever um manipulador de algo como o seguinte:
void CMyListView::OnEditCut()
{
// Create an OLE data source on the heap
COleDataSource* pData = new COleDataSource;
// Get the currently selected data
HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
strcpy_s((char*)hGlob, 64, "Current selection\r\n");
// For the appropriate data formats...
pData->CacheGlobalData( CF_TEXT, hGlob );
// The Clipboard now owns the allocated memory
// and will delete this data object
// when new data is put on the Clipboard
pData->SetClipboard();
}