Sobre a Área de Transferência

A área de transferência é um conjunto de funções e mensagens que permitem que os aplicativos transfiram dados. Como todos os aplicativos têm acesso à área de transferência, os dados podem ser facilmente transferidos entre aplicativos ou dentro de um aplicativo.

A área de transferência é orientada pelo usuário. Uma janela deve transferir dados de ou para a área de transferência somente em resposta a um comando do usuário. Uma janela não deve usar a área de transferência para transferir dados sem o conhecimento do usuário.

Um objeto de memória na área de transferência pode estar em qualquer formato de dados, chamado de formato de área de transferência. Cada formato é identificado por um valor inteiro não assinado. Para formatos de área de transferência padrão (predefinidos), esse valor é uma constante definida em Winuser.h; para formatos de área de transferência registrados, é o valor de retorno da função RegisterClipboardFormat.

Exceto para registrar formatos da área de transferência, janelas individuais executam a maioria das operações da área de transferência. Normalmente, um procedimento de janela transfere informações de ou para a área de transferência em resposta à mensagem WM_COMMAND.

Esta seção discute o seguinte:

Comandos da Área de Transferência

Um usuário normalmente executa operações da área de transferência escolhendo comandos no menu Editar de um aplicativo. A seguir está uma breve descrição dos comandos padrão da área de transferência.

Comando Descrição
Recortar Coloca uma cópia da seleção atual na área de transferência e exclui a seleção do documento. O conteúdo anterior da área de transferência é destruído.
Copy Coloca uma cópia da seleção atual na área de transferência. O documento permanece inalterado. O conteúdo anterior da área de transferência é destruído.
Colar Substitui a seleção atual pelo conteúdo da área de transferência. O conteúdo da área de transferência não é alterado.
Delete (excluir) Exclui a seleção atual do documento. O conteúdo da área de transferência não é alterado. Esse comando não envolve a área de transferência, mas deve aparecer com os comandos da área de transferência no menu Editar .

 

Número de sequência da área de transferência

A área de transferência de cada estação de janela tem um número de sequência da área de transferência associado. Esse número é incrementado sempre que o conteúdo da área de transferência é alterado. Para obter o número de sequência da área de transferência, chame a função GetClipboardSequenceNumber.

Visualizadores da Área de Transferência

Um visualizador da área de transferência é uma janela que exibe o conteúdo atual da área de transferência. A janela do visualizador da área de transferência é uma conveniência para o usuário e não afeta as funções de transação de dados da área de transferência.

Normalmente, uma janela do visualizador da área de transferência pode exibir pelo menos os três formatos mais comuns: CF_TEXT, CF_BITMAP e CF_METAFILEPICT. Se uma janela não disponibilizar dados em nenhum desses três formatos, ela deverá fornecer dados em um formato de exibição ou usar o formato de exibição do proprietário.

Uma cadeia de visualizador da área de transferência é a ligação entre duas ou mais entidades para que elas sejam dependentes uma da outra para operação. Essa interdependência (cadeia) permite que todos os aplicativos visualizadores da área de transferência em execução recebam as mensagens enviadas para a área de transferência atual.

Os tópicos a seguir são discutidos nesta seção.

Visualizador da Área de Transferência do Windows

Uma janela se adiciona à cadeia de visualizadores da área de transferência chamando a função SetClipboardViewer. O valor de retorno é o identificador para a próxima janela na cadeia. Para recuperar o identificador para a primeira janela na cadeia, chame a função GetClipboardViewer.

Cada janela do visualizador da área de transferência deve acompanhar a próxima janela na cadeia de visualizadores da área de transferência. Quando o conteúdo da área de transferência é alterado, o sistema envia uma mensagem WM_DRAWCLIPBOARD para a primeira janela da cadeia. Depois de atualizar sua exibição, cada janela do visualizador da área de transferência deve passar essa mensagem para a próxima janela da cadeia.

Antes de fechar, uma janela do visualizador da área de transferência deve se remover da cadeia do visualizador da área de transferência chamando a função ChangeClipboardChain. Em seguida, o sistema envia uma mensagem de WM_CHANGECBCHAIN para a primeira janela da cadeia.

Para obter mais informações sobre como processar as mensagens WM_DRAWCLIPBOARD e WM_CHANGECBCHAIN, consulte Criando uma janela do Visualizador da Área de Transferência.

Formatos de exibição

Um formato de exibição é um formato de área de transferência usado para exibir informações em uma janela do visualizador da área de transferência. Um proprietário da área de transferência que usa um formato de área de transferência particular ou registrado, e nenhum dos formatos padrão mais comuns, deve fornecer dados em um formato de exibição para exibição em uma janela do visualizador da área de transferência. Os formatos de exibição são destinados apenas à exibição e não devem ser colados em um documento.

Os quatro formatos de exibição são: CF_DSPBITMAP, CF_DSPMETAFILEPICT, CF_DSPTEXT e CF_DSPENHMETAFILE. Esses formatos de exibição são renderizados da mesma forma que os formatos padrão, que são: CF_BITMAP, CF_TEXT, CF_METAFILEPICT e CF_ENHMETAFILE.

Formato de exibição do proprietário

Para um proprietário da área de transferência que não usa nenhum dos formatos comuns da área de transferência padrão, uma alternativa para fornecer um formato de exibição é usar o formato de área de transferência de exibição do proprietário (CF_OWNERDISPLAY).

Usando o formato de exibição do proprietário, um proprietário da área de transferência pode evitar a sobrecarga de renderização de dados em um formato adicional, assumindo o controle direto sobre a pintura da janela do visualizador da área de transferência. A janela do visualizador da área de transferência envia mensagens ao proprietário da área de transferência sempre que uma parte da janela deve ser repintada ou quando a janela é rolada ou redimensionada.

Formatos padrão da área de transferência