Partilhar via


Área de transferência: Usando a área de transferência do Windows

Este tópico descreve como usar a API de transferência padrão do Windows dentro do seu aplicativo do MFC.

A maioria dos aplicativos do Windows suportam recortar ou copiar dados para a área de transferência e colar dados da área de transferência.Os formatos de dados da área de transferência variam entre aplicativos.A estrutura oferece suporte a apenas um número limitado de formatos de área de transferência para um número limitado de classes.Normalmente você irá implementar os comandos de transferência — Recortar, copiar e colar, no menu Editar para sua exibição.A biblioteca de classe define as IDs de comando para que esses comandos: ID_EDIT_CUT, ID_EDIT_COPY, e ID_EDIT_PASTE.Seus prompts de mensagem linha também são definidos.

Mensagens e comandos no Framework explica como lidar com os comandos de menu em seu aplicativo, mapeando o comando de menu para uma função de manipulador.Desde que o aplicativo não define funções do manipulador de comandos da área de transferência no menu Editar, eles permanecem desativados.Para escrever funções de manipulador para os comandos Recortar e copiar, implemente a seleção em seu aplicativo.Para escrever uma função de manipulador para o comando Colar, consulte a área de transferência para ver se ele contém dados em um formato que o aplicativo pode aceitar.Por exemplo, para habilitar o comando Copy, você pode escrever um manipulador de algo como o seguinte:

void CMyListView::OnEditCopy()
{
   if ( !OpenClipboard() )
   {
      AfxMessageBox( _T("Cannot open the Clipboard") );
      return;
   }
   // Remove the current Clipboard contents
   if( !EmptyClipboard() )
   {
      AfxMessageBox( _T("Cannot empty the Clipboard") );
      return;
   }
   // 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...
   if ( ::SetClipboardData( CF_TEXT, hGlob ) == NULL )
   {
      CString msg;
      msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
      AfxMessageBox( msg );
      CloseClipboard();
      GlobalFree(hGlob);
      return;
   }
   CloseClipboard();
}

Os comandos Recortar, copiar e colar apenas são significativos em determinados contextos.Os comandos Recortar e copiar devem ser habilitados apenas quando algo está selecionado e o comando Colar apenas quando algo está na área de transferência.Você pode fornecer esse comportamento, definindo as funções de manipulador de atualização que ativar ou desativar esses comandos, dependendo do contexto.Para obter mais informações, consulte como objetos de Interface do usuário da atualização.

A biblioteca Microsoft Foundation Class fornecem suporte a área de transferência para edição de texto com o CEdit e CEditView classes.As classes OLE também simplificam Implementando operações que envolvem itens OLE.Para obter mais informações sobre as classes OLE, consulte área de transferência: usando o mecanismo de área de transferência OLE.

Implementação de outros comandos de menu, como Desfazer Editar (ID_EDIT_UNDO) e refazer (ID_EDIT_REDO), também é da esquerda para você.Se seu aplicativo não oferece suporte a esses comandos, você pode excluí-los facilmente de seu arquivo de recurso usando os editores de recursos do Visual C++.

O que você deseja saber mais sobre?

Consulte também

Conceitos

Área de transferência