Acerca del Portapapeles

El Portapapeles es un conjunto de funciones y mensajes que permiten a las aplicaciones transferir datos. Dado que todas las aplicaciones tienen acceso al Portapapeles, los datos se pueden transferir fácilmente entre aplicaciones o dentro de una aplicación.

El Portapapeles está controlado por el usuario. Una ventana debe transferir datos al Portapapeles o desde este solo en respuesta a un comando del usuario. Una ventana no debe usar el Portapapeles para transferir datos sin el conocimiento del usuario.

Un objeto de memoria en el Portapapeles puede tener cualquier formato de datos, denominado formato de Portapapeles. Cada formato se identifica mediante un valor entero sin signo. Para los formatos estándar (predefinidos) del Portapapeles, este valor es una constante definida en Winuser.h; para los formatos del Portapapeles registrados, es el valor devuelto de la función RegisterClipboardFormat .

Excepto para registrar formatos de Portapapeles, las ventanas individuales realizan la mayoría de las operaciones del Portapapeles. Normalmente, un procedimiento de ventana transfiere información hacia o desde el Portapapeles en respuesta al mensaje WM_COMMAND .

En esta sección se describe lo siguiente:

Comandos del Portapapeles

Normalmente, un usuario lleva a cabo operaciones del Portapapeles eligiendo comandos en el menú Editar de una aplicación. A continuación se muestra una breve descripción de los comandos estándar del Portapapeles.

Get-Help Descripción
Cortar Coloca una copia de la selección actual en el Portapapeles y elimina la selección del documento. El contenido anterior del Portapapeles se destruye.
Copy Coloca una copia de la selección actual en el Portapapeles. El documento permanece sin cambios. El contenido anterior del Portapapeles se destruye.
Pegar Reemplaza la selección actual por el contenido del Portapapeles. No se cambia el contenido del Portapapeles.
Eliminar Elimina la selección actual del documento. No se cambia el contenido del Portapapeles. Este comando no implica el Portapapeles, pero debería aparecer con los comandos del Portapapeles en el menú Editar .

 

Número de secuencia del Portapapeles

El Portapapeles de cada estación de ventana tiene un número de secuencia asociado del Portapapeles. Este número se incrementa cada vez que cambia el contenido del Portapapeles. Para obtener el número de secuencia del Portapapeles, llame a la función GetClipboardSequenceNumber .

Visores del Portapapeles

Un visor del Portapapeles es una ventana que muestra el contenido actual del Portapapeles. La ventana del visor del Portapapeles es una comodidad para el usuario y no afecta a las funciones de transacción de datos del Portapapeles.

Normalmente, una ventana del visor del Portapapeles puede mostrar al menos los tres formatos más comunes: CF_TEXT, CF_BITMAP y CF_METAFILEPICT. Si una ventana no hace que los datos estén disponibles en cualquiera de estos tres formatos, debe proporcionar datos en un formato de presentación o usar el formato de presentación del propietario.

Una cadena de visores del Portapapeles es la vinculación de dos o más entidades para que dependan entre sí para su operación. Esta interdependencia (cadena) permite que todas las aplicaciones de visor del Portapapeles en ejecución reciban los mensajes enviados al Portapapeles actual.

En esta sección se tratan los temas siguientes.

Ventanas del Visor del Portapapeles

Una ventana se agrega a la cadena del visor del Portapapeles mediante una llamada a la función SetClipboardViewer . El valor devuelto es el identificador de la siguiente ventana de la cadena. Para recuperar el identificador de la primera ventana de la cadena, llame a la función GetClipboardViewer .

Cada ventana del visor del Portapapeles debe realizar un seguimiento de la siguiente ventana de la cadena del visor del Portapapeles. Cuando cambia el contenido del Portapapeles, el sistema envía un mensaje de WM_DRAWCLIPBOARD a la primera ventana de la cadena. Después de actualizar su presentación, cada ventana del visor del Portapapeles debe pasar este mensaje a la siguiente ventana de la cadena.

Antes de cerrar, una ventana del visor del Portapapeles debe quitarse de la cadena del visor del Portapapeles llamando a la función ChangeClipboardChain . A continuación, el sistema envía un mensaje WM_CHANGECBCHAIN a la primera ventana de la cadena.

Para obtener más información sobre cómo procesar los mensajes de WM_DRAWCLIPBOARD y WM_CHANGECBCHAIN , vea Crear una ventana del Visor de Portapapeles.

Formatos de visualización

Un formato de presentación es un formato de Portapapeles que se usa para mostrar información en una ventana del visor del Portapapeles. Un propietario del Portapapeles que usa un formato de Portapapeles privado o registrado y ninguno de los formatos estándar más comunes debe proporcionar datos en un formato de visualización para su visualización en una ventana del visor del Portapapeles. Los formatos de presentación están diseñados solo para su visualización y no deben pegarse en un documento.

Los cuatro formatos de presentación son: CF_DSPBITMAP, CF_DSPMETAFILEPICT, CF_DSPTEXT y CF_DSPENHMETAFILE. Estos formatos de presentación se representan de la misma manera que los formatos estándar, que son: CF_BITMAP, CF_TEXT, CF_METAFILEPICT y CF_ENHMETAFILE.

Formato de presentación del propietario

Para un propietario del Portapapeles que no usa ninguno de los formatos de Portapapeles estándar comunes, una alternativa a proporcionar un formato de pantalla consiste en usar el formato del Portapapeles de propietario (CF_OWNERDISPLAY).

Mediante el uso del formato de presentación del propietario, un propietario del Portapapeles puede evitar la sobrecarga de representar datos en un formato adicional mediante la toma de control directo sobre la pintura de la ventana del visor del Portapapeles. La ventana del visor del Portapapeles envía mensajes al propietario del Portapapeles cada vez que se debe volver a dibujar una parte de la ventana o cuando se desplaza o se cambia el tamaño de la ventana.

Formatos estándar del Portapapeles