Área de Transferência: copiando e colando dados
Este tópico descreve o trabalho mínimo necessário para implementar a cópia e a colagem da Área de Transferência no aplicativo OLE. É recomendável ler os tópicos sobre Objetos de Dados e Fontes de Dados (OLE) antes de prosseguir.
Antes de implementar a cópia ou a colagem, você precisa fornecer funções para manipular as opções Copiar, Recortar e Colar no menu Editar.
Copiando ou recortando dados
Para copiar dados para a Área de Transferência
Determine se os dados a serem copiados são dados nativos ou se são um item inserido ou vinculado.
Se os dados estiverem inseridos ou vinculados, obtenha um ponteiro para o objeto
COleClientItem
selecionado.Se os dados forem nativos e o aplicativo for um servidor, crie um objeto derivado do
COleServerItem
que contém os dados selecionados. Caso contrário, crie um objetoCOleDataSource
para os dados.
Chame a função membro
CopyToClipboard
do item selecionado.Se o usuário escolher uma operação Recortar em vez de uma operação Copiar, exclua os dados selecionados do aplicativo.
Para ver um exemplo dessa sequência, consulte as funções OnEditCut
e OnEditCopy
nos programas de exemplo OLE OCLIENT e HIERSVR do MFC. Observe que esses exemplos mantêm um ponteiro para os dados selecionados no momento, portanto, a etapa 1 já está concluída.
Colando dados
Colar dados é mais complicado do que copiá-los porque você precisa escolher o formato a ser usado para colar os dados no aplicativo.
Para colar dados da Área de Transferência
Em sua classe de exibição, implemente
OnEditPaste
para lidar com os usuários que escolhem a opção Colar no menu Editar.Na função
OnEditPaste
, crie um objetoCOleDataObject
e chame sua função membroAttachClipboard
para vincular esse objeto aos dados na Área de Transferência.Chame
COleDataObject::IsDataAvailable
para verificar se um formato específico está disponível.Como alternativa, você pode usar
COleDataObject::BeginEnumFormats
para procurar outros formatos até encontrar um mais adequado para o aplicativo.Execute a colagem do formato.
Para obter um exemplo de como isso funciona, consulte a implementação das funções membro OnEditPaste
nas classes de exibição definidas nos programas de exemplo OLE OCLIENT e HIERSVR do MFC.
Dica
O principal benefício de separar a operação de colagem em sua função é que o mesmo código de colagem pode ser usado quando dados são soltos em seu aplicativo durante uma operação de arrastar e soltar. Assim como em OCLIENT e HIERSVR, sua função OnDrop
também pode chamar DoPasteItem
, reutilizando o código escrito para implementar operações de colagem.
Para manipular a opção Colar Especial no menu Editar, consulte o tópico Caixas de diálogo no OLE.
O que mais você deseja saber?
Confira também
Área de transferência: usando o mecanismo de área de transferência do OLE