Partilhar via


Área de Transferência: usando a Área de Transferência do Windows

Este tópico descreve como usar a área de transferência padrão apis do windows em seu aplicativo MFC.

A maioria dos aplicativos do windows oferecem suporte a dados recortar ou copiar para a área de transferência do windows e colar dados da área de transferência. Os formatos de dados da área de transferência variam entre aplicativos. A estrutura aceitar apenas um número limitado de formatos da área de transferência para um número limitado de classes. Você implementará normalmente os comandos Área de transferência- relacionados, copiar, — recortar e colar — no menu editar para sua exibição. A biblioteca de classe define os IDs de comando para esses comandos: ID_EDIT_CUT, ID_EDIT_COPY, e ID_EDIT_PASTE. A linha mensagem- avisos também estiver definida.

Mensagens e comandos na estrutura explica como manipular comandos de menu em seu aplicativo mapeando o comando de menu a uma função de manipulador. Como seu aplicativo não define o manipulador que as funções para a área de transferência comando no menu editar, ele permanecerá desabilitado. Para escrever funções do manipulador para os comandos recortar e de cópia, implemente a seleção em seu aplicativo. Para escrever uma função de manipulador para o comando de pasta, consulte a área de transferência para ver se contiver dados em um formato que seu aplicativo pode aceitar. Por exemplo, para habilitar o comando de cópia, você pode gravar em um manipulador algo como:

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, na pasta só são úteis em determinados contextos. Os comandos recortar e de cópia deve ser habilitado apenas quando algo está selecionado e, o comando da pasta somente quando algo está na área de transferência. Você pode fornecer este comportamento definindo as funções de manipulador de atualização que habilitam ou desabilitam esses comandos dependendo do contexto. Para obter mais informações, consulte Como atualizar objetos de interface do usuário.

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

Implementar outros comandos de menu editar, como desfazer (ID_EDIT_UNDO) e refazer (ID_EDIT_REDO), será deixado também. Se seu aplicativo não oferece suporte a esses comandos, você pode facilmente excluí-los do arquivo de recursos usando os editores de recursos do Visual C++.

Que você deseja saber mais?

Consulte também

Conceitos

Área de Transferência