Portapapeles: copiando y pegando datos
Este tema describe el trabajo mínimo necesario implementar copiar y pegar desde el portapapeles en la aplicación OLE.Se recomienda leer los temas de objetos de datos y orígenes de datos (OLE) antes de continuar.
Antes de implementar copiar o pegar, primero debe proporcionar funciones para controlar la copia, las opciones corta, y pegue en el menú Edición.
Copiar o datos reduciendo
Para copiar datos en el portapapeles
Determine si los datos se copiará es datos nativos o es un elemento incrustado o vinculado.
Si se inserta o se vincula los datos, obtenga un puntero al objeto de COleClientItem que ha seleccionado.
Si los datos son nativo y la aplicación es un servidor, cree un nuevo objeto derivado de COleServerItem que contiene los datos seleccionados.Si no, cree un objeto de COleDataSource para los datos.
Llame a la función miembro de CopyToClipboard del elemento seleccionado.
Si el usuario eligió una operación de cortar en lugar de una operación de copia, elimine los datos seleccionados de la aplicación.
Para ver un ejemplo de esta secuencia, vea OnEditCut y OnEditCopy funciona en los programas de ejemplo de OLE OCLIENT y HIERSVRMFC.Observe que estos ejemplos mantienen un puntero a los datos actualmente seleccionado, por lo que el paso 1 ya se ha completado.
Datos de pegar
Pegar datos es más complicado que copiándolo porque necesita elegir el formato para utilizar en pegar los datos en la aplicación.
Para pegar datos del portapapeles
En la clase de vista, implementar OnEditPaste para controlar los usuarios que elija la opción de pegar el menú Edición.
En función de OnEditPaste , cree un objeto de COleDataObject y llame a su función miembro de AttachClipboard para vincular este objeto a los datos en el portapapeles.
Llame a COleDataObject::IsDataAvailable para comprobar si un formato determinado está disponible.
Como alternativa, puede utilizar COleDataObject::BeginEnumFormats para buscar otros formatos hasta encontrar uno adecuado más a la aplicación.
Realice pegar de formato.
Para obtener un ejemplo de cómo funciona esto, vea la de las funciones miembro de OnEditPaste en las clases de vista definido en los programas de ejemplo de OLE OCLIENT y HIERSVRMFC.
Sugerencia |
---|
La ventaja principal de separar la operación de pegar en su propia función es que el mismo código de pegar puede utilizar cuando se colocan los datos en la aplicación durante una operación de arrastrar y colocar.Como en OCLIENT e HIERSVR, la función de OnDrop también puede llamar DoPasteItem, reutilizar el código escrito a las operaciones de pegar de implementan. |
Para controlar la opción de Pegado especial en el menú Edición, vea el tema Cuadros de diálogo de OLE.