Compartir a través de


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

  1. 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 objeto COleDataSource para los datos.

  2. Llame a la función miembro CopyToClipboard del elemento seleccionado.

  3. 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

  1. En su clase de vista, implemente OnEditPaste para controlar los usuarios que elijan la opción Pegar en el menú Editar.

  2. En la función OnEditPaste, cree un objeto COleDataObject y llame a la función miembro AttachClipboard para vincular este objeto a los datos en el Portapapeles.

  3. 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.

  4. 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

Portapapeles: Usar el mecanismo del Portapapeles de OLE