Compartir a través de


Portapapeles: Usar el mecanismo del Portapapeles de OLE

OLE usa formatos estándar y algunos formatos específicos de OLE para transferir datos a través del Portapapeles.

Al cortar o copiar datos de una aplicación, los datos se almacenan en el Portapapeles para usarlos más adelante en las operaciones de pegado. Estos datos se presentan en diversos formatos. Cuando un usuario elige pegar datos del Portapapeles, la aplicación puede elegir cuál de estos formatos usar. La aplicación debe escribirse para elegir el formato que proporciona la mayor parte de la información, a menos que el usuario solicite específicamente un formato determinado, usando la opción de Pegado especial. Antes de continuar, es posible que desee leer los temas Objetos de datos y orígenes de datos (OLE). Describen los aspectos básicos sobre cómo funcionan las transferencias de datos y cómo se implementan en las aplicaciones.

Windows define una serie de formatos estándar que se pueden usar para transferir datos a través del Portapapeles. Estas incluyen metarchivos, texto y mapas de bits, entre otros. OLE define también una serie de formatos específicos de OLE. En el caso de las aplicaciones que necesitan más detalles que los que ofrecen estos formatos estándar, es recomendable registrar sus propios formatos de Portapapeles personalizados. Para ello, use la función de API Win32 RegisterClipboardFormat.

Por ejemplo, Microsoft Excel registra un formato personalizado para las hojas de cálculo. Este formato contiene mucha más información que, por ejemplo, un mapa de bits. Cuando estos datos se pegan en una aplicación que admite el formato de hoja de cálculo, todas las fórmulas y valores de la hoja de cálculo se conservan y se pueden actualizar si es necesario. Microsoft Excel también coloca datos en el Portapapeles en formatos para que se puedan pegar como un elemento OLE. Cualquier contenedor de documentos OLE puede pegar esta información como un elemento incrustado. Este elemento incrustado se puede cambiar mediante Microsoft Excel. El Portapapeles también contiene un mapa de bits simple de la imagen del rango seleccionado en la hoja de cálculo. Esto también se puede pegar en contenedores de documentos OLE o en editores de mapas de bits, como Paint. Sin embargo, en el caso de un mapa de bits, no hay ninguna manera de manipular los datos como una hoja de cálculo.

Para recuperar la cantidad máxima de información del Portapapeles, las aplicaciones deben comprobar estos formatos personalizados antes de pegar datos del Portapapeles.

Por ejemplo, para habilitar el comando Cortar, puede escribir un controlador similar al siguiente:

void CMyListView::OnEditCut()
{
   // Create an OLE data source on the heap
   COleDataSource* pData = new COleDataSource;
   // Get the currently selected data
   HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
   strcpy_s((char*)hGlob, 64, "Current selection\r\n");
   // For the appropriate data formats...
   pData->CacheGlobalData( CF_TEXT, hGlob );
   // The Clipboard now owns the allocated memory
   // and will delete this data object
   // when new data is put on the Clipboard
   pData->SetClipboard();
}

Qué más quieres saber

Consulte también

Portapapeles