The DragDrop structure provides functions to allow file names to be dragged and dropped onto a window. Calling DragAcceptFiles for a window allows it to accept dropped files.   It will then receive a WM_DROPFILES message containing a drop handle when one or more files are dropped on the window.  The file names are retrieved from the drop handle using DragQueryFile and the position within the window with DragQueryPoint.   To complete processing the message call DragFinish.

structure DragDrop:
    type HDROP
    type HWND (* = Window.HWND *)
    type POINT = { x: int, y: int }
    val DragAcceptFiles : HWND * bool -> unit
    val DragFinish : HDROP -> unit
    val DragQueryFile : HDROP -> string list
    val DragQueryPoint : HDROP -> POINT * bool