Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / operating-systems / Windows

Windows Clipboard Formats

4.99/5 (17 votes)
7 Mar 2018CPOL6 min read 71.1K  
An overview of clipboard and Drag & Drop object formats
This reference gives you an overview of standard and common clipboard formats with links to the data structures.

Definitions

The following type definitions are used in the below tables:

ANSI text
Null terminated ANSI or multi byte string
Unicode text
Null terminated Unicode (UTF-16LE) string
ANSI / Unicode text list
List of null terminated strings followed by a NULL character (double NULL terminated)
ASCII / ANSI text
ASCII 7-bit text by definition but ANSI 8-bit text may be supported
DWORD (BOOL)
DWORD value representing a boolean value (true if not zero)

Links indicate the destination in brackets. For MSDN links in the tables, the indication is omitted.

Standard Clipboard Formats

The Standard Clipboard Formats [MSDN] use numeric IDs defined in WinUser.h. All non-standard formats must be registered using a unique format name.

Format Identifier Data Type Description
CF_TEXT (1) ANSI text Text
CF_BITMAP (2) HBITMAP Handle to a bitmap (GDI object)
CF_METAFILEPICT (3) METAFILEPICT Windows-Format Metafiles picture
CF_SYLK (4) ANSI text Microsoft Symbolic Link [Wikipedia]
CF_DIF (5) ASCII text Software Arts Data Interchange Format [Wikipedia]
CF_TIFF (6) TIFF [Wikipedia] TIFF image
CF_OEMTEXT (7) 8-Bit DOS text Text
CF_DIB (8) BITMAPINFO Structure followed by bitmap bits
CF_PALETTE (9) HPALETTE Handle to a color palette (GDI object)
CF_PENDATA (10) - Windows 3.1 pen extension data
CF_RIFF (11) RIFF Resource Interchange File Format (RIFF) audio
CF_WAVE (12) WAVE WAVE audio
CF_UNICODETEXT (13) Unicode text Text
CF_ENHMETAFILE (14) HENHMETAFILE Enhanced-Format Metafiles handle
CF_HDROP (15) DROPFILES List of file names
CF_LOCALE (16) DWORD (LCID) LCID for CF_TEXT to CF_UNICODE conversion
CF_DIBV5 (17) BITMAPV5HEADER Structure followed by bitmap bits
CF_DSPTEXT (0x0081) ANSI text Text
CF_DSPBITMAP (0x0082) HBITMAP Handle to a bitmap (GDI object)
CF_DSPMETAFILEPICT (0x0083) METAFILEPICT Windows-Format Metafiles picture
CF_DSPENHMETAFILE (0x008E) HENHMETAFILE Enhanced-Format Metafiles handle

Shell Clipboard Formats

The Shell Clipboard Formats [MSDN] are used to transfer shell objects via clipboard and Drag & Drop. For most of them, there is a definition for the format name in the header file shlobj.h:

Definition Format Name
CFSTR_SHELLIDLIST Shell IDList Array
CFSTR_SHELLIDLISTOFFSET Shell Object Offsets
CFSTR_NETRESOURCES Net Resource
CFSTR_FILEDESCRIPTORA FileGroupDescriptor
CFSTR_FILEDESCRIPTORW FileGroupDescriptorW
CFSTR_FILECONTENTS FileContents
CFSTR_FILENAMEA FileName
CFSTR_FILENAMEW FileNameW
CFSTR_PRINTERGROUP PrinterFriendlyName
CFSTR_FILENAMEMAPA FileNameMap
CFSTR_FILENAMEMAPW FileNameMapW
CFSTR_SHELLURL UniformResourceLocator
CFSTR_INETURLA UniformResourceLocator
CFSTR_INETURLW UniformResourceLocatorW
CFSTR_PREFERREDDROPEFFECT Preferred DropEffect
CFSTR_PERFORMEDDROPEFFECT Performed DropEffect
CFSTR_PASTESUCCEEDED Paste Succeeded
CFSTR_INDRAGLOOP InShellDragLoop
CFSTR_DRAGCONTEXT DragContext
CFSTR_MOUNTEDVOLUME MountedVolume
CFSTR_PERSISTEDDATAOBJECT PersistedDataObject
CFSTR_TARGETCLSID TargetCLSID
CFSTR_LOGICALPERFORMEDDROPEFFECT Logical Performed DropEffect
CFSTR_AUTOPLAY_SHELLIDLISTS Autoplay Enumerated IDList Array
CFSTR_UNTRUSTEDDRAGDROP UntrustedDragDrop
CFSTR_FILE_ATTRIBUTES_ARRAY File Attributes Array
CFSTR_INVOKECOMMAND_DROPPARAM InvokeCommand DropParam
CFSTR_SHELLDROPHANDLER DropHandlerCLSID
CFSTR_DROPDESCRIPTION DropDescription

 

Format Name Data Type Description
AsyncFlag DWORD (BOOL) Perform insert/paste operation in the background. Used by Explorer to avoid blocking the current instance
FileContents Binary File content
FileGroupDescriptor FILEGROUPDESCRIPTOR Array of FILEDESCRIPTORs
FileGroupDescriptorW FILEGROUPDESCRIPTOR Array of FILEDESCRIPTORs
FileName ANSI text Single file name in short (8.3) format
FileNameW Unicode text Single file name
FileNameMap ANSI text list List of file names when renaming
FileNameMapW Unicode text list List of file names when renaming
MountedVolume Unicode text Path for mounted volume
Shell IDList Array CIDA Array of PIDL (pointer to ITEMIDLIST) offsets
Autoplay Enumerated IDList Array CIDA Array of PIDL (pointer to ITEMIDLIST) offsets
Shell Object Offsets POINT[] Array of points
File Attributes Array FILE_ATTRIBUTES_ARRAY Array of file attributes
Net Resource NRESARRAY Array of NETRESOURCE structures
PrinterFriendlyName DROPFILES List of printer names
UniformResourceLocator ANSI text URL
UniformResourceLocatorW Unicode text URL

