Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como usar a API padrão da Área de Transferência do Windows em seu aplicativo MFC.
A maioria dos aplicativos para Windows dá suporte ao corte ou à cópia de dados para a Área de Transferência do Windows e à colagem de dados da Área de Transferência. Os formatos de dados da Área de Transferência variam entre os aplicativos. A estrutura dá suporte apenas a 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 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 na 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 defina funções de manipulador para os comandos da Área de Transferência no menu Editar, eles permanecerão desabilitados. Para gravar funções de manipulador para os comandos Recortar e Copiar, implemente a seleção em seu aplicativo. Para gravar uma função de manipulador para o comando Colar, consulte a Área de Transferência para ver se ela contém dados em um formato que seu aplicativo pode 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 habilitados 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 de 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 Biblioteca de Classes do Microsoft Foundation fornece suporte à Área de Transferência para edição de texto com as classes eCEditView.CEdit As classes OLE também simplificam a implementação de operações de á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 de área de transferência OLE.
A implementação de outros comandos de menu Editar, como Desfazer (ID_EDIT_UNDO) e Refazer (ID_EDIT_REDO), também é deixada para você. Se o aplicativo não der suporte a esses comandos, você poderá excluí-los facilmente do arquivo de recurso usando os editores de recursos do Visual C++.