Globals

The Globals structure contains various functions to operate on handles, functions to obtain handles to the Poly/ML application and window and a function to get error information.

structure Globals :
  sig
    type 'a HANDLE
    type HINSTANCE
    type HWND
    val hNull : 'a HANDLE
    val handleOfInt : int -> 'a HANDLE
    val intOfHandle : 'a HANDLE -> int
    val isHNull : 'a HANDLE -> bool

    val ApplicationInstance : unit -> HINSTANCE
    val GetLastError : unit -> OS.syserror
    val MainWindow : unit -> HWND
  end

type 'a HANDLE
hNull : 'a HANDLE
handleOfInt(i): 'a HANDLE
intOfHandle(h): int
isHNull(h): bool

ML Extension: All handles, such as HWND and HBITMAP, are instances of the 'a HANDLE type. Generally the Windows functions which can take NULL as a valid argument or return NULL as a valid result take option types.  Occasionally it may be necessary to pass NULL in other circumstances in which case hNull can be used in ML.  There are also a few occasions where a handle has to be cast to or from int.  handleOfInt and intOfHandle can be used for this.

ApplicationInstance(): HINSTANCE
ML Extension: Returns the application instance handle passed in to the WinMain function when Poly/ML was started.

MainWindow(): HWND
ML Extension: Returns the handle to the Poly/ML window.

GetLastError(): OS.syserror
Returns the error code for the last function call.  Generally when a function fails an exception is raised including the last error as part of the exception packet.