The SetClipboardData function places data on the clipboard in a specified clipboard format. The window must be the current clipboard owner, and the application must have called the OpenClipboard function. (When responding to the WM_RENDERFORMAT and WM_RENDERALLFORMATS messages, the clipboard owner must not call OpenClipboard before calling SetClipboardData.)
HANDLE SetClipboardData(
UINT uFormat, |
// clipboard format |
HANDLE hMem |
// data handle |
); |
Once SetClipboardData is called, the system owns the object identified by the hMem parameter. The application can read the data, but must not free the handle or leave it locked. If the hMem parameter identifies a memory object, the object must have been allocated using the GlobalAlloc function with the GMEM_MOVEABLE and GMEM_DDESHARE flags.
If the function succeeds, the return value is the handle of the data.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
The uFormat parameter can identify a registered clipboard format, or it can be one of the following values:
Value |
Meaning |
CF_BITMAP |
A handle to a bitmap (HBITMAP). |
CF_DIB |
A memory object containing a BITMAPINFO structure followed by the bitmap bits. |
CF_DIF |
Software Arts’ Data Interchange Format. |
CF_DSPBITMAP |
Bitmap display format associated with a private format. The hMem parameter must be a handle of data that can be displayed in bitmap format in lieu of the privately formatted data. |
CF_DSPENHMETAFILE |
Enhanced metafile display format associated with a private format. The hMem parameter must be a handle of data that can be displayed in enhanced metafile format in lieu of the privately formatted data. |
CF_DSPMETAFILEPICT |
Metafile-picture display format associated with a private format. The hMem parameter must be a handle of data that can be displayed in metafile-picture format in lieu of the privately formatted data. |
CF_DSPTEXT |
Text display format associated with a private format. The hMem parameter must be a handle of data that can be displayed in text format in lieu of the privately formatted data. |
CF_ENHMETAFILE |
A handle of an enhanced metafile (HENHMETAFILE). |
CF_GDIOBJFIRST through CF_GDIOBJLAST |
Range of integer values for application-defined GDI object clipboard formats. Handles associated with clipboard formats in this range are not automatically deleted using the GlobalFree function when the clipboard is emptied. Also, when using values in this range, the hMem parameter is not a handle to a GDI object, but is a handle allocated by the GlobalAlloc function with the GMEM_DDESHARE and GMEM_MOVEABLE flags. |
CF_HDROP |
A handle of type HDROP that identifies a list of files. An application can retrieve information about the files by passing the handle to the DragQueryFile functions. |
CF_LOCALE |
The data is a handle to the locale identifier associated with text in the clipboard. When you close the clipboard, if it contains CF_TEXT data but no CF_LOCALE data, the system automatically sets the CF_LOCALE format to the current input locale. You can use the CF_LOCALE format to associate a different locale with the clipboard text. An application that pastes text from the clipboard can retrieve this format to determine which character set was used to generate the text. Note that the clipboard does not support plain text in multiple character sets. To achieve this, use a fomatted text data type such as RTF instead. Windows NT: The system uses the code page associated with CF_LOCALE to implicitly convert from CF_TEXT to CF_UNICODETEXT. Therefore, the correct code page table is used for the conversion. |
CF_METAFILEPICT |
Handle of a metafile picture format as defined by the METAFILEPICT structure. When passing a CF_METAFILEPICT handle by means of dynamic data exchange (DDE), the application responsible for deleting hMem should also free the metafile referred to by the CF_METAFILEPICT handle. |
CF_OEMTEXT |
Text format containing characters in the OEM character set. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data. |
CF_OWNERDISPLAY |
Owner-display format. The clipboard owner must display and update the clipboard viewer window, and receive the WM_ASKCBFORMATNAME, WM_HSCROLLCLIPBOARD, WM_PAINTCLIPBOARD, WM_SIZECLIPBOARD, and WM_VSCROLLCLIPBOARD messages. The hMem parameter must be NULL. |
CF_PALETTE |
Handle of a color palette. Whenever an application places data in the clipboard that depends on or assumes a color palette, it should place the palette on the clipboard as well. |
If the clipboard contains data in the CF_PALETTE (logical color palette) format, the application should use the SelectPalette and RealizePalette functions to realize (compare) any other data in the clipboard against that logical palette. | |
When displaying clipboard data, Windows clipboard always uses as its current palette any object on the clipboard that is in the CF_PALETTE format. | |
CF_PENDATA |
Data for the pen extensions to the Microsoft Windows for Pen Computing. |
CF_PRIVATEFIRST through CF_PRIVATELAST |
Range of integer values for private clipboard formats. Handles associated with private clipboard formats are not freed automatically; the clipboard owner must free such handles, typically in response to the WM_DESTROYCLIPBOARD message. |
CF_RIFF |
Represents audio data more complex than can be represented in a CF_WAVE standard wave format. |
CF_SYLK |
Microsoft Symbolic Link (SYLK) format. |
CF_TEXT |
Text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data. Use this format for ANSI text. |
CF_WAVE |
Represents audio data in one of the standard wave formats, such as 11 kHz or 22 kHz pulse code modulation (PCM). |
CF_TIFF |
Tagged-image file format. |
CF_UNICODETEXT |
Windows NT only: Unicode text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data. |
Clipboard Format |
Conversion Format |
Platform Support |
CF_BITMAP |
CF_DIB |
Windows NT, Windows 95 |
CF_DIB |
CF_BITMAP |
Windows NT, Windows 95 |
CF_DIB |
CF_PALETTE |
Windows NT, Windows 95 |
CF_ENHMETAFILE |
CF_METAFILEPICT |
Windows NT, Windows 95 |
CF_METAFILEPICT |
CF_ENHMETAFILE |
Windows NT, Windows 95 |
CF_OEMTEXT |
CF_TEXT |
Windows NT, Windows 95 |
CF_OEMTEXT |
CF_UNICODETEXT |
Windows NT |
CF_TEXT |
CF_OEMTEXT |
Windows NT, Windows 95 |
CF_TEXT |
CF_UNICODETEXT |
Windows NT |
CF_UNICODETEXT |
CF_OEMTEXT |
Windows NT |
CF_UNICODETEXT |
CF_TEXT |
Windows NT |
If the operating system provides an automatic type conversion for a particular clipboard format, there is no advantage to placing the conversion format(s) on the clipboard.
When copying bitmaps, it is best to place only the CF_DIB format on the clipboard. This is because the colors in a device-dependent bitmap (CF_BITMAP) are relative to the system palette, which may change before the bitmap is pasted. If only the CF_DIB format is on the clipboard and a window requests the CF_BITMAP format, the system renders the device-dependent bitmap using the current palette at that time.
If you place the CF_BITMAP format on the clipboard (and not CF_DIB), the system renders the CF_DIB clipboard format as soon as the clipboard is closed. This ensures that the correct palette is used to generate the device-independent bitmap (DIB). Conversions between other clipboard formats occur upon demand.
Windows platforms support two clipboard formats for metafiles: CF_ENHMETAFILE and CF_METAFILEPICT. Specify CF_ENHMETAFILE for enhanced metafiles and CF_METAFILEPICT for Windows metafiles.
BITMAPINFO, GetClipboardData, GlobalAlloc, GlobalFree, METAFILEPICT, OpenClipboard, RealizePalette, RegisterClipboardFormat, SelectPalette, WM_ASKCBFORMATNAME, WM_DESTROYCLIPBOARD, WM_HSCROLLCLIPBOARD, WM_PAINTCLIPBOARD, WM_RENDERFORMAT, WM_RENDERALLFORMATS, WM_SIZECLIPBOARD, WM_VSCROLLCLIPBOARD