Portapapeles: Copiar y pegar datos
En este tema se describe el trabajo mínimo necesario para implementar la copia y el pegado desde el Portapapeles en la aplicación OLE. Se recomienda que lea los temas Objetos de datos y orígenes de datos (OLE) antes de continuar.
Para poder implementar la copia o el pegado, primero debe proporcionar funciones para controlar las opciones Copiar, Cortar y Pegar en el menú Editar.
Copiar o cortar datos
Para copiar datos al Portapapeles
Determine si los datos que se van a copiar son datos nativos o son elementos insertados o vinculados.
Si se insertan los datos o se vinculan, obtenga un puntero al objeto
COleClientItem
que ha sido seleccionado.Si los datos son nativos y la aplicación es un servidor, cree un nuevo objeto derivado de
COleServerItem
que contenga los datos seleccionados. De lo contrario, cree un objetoCOleDataSource
para los datos.
Llame a la función miembro
CopyToClipboard
del elemento seleccionado.Si el usuario eligió una operación Cortar en lugar de una operación Copiar, elimine los datos seleccionados de la aplicación.
Para ver un ejemplo de esta secuencia, consulte las funciones OnEditCut
y OnEditCopy
en los programas de ejemplo OLE de MFC OCLIENT y HIERSVR. Tenga en cuenta que estos ejemplos mantienen un puntero a los datos seleccionados actualmente, por lo que el paso 1 ya está completo.
Pegando datos
Pegar datos es más complicado que copiarlos porque debe elegir el formato que usará para pegar los datos en la aplicación.
Para pegar datos del Portapapeles
En su clase de vista, implemente
OnEditPaste
para controlar los usuarios que elijan la opción Pegar en el menú Editar.En la función
OnEditPaste
, cree un objetoCOleDataObject
y llame a la función miembroAttachClipboard
para vincular este objeto a los datos en el Portapapeles.Llame a
COleDataObject::IsDataAvailable
para comprobar si un formato en particular está disponible.Como alternativa, puede usar
COleDataObject::BeginEnumFormats
para buscar otros formatos hasta que encuentre uno más adecuado para la aplicación.Realizar el pegado del formato.
Para obtener un ejemplo de cómo funciona, vea la implementación de las OnEditPaste
funciones miembro en las clases definidas en los programas de ejemplo de OLE de MFC OCLIENT y HIERSVR.
Sugerencia
La principal ventaja de separar la operación de pegado en su propia función es que se puede usar el mismo código de pegado cuando se colocan datos en la aplicación durante una operación de arrastrar y soltar. Como en OCLIENT y HIERSVR, la función OnDrop
también puede llamar a DoPasteItem
, reutilizando el código escrito para implementar operaciones de pegado.
Para manipular la opción Pegado especial en el menú Edición, consulte el tema Cuadros de diálogo en OLE.
Qué más quieres saber
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de