Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico explica como usar a API padrão da Área de Transferência do Windows no seu aplicativo MFC.
A maioria dos aplicativos para Windows oferece suporte a recortar ou copiar dados 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 suporta apenas um número limitado de formatos de Clipboard para um número limitado de classes. Normalmente, você implementará os comandos relacionados à área de transferência — Recortar, Copiar e Colar — no menu Editar para sua exibição. A biblioteca de classes define as IDs de comando para esses comandos: ID_EDIT_CUT, ID_EDIT_COPY e ID_EDIT_PASTE. Seus prompts de linha de mensagem também são definidos.
Mensagens e Comandos no Framework explica como lidar com comandos de menu em seu aplicativo mapeando o comando de menu para uma função de manipulador. Enquanto o seu aplicativo não definir funções de manipulador para os comandos da área de transferência no menu Editar, eles permanecerão 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 a mesma contém dados num formato que seu aplicativo consiga aceitar. Por exemplo, para habilitar o comando Copiar, você pode escrever um manipulador 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 só são significativos em determinados contextos. Os comandos Recortar e Copiar devem ser ativados somente quando algo estiver selecionado e o comando Colar somente quando algo estiver na Área de Transferência. Você pode fornecer esse comportamento definindo funções do manipulador de atualização que habilitam ou desabilitam esses comandos, dependendo do contexto. Para obter mais informações, consulte Como atualizar objetos User-Interface.
A Microsoft Foundation Class Library de facto fornece suporte à área de transferência para edição de texto com as classes CEdit e CEditView. As classes OLE também simplificam a implementação de operações da área de transferência que envolvem itens OLE. Para obter mais informações sobre as classes OLE, consulte Área de transferência: Usando o mecanismo da área de transferência OLE.
A implementação de outros comandos do menu Editar, como Desfazer (ID_EDIT_UNDO) e Refazer (ID_EDIT_REDO), também é deixada para você. Se seu aplicativo não oferece suporte a esses comandos, você pode excluí-los facilmente do seu arquivo de recurso usando os editores de recursos do Visual C++.