Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo usar la API estándar del Portapapeles de Windows dentro de la aplicación MFC.
La mayoría de las aplicaciones para Windows admiten cortar o copiar datos en el Portapapeles de Windows y pegar datos del Portapapeles. Los formatos de datos del Portapapeles varían entre las aplicaciones. El marco de trabajo solo admite un número limitado de formatos de Portapapeles para un número limitado de clases. Normalmente implementará los comandos relacionados con el Portapapeles (Cortar, Copiar y Pegar) en el menú Editar de la vista. La biblioteca de clases define los identificadores de comando para estos comandos: ID_EDIT_CUT, ID_EDIT_COPY y ID_EDIT_PASTE. También se definen sus mensajes de línea de mensaje.
Mensajes y comandos en framework explica cómo controlar los comandos de menú de la aplicación mediante la asignación del comando de menú a una función de controlador. Siempre que la aplicación no defina funciones de controlador para los comandos del Portapapeles en el menú Editar, permanecen deshabilitadas. Para escribir funciones de controlador para los comandos Cortar y copiar, implemente la selección en la aplicación. Para escribir una función de controlador para el comando Pegar, consulte el Portapapeles para ver si contiene datos en un formato que la aplicación puede aceptar. Por ejemplo, para habilitar el comando Copy, puede escribir un controlador similar al siguiente:
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();
}
Los comandos Cortar, Copiar y Pegar solo son significativos en determinados contextos. Los comandos Cortar y Copiar solo deben habilitarse cuando se selecciona algo y el comando Pegar solo cuando algo está en el Portapapeles. Puede proporcionar este comportamiento definiendo funciones de controlador de actualizaciones que habilitan o deshabilitan estos comandos en función del contexto. Para obtener más información, vea Cómo actualizar User-Interface objetos.
La biblioteca microsoft Foundation Class proporciona compatibilidad con el Portapapeles para la edición de texto con las CEdit clases y CEditView . Las clases OLE también simplifican la implementación de operaciones del Portapapeles que implican elementos OLE. Para obtener más información sobre las clases OLE, vea Portapapeles: Uso del mecanismo del Portapapeles OLE.
La implementación de otros comandos de menú Editar, como Deshacer (ID_EDIT_UNDO) y Rehacer (ID_EDIT_REDO), también se le deja. Si la aplicación no admite estos comandos, puede eliminarlos fácilmente del archivo de recursos mediante los editores de recursos de Visual C++.