# Cursor

The Cursor structure contains functions and structures to create and operate on cursors.

    structure Cursor:
      sig
        type HCURSOR and HINSTANCE
        type POINT = { x : int, y: int }
        type RECT =  { left: int, top: int, right: int, bottom: int }
        val hcursorNull : HCURSOR
        val isHcursorNull : HCURSOR -> bool

        datatype
          CursorId =
              OCR_APPSTARTING
            | OCR_CROSS
            | OCR_IBEAM
            | OCR_NO
            | OCR_NORMAL
            | OCR_SIZEALL
            | OCR_SIZENESW
            | OCR_SIZENS
            | OCR_SIZENWSE
            | OCR_SIZEWE
            | OCR_UP
            | OCR_WAIT

        val ClipCursor : RECT -> unit
        val CopyCursor : HCURSOR -> HCURSOR
        val DestroyCursor : HCURSOR -> unit
        val GetClipCursor : unit -> RECT
        val GetCursor : unit -> HCURSOR
        val GetCursorPos : unit -> POINT
        val LoadCursor : HINSTANCE * Resource.RESID -> HCURSOR
        val LoadCursorFromFile : string -> HCURSOR
        val LoadSystemCursor : CursorId -> HCURSOR
        val LoadSystemCursorFromFile : CursorId -> HCURSOR
        val SetCursor : HCURSOR -> HCURSOR
        val SetCursorPos : int * int -> unit
        val SetSytemCursor : HCURSOR * CursorId -> unit
        val ShowCursor : bool -> int
      end