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 el trabajo mínimo necesario para implementar la copia y el pegado desde el Portapapeles en la aplicación OLE. Se recomienda leer 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 es un elemento incrustado o vinculado.
Si los datos están incrustados o vinculados, obtenga un puntero al
COleClientItemobjeto seleccionado.Si los datos son nativos y la aplicación es un servidor, cree un nuevo objeto derivado de
COleServerItemque contenga los datos seleccionados. De lo contrario, cree unCOleDataSourceobjeto para los datos.
Llame a la función miembro
CopyToClipboarddel elemento seleccionado.Si el usuario eligió una operación 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 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.
Pegado de datos
Pegar datos es más complicado que copiarlos porque debe elegir el formato que se va a usar para pegar los datos en la aplicación.
Para pegar datos del Portapapeles
En su clase de vista, implemente
OnEditPastepara controlar los usuarios que elijan la opción Pegar en el menú Editar.En la función
OnEditPaste, cree un objetoCOleDataObjecty llame a la función miembroAttachClipboardpara vincular este objeto a los datos en el Portapapeles.Llame
COleDataObject::IsDataAvailablea para comprobar si hay un formato determinado disponible.Como alternativa, puede usar
COleDataObject::BeginEnumFormatspara buscar otros formatos hasta que encuentre uno más adecuado para la aplicación.Realizar el pegado del formato.
Para ver un ejemplo de cómo funciona esto, consulte la implementación de las funciones miembro OnEditPaste en las clases de vista definidas en los programas de ejemplo 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.