# Clipboard

The clipboard is used as a way of copying data within an application or between applications.

    structure Clipboard :
      sig
        datatype ClipboardFormat =
            CF_NONE | CF_TEXT | CF_BITMAP | CF_METAFILEPICT | CF_SYLK | CF_DIF | CF_TIFF |
            CF_OEMTEXT | CF_DIB | CF_PALETTE | CF_PENDATA | CF_RIFF | CF_WAVE | CF_UNICODETEXT |
            CF_ENHMETAFILE | CF_OWNERDISPLAY | CF_DSPTEXT | CF_DSPBITMAP | CF_DSPMETAFILEPICT |
            CF_DSPENHMETAFILE | CF_PRIVATE of int | CF_GDIOBJ of int | CF_REGISTERED of int |
            CF_HDROP | CF_LOCALE

        type HBITMAP and HPALETTE and HWND and HDROP

        datatype CLIPHANDLE =
            CH_NONE |
            CH_TEXT of string |
            CH_BITMAP of HBITMAP |
            CH_METAFILEPICT of Metafile.METAFILEPICT |
            CH_SYLK of Word8Vector.vector |
            CH_DIF of Word8Vector.vector |
            CH_TIFF of Word8Vector.vector |
            CH_OEMTEXT of string |
            CH_DIB of Word8Vector.vector |
            CH_PALETTE of HPALETTE |
            CH_PENDATA of Word8Vector.vector |
            CH_RIFF of Word8Vector.vector |
            CH_WAVE of Word8Vector.vector |
            CH_UNICODETEXT of Word8Vector.vector |
            CH_ENHMETAFILE of Metafile.HENHMETAFILE |
            CH_OWNERDISPLAY of Word8Vector.vector |
            CH_DSPTEXT of Word8Vector.vector |
            CH_DSPBITMAP of Word8Vector.vector |
            CH_DSPMETAFILEPICT of Word8Vector.vector |
            CH_DSPENHMETAFILE of Word8Vector.vector |
            CH_PRIVATE of int * Word8Vector.vector |
            CH_GDIOBJ of int * Word8Vector.vector |
            CH_REGISTERED of int * Word8Vector.vector |
            CH_HDROP of HDROP |
            CH_LOCALE of Word8Vector.vector

        val ChangeClipboardChain : HWND * HWND -> bool
        val CloseClipboard : unit -> unit
        val CountClipboardFormats : unit -> int
        val EmptyClipboard : unit -> unit
        val EnumClipboardFormats : ClipboardFormat -> ClipboardFormat
        val GetClipboardData : ClipboardFormat -> CLIPHANDLE
        val GetClipboardFormatName : ClipboardFormat -> string
        val GetClipboardOwner : unit -> HWND
        val GetClipboardViewer : unit -> HWND
        val GetOpenClipboardWindow : unit -> HWND
        val GetPriorityClipboardFormat : ClipboardFormat list -> ClipboardFormat option
        val IsClipboardFormatAvailable : ClipboardFormat -> bool
        val OpenClipboard : HWND option -> unit
        val RegisterClipboardFormat : string -> ClipboardFormat
        val SetClipboardData : CLIPHANDLE -> unit
        val SetClipboardViewer : HWND -> HWND
      end

`datatype ClipboardFormat`
represents the various kinds of information which can be stored on the clipboard. As well as the formats defined in Windows the ML interface defines four extra formats. CF_NONE is used when no format is specified. CF_PRIVATE, CF_GDIOBJ and CF_REGISTERED are used for clipboard formats in the private range, GDI object range and registered format range.

`datatype CLIPHANDLE`
is used when extracting information from the clipboard or setting the clipboard contents.