Función OleSetClipboard (ole2.h)

Coloca un puntero a un objeto de datos específico en el Portapapeles. Esto hace que el objeto de datos sea accesible para la función OleGetClipboard .

Sintaxis

HRESULT OleSetClipboard(
  [in] LPDATAOBJECT pDataObj
);

Parámetros

[in] pDataObj

Puntero a la interfaz IDataObject del objeto de datos desde el que se pueden obtener los datos que se van a colocar en el Portapapeles. Este parámetro puede ser NULL; en cuyo caso se vacía el Portapapeles.

Valor devuelto

Esta función devuelve S_OK si se ejecuta correctamente. Otros valores posibles incluyen lo siguiente.

Código devuelto Descripción
CLIPBRD_E_CANT_OPEN
Error en la función OpenClipboard usada en OleSetClipboard .
CLIPBRD_E_CANT_EMPTY
Error en la función EmptyClipboard usada en OleSetClipboard .
CLIPBRD_E_CANT_CLOSE
Error en la función CloseClipboard usada en OleSetClipboard .
CLIPBRD_E_CANT_SET
Error en la función SetClipboardData usada en OleSetClipboard .

Comentarios

Si está escribiendo una aplicación que puede actuar como origen de una operación del Portapapeles, debe hacer lo siguiente:

  • Cree un objeto de datos (en el que se encuentra la interfaz IDataObject ) para los datos que se copian o cortan en el Portapapeles. Este objeto debe ser el mismo objeto que se usa en las operaciones de arrastrar y colocar OLE.
  • Llame a OleSetClipboard para colocar el puntero IDataObject en el Portapapeles, por lo que es accesible para la función OleGetClipboard . OleSetClipboard también llama al método IUnknown::AddRef en el objeto de datos.
  • Si lo desea, libere el objeto de datos después de colocarlo en el Portapapeles para liberar el contador IUnknown::AddRef en la aplicación.
  • Si el usuario está cortando datos (eliminándolo del documento y colocándolo en el Portapapeles), quite los datos del documento.
Todos los formatos se ofrecen en el Portapapeles mediante la representación diferida (el Portapapeles solo contiene un puntero al objeto de datos a menos que una llamada a OleFlushClipboard represente los datos en el Portapapeles). Los formatos necesarios para la compatibilidad con OLE 1 se sintetizan a partir de los formatos OLE 2 que están presentes y también se colocan en el Portapapeles.

La función OleSetClipboard asigna la propiedad del Portapapeles a un identificador de ventana OLE interno. El recuento de referencias del objeto de datos se incrementa en 1, para habilitar la representación diferida. El recuento de referencias se reduce mediante una llamada a la función OleFlushClipboard o mediante una llamada posterior a OleSetClipboard que especifica NULL como valor de parámetro (que borra el Portapapeles).

Cuando una aplicación abre el Portapapeles (directa o indirectamente mediante una llamada a la función OpenClipboard ), el Portapapeles no se puede usar en ninguna otra aplicación hasta que se cierre. Si el Portapapeles está abierto actualmente por otra aplicación, se produce un error en OleSetClipboard . El identificador de ventana OLE interno satisface WM_RENDERFORMAT mensajes al delegarlos en la implementación de IDataObject en el objeto de datos que se encuentra en el Portapapeles.

Especificar NULL como valor de parámetro para OleSetClipboard vacía el Portapapeles actual. Si el contenido del Portapapeles es el resultado de una llamada anterior a OleSetClipboard y se ha liberado el portapapeles, se libera el puntero IDataObject que se pasó a la llamada anterior. El propietario del Portapapeles debe usar esto como señal de que los datos que ofrece anteriormente ya no están en el Portapapeles.

Si necesita dejar los datos en el Portapapeles una vez cerrada la aplicación, debe llamar a OleFlushClipboard en lugar de llamar a OleSetClipboard con un valor de parámetro NULL .

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ole2.h
Library Ole32.lib
Archivo DLL Ole32.dll
Conjunto de API ext-ms-win-com-ole32-l1-1-5 (introducido en Windows 10, versión 10.0.15063)

Consulte también

OleFlushClipboard

OleGetClipboard

OleIsCurrentClipboard