Drag & Drop Related Formats

These formats are used with Drag & Drop. Most of them are not documented.

Format Name Data Type Description
ComputedImage DWORD ?
DisableDragText DWORD (BOOL) ?
DragContext IStream Used internally by the Windows drag/drop helpers
DragImageBits SHDRAGIMAGE Drag image bitmap
DragSourceHelperFlags DWORD Value passed to IDragSourceHelper2::SetFlags
DragWindow DWORD (HWND) The window handle of the drag image window
DropDescription DROPDESCRIPTION Aero drag cursor type and text
DropHandlerCLSID CLSID GUID CLSID GUID of the drop handler
InShellDragLoop DWORD (BOOL) Nonzero when within a drag-and-drop loop
InvokeCommand DropParam Unicode text ?
IsComputingImage DWORD (BOOL) ?
IsShowingLayered DWORD (BOOL) Nonzero when a drop target shows the drag image
IsShowingText DWORD (BOOL) Nonzero when a drop target requests update of Aero cursor
Logical Performed DropEffect DWORD (DROPEFFECT) Logically performed drop effect with optimized moves
Paste Succeeded DWORD (DROPEFFECT) Set by target when delete-on-paste operation succeeded
Performed DropEffect DWORD (DROPEFFECT) Performed drop effect set by the target
Preferred DropEffect DWORD (DROPEFFECT) Preferred drop effect set by source. Used also with clipboard
TargetCLSID CLSID GUID CLSID GUID of the drop target
UntrustedDragDrop DWORD URL Action Flags
UsingDefaultDragImage DWORD (BOOL) Nonzero when the drag image is a system default image

OLE Formats

Format Name Data Type Description
Link ANSI text list OLE 1.0 link
Native Binary OLE 1.0 data
ObjectLink ANSI text list OLE 1.0 link
OwnerLink ANSI text list OLE 1.0 link
Data Object Binary OLE 2.0 data
Embedded Object Binary OLE 2.0 data
Object Descriptor OBJECTDESCRIPTOR OLE 2.0 User interface information
Link Source Descriptor OBJECTDESCRIPTOR OLE 2.0 User interface information
Link Source IMoniker OLE 2.0. Followed by document class ID
Hyperlink IHlink Methods to enable a hyperlink to navigate to its target

Common Application Clipboard Formats

Many applications use the file extension or the MIME type [Wikipedia] as format name and pass data using the corresponding file format. The format names are case-insensitive but it is common practice to use all lower case for MIME types, all upper case for file extensions and Pascal case (upper case for first letter of each word) for descriptive names. Clipboard and drop target applications that should be able to receive such formats should register all commonly used format name variations.

The header file UrlMon.h contains some definitions for MIME types (see URL Moniker Clipboard Formats [MSDN]).

Common Text Formats

Format Name Data Type Description
text/plain ASCII / ANSI text See also CF_TEXT
HTML Format UTF-8 text Microsoft specific HTML clipboard format
text/html Text HTML [W3C] file content. The encoding is defined by BOM and HTML headers
HTML (Hyper Text Markup Language) Text See text/html
text/csv ASCII / ANSI text Comma-Separated Values (CSV) [IETF] file content
CSV ASCII / ANSI text See text/csv
text/richtext ASCII / ANSI text Word 2007: Rich Text Format (RTF) Specification, version 1.9.1 [Microsoft]
Rich Text Format ASCII / ANSI text See above
Rich Text Format Without Objects ASCII / ANSI text See above
RichEdit Text and Objects ASCII / ANSI text See above
RTF As Text ASCII / ANSI text See above
text/uri-list ASCII text The text/uri-list Internet Media Type [IETF]

Common Image Formats

Format Name Data Type Description
image/bmp BITMAPFILEHEADER File header followed by info header (see CF_DIB and CF_DIBV5) and bitmap data.
BMP BITMAPFILEHEADER See image/bmp
image/gif Binary GIF [W3C] file content
GIF Binary See image/gif
image/jpeg Binary JPEG [W3C] file content
JPEG Binary See image/jpeg
JPG Binary See image/jpeg
image/png Binary PNG [W3C] file content
PNG Binary See image/png
image/tiff Binary TIFF [Wikipedia] file content. See also CF_TIFF

Points of Interest

My article Drag & Drop Images and Drop Descriptions for MFC Applications contains a demo application that can be used to show the objects actually on the clipboard (clipboard viewer) and the drag objects when dropping on an info list.

References

History

  • 8th April, 2016: Initial version
  • 14th April, 2016: Minor text changings, added links to GUID and URL moniker formats
  • 18th April, 2016: Splitted and re-arranged tables, added some OLE formats, added text/richtext, corrected enhanced meta file type
  • 21st June, 2016: Added formats text/uri-list, image/bmp, BMP; added link to W3C clipboard API
  • 22nd June, 2017: Added AsyncFlag format and that Preferred DropEffect also used with clipboard
  • 8th March, 2018: Fixed wrong FileContents description

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)