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

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

A maioria dos aplicativos para Windows oferece suporte recortando ou copiando dados para a área de transferência do Windows e colando 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ê implementará os comandos relacionados à área de transferência — Recortar, copiar e colar, no menu ' edição ' para o modo de exibição.A biblioteca de classes define as IDs de comando para que esses comandos: ID_EDIT_CUT, ID_EDIT_COPY, and ID_EDIT_PASTE.Seus avisos de linha de mensagem também são definidos.

Mensagens e comandos do estrutura explica como lidar com comandos de menu em seu aplicativo, mapeando o comando de menu para uma função de manipulador.Desde que seu aplicativo não define funções do manipulador para sistema autônomo comandos da área de transferência no menu edição, eles permanecem desativados.Para gravar funções do manipulador para os comandos Recortar e copiar, implementar a seleção em seu aplicativo.Para gravar uma função de manipulador para o comando Colar, consultar a área de transferência para ver se ele contém dados em um formato que pode aceitar seu aplicativo.Por exemplo, para ativar 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 a atualização de funções do manipulador que ativam ou desativam esses comandos dependendo do contexto.Para obter mais informações, consulte Como atualizar objetos de interface do usuário.

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

Implementar outros comandos de menu edição, tais sistema autônomo desfazer (ID_EDIT_UNDO) e refazer (ID_EDIT_REDO), também é da esquerda para você.Se seu aplicativo não oferecer suporte a esses comandos, você poderá excluí-los com com facilidade do arquivo de recurso usando editores de recursos do Visual C++.

O que você deseja saber mais sobre?

Consulte também

Conceitos

Área de transferência