Compartilhar via


Função OleSetClipboard (ole2.h)

Coloca um ponteiro para um objeto de dados específico na área de transferência. Isso torna o objeto de dados acessível para a função OleGetClipboard .

Sintaxe

HRESULT OleSetClipboard(
  [in] LPDATAOBJECT pDataObj
);

Parâmetros

[in] pDataObj

Ponteiro para a interface IDataObject no objeto de dados do qual os dados a serem colocados na área de transferência podem ser obtidos. Esse parâmetro pode ser NULL; nesse caso, a área de transferência é esvaziada.

Valor retornado

Essa função retorna S_OK em caso de êxito. Outros valores possíveis incluem o seguinte.

Código de retorno Descrição
CLIPBRD_E_CANT_OPEN
Falha na função OpenClipboard usada no OleSetClipboard .
CLIPBRD_E_CANT_EMPTY
Falha na função EmptyClipboard usada no OleSetClipboard .
CLIPBRD_E_CANT_CLOSE
Falha na função CloseClipboard usada no OleSetClipboard .
CLIPBRD_E_CANT_SET
Falha na função SetClipboardData usada no OleSetClipboard .

Comentários

Se você estiver escrevendo um aplicativo que possa atuar como a origem de uma operação de área de transferência, faça o seguinte:

  • Crie um objeto de dados (no qual é a interface IDataObject ) para os dados que estão sendo copiados ou recortados para a área de transferência. Esse objeto deve ser o mesmo objeto usado em operações de arrastar e soltar OLE.
  • Chame OleSetClipboard para colocar o ponteiro IDataObject na área de transferência, para que ele seja acessível para a função OleGetClipboard . OleSetClipboard também chama o método IUnknown::AddRef em seu objeto de dados.
  • Se desejar, libere o objeto de dados depois de colocá-lo na área de transferência para liberar o contador IUnknown::AddRef em seu aplicativo.
  • Se o usuário estiver cortando dados (excluindo-os do documento e colocando-os na área de transferência), remova os dados do documento.
Todos os formatos são oferecidos na área de transferência usando renderização atrasada (a área de transferência contém apenas um ponteiro para o objeto de dados, a menos que uma chamada para OleFlushClipboard renderize os dados na área de transferência). Os formatos necessários para a compatibilidade do OLE 1 são sintetizados dos formatos OLE 2 que estão presentes e também são colocados na área de transferência.

A função OleSetClipboard atribui a propriedade da área de transferência a um identificador de janela OLE interno. A contagem de referência do objeto de dados é aumentada em 1, para habilitar a renderização atrasada. A contagem de referência é reduzida por uma chamada para a função OleFlushClipboard ou por uma chamada subsequente para OleSetClipboard especificando NULL como o valor do parâmetro (que limpa a área de transferência).

Quando um aplicativo abre a área de transferência (direta ou indiretamente chamando a função OpenClipboard ), a área de transferência não pode ser usada por nenhum outro aplicativo até que seja fechada. Se a área de transferência estiver aberta por outro aplicativo, o OleSetClipboard falhará. O identificador de janela OLE interno satisfaz WM_RENDERFORMAT mensagens delegando-as à implementação IDataObject no objeto de dados que está na área de transferência.

Especificar NULL como o valor do parâmetro para OleSetClipboard esvazia a área de transferência atual. Se o conteúdo da área de transferência for o resultado de uma chamada OleSetClipboard anterior e a área de transferência tiver sido liberada, o ponteiro IDataObject que foi passado para a chamada anterior será liberado. O proprietário da área de transferência deve usar isso como um sinal de que os dados oferecidos anteriormente não estão mais na área de transferência.

Se você precisar deixar os dados na área de transferência depois que o aplicativo for fechado, chame OleFlushClipboard em vez de chamar OleSetClipboard com um valor de parâmetro NULL .

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ole2.h
Biblioteca Ole32.lib
DLL Ole32.dll
Conjunto de APIs ext-ms-win-com-ole32-l1-1-5 (introduzido no Windows 10, versão 10.0.15063)

Confira também

OleFlushClipboard

OleGetClipboard

OleIsCurrentClipboard