|
OleSetClipboard
Places the specified IDataObject instance on the clipboard making it accessible to the OleGetClipboard function.
HRESULT OleSetClipboard(
IDataObject * pDataObj
| //The data object being copied or cut
| );
|
|
Parameter
pDataObj
Points to an IDataObject instance from which the data to be placed on the clipboard can be obtained. This parameter can be NULL; in which case the clipboard is emptied.
Return Values
S_OK
Indicates the IDataObject interface was placed on the clipboard.
CLIPBRD_E_CANT_OPEN
Indicates the Windows OpenClipboard function used within OleSetClipboard failed.
CLIPBRD_E_CANT_EMPTY
Indicates the Windows EmptyClipboard function used within OleSetClipboard failed.
CLIPBRD_E_CANT_CLOSE
Indicates the Windows CloseClipboard function used within OleSetClipboard failed.
Comments
If you are writing an application that can act as the source of a clipboard
operation, you must:
- Create an instance of the IDataObject interface for the data being copied or cut to the clipboard. This IDataObject should be the same as the IDataObject used in OLE drag and drop operations.
- Call OleSetClipboard to place the IDataObject on the clipboard and make it accessible to the OleGetClipboard function. OleSetClipboard also calls the IUnknown::AddRef method on your data object.
- If you wish, release the IDataObject once you have placed it on the clipboard to free the IUnknown::AddRef counter in your application.
- If the user is cutting data to the clipboard, remove the data from the
document.
All formats are offered on the clipboard using delayed rendering. The formats necessary for OLE 1 compatibility are synthesized from the OLE 2
formats that are present and are also put on the clipboard.
The OleSetClipboard function assigns ownership of the clipboard to an internal OLE window handle.
The reference count of the data object is increased by 1. This is done so that delayed rendering can be used. The reference count is
decreased by a call to the OleFlushClipboard function or by a subsequent call to OleSetClipboard using NULL.
The OleSetClipboard function empties the current clipboard before any new data is made available.
When an application opens the clipboard (either directly or indirectly by
calling the Windows OpenClipboard function), the clipboard cannot be used by any other application until it is
closed. If the clipboard is currently open by another application, OleSetClipboard fails. The internal OLE window handle satisfies WM_RENDERFORMAT messages by
delegating them to the instance of IDataObject that is on the clipboard.
Passing NULL for IDataObject is legal and it empties the clipboard. If the contents of the clipboard are the result of a previous OleSetClipboard call and the clipboard is released; the IDataObject that was passed to the previous call is released. The clipboard owner should use this as a signal that the data it previously
offered is no longer on the clipboard.
If you need to leave the data on the clipboard after your application is
closed, you can call OleFlushClipboard instead of OleSetClipboard using NULL.
See Also
OleGetClipboard, OleIsCurrentClipboard,
Related LinksSoftware for Delphi and C++ Builder developers Software for Visual Studio .NET developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference (win32.hlp) Win32 Multimedia Programmer's Reference (mmedia.hlp) Microsoft Windows Pen API Programmer's Reference (penapi.hlp) Microsoft Windows Sockets 2 Reference (sock2.hlp) Microsoft Windows Telephony API (TAPI) Programmer's Reference (sock2.hlp) Unix Manual Pages
|