The DeviceContext structure contains functions and structures to create and operate on device contexts.
structure DeviceContext: sig type BITMAP and HDC and HGDIOBJ and HWND and HRGN type LOGBRUSH = Brush.LOGBRUSH type LOGFONT = Font.LOGFONT type LOGPEN = Pen.LOGPEN type POINT = {x: int, y: int} type StockObjectType val ANSI_FIXED_FONT : StockObjectType val ANSI_VAR_FONT : StockObjectType val BLACK_BRUSH : StockObjectType val BLACK_PEN : StockObjectType val CLR_INVALID : StockObjectType val DEFAULT_PALETTE : StockObjectType val DEVICE_DEFAULT_FONT : StockObjectType val DKGRAY_BRUSH : StockObjectType val GRAY_BRUSH : StockObjectType val HOLLOW_BRUSH : StockObjectType val LTGRAY_BRUSH : StockObjectType val NULL_BRUSH : StockObjectType val NULL_PEN : StockObjectType val OEM_FIXED_FONT : StockObjectType val SYSTEM_FIXED_FONT : StockObjectType val SYSTEM_FONT : StockObjectType val WHITE_BRUSH : StockObjectType val WHITE_PEN : StockObjectType val GetStockObject : StockObjectType -> HGDIOBJ eqtype DeviceItem val ASPECTX : DeviceItem val ASPECTXY : DeviceItem val ASPECTY : DeviceItem val BITSPIXEL : DeviceItem val CLIPCAPS : DeviceItem val COLORRES : DeviceItem val CURVECAPS : DeviceItem val DRIVERVERSION : DeviceItem val HORZRES : DeviceItem val HORZSIZE : DeviceItem val LINECAPS : DeviceItem val LOGPIXELSX : DeviceItem val LOGPIXELSY : DeviceItem val NUMBRUSHES : DeviceItem val NUMCOLORS : DeviceItem val NUMFONTS : DeviceItem val NUMMARKERS : DeviceItem val NUMPENS : DeviceItem val NUMRESERVED : DeviceItem val PDEVICESIZE : DeviceItem val PHYSICALHEIGHT : DeviceItem val PHYSICALOFFSETX : DeviceItem val PHYSICALOFFSETY : DeviceItem val PHYSICALWIDTH : DeviceItem val PLANES : DeviceItem val POLYGONALCAPS : DeviceItem val RASTERCAPS : DeviceItem val SCALINGFACTORX : DeviceItem val SCALINGFACTORY : DeviceItem val SIZEPALETTE : DeviceItem val TECHNOLOGY : DeviceItem val TEXTCAPS : DeviceItem val VERTRES : DeviceItem val VERTSIZE : DeviceItem val GetDeviceCaps : HDC * DeviceItem -> int (* Results of various calls to GetDeviceCaps. *) val CC_CHORD : int val CC_CIRCLES : int val CC_ELLIPSES : int val CC_INTERIORS : int val CC_NONE : int val CC_PIE : int val CC_ROUNDRECT : int val CC_STYLED : int val CC_WIDE : int val CC_WIDESTYLED : int val CP_NONE : int val CP_RECTANGLE : int val CP_REGION : int val DT_CHARSTREAM : int val DT_DISPFILE : int val DT_METAFILE : int val DT_PLOTTER : int val DT_RASCAMERA : int val DT_RASDISPLAY : int val DT_RASPRINTER : int val LC_INTERIORS : int val LC_MARKER : int val LC_NONE : int val LC_POLYLINE : int val LC_POLYMARKER : int val LC_STYLED : int val LC_WIDE : int val LC_WIDESTYLED : int val PC_INTERIORS : int val PC_NONE : int val PC_PATHS : int val PC_POLYGON : int val PC_POLYPOLYGON : int val PC_RECTANGLE : int val PC_SCANLINE : int val PC_STYLED : int val PC_TRAPEZOID : int val PC_WIDE : int val PC_WIDESTYLED : int val PC_WINDPOLYGON : int val RC_BANDING : int val RC_BIGFONT : int val RC_BITBLT : int val RC_BITMAP64 : int val RC_DEVBITS : int val RC_DIBTODEV : int val RC_DI_BITMAP : int val RC_FLOODFILL : int val RC_GDI20_OUTPUT : int val RC_GDI20_STATE : int val RC_OP_DX_OUTPUT : int val RC_PALETTE : int val RC_SAVEBITMAP : int val RC_SCALING : int val RC_STRETCHBLT : int val RC_STRETCHDIB : int val TC_CP_STROKE : int val TC_CR_90 : int val TC_CR_ANY : int val TC_EA_DOUBLE : int val TC_IA_ABLE : int val TC_OP_CHARACTER : int val TC_OP_STROKE : int val TC_RA_ABLE : int val TC_RESERVED : int val TC_SA_CONTIN : int val TC_SA_DOUBLE : int val TC_SA_INTEGER : int val TC_SCROLLBLT : int val TC_SF_X_YINDEP : int val TC_SO_ABLE : int val TC_UA_ABLE : int val TC_VA_ABLE : int datatype DMColor = DMCOLOR_COLOR | DMCOLOR_MONOCHROME and DMDither = DMDITHER_COARSE | DMDITHER_FINE | DMDITHER_GRAYSCALE | DMDITHER_LINEART | DMDITHER_NONE | DMDITHER_OTHER of int and DMDuplex = DMDUP_HORIZONTAL | DMDUP_SIMPLEX | DMDUP_VERTICAL and DMICMIntent = DMICMINTENT_OTHER of int | DMICM_COLORMETRIC | DMICM_CONTRAST | DMICM_SATURATE and DMICMMethod = DMICMMETHOD_DEVICE | DMICMMETHOD_DRIVER | DMICMMETHOD_NONE | DMICMMETHOD_OTHER of int | DMICMMETHOD_SYSTEM and DMMedia = DMICMMEDIA_OTHER of int | DMMEDIA_GLOSSY | DMMEDIA_STANDARD | DMMEDIA_TRANSPARENCY and DMOrientation = DMORIENT_LANDSCAPE | DMORIENT_PORTRAIT and DMPaperSize = DMPAPER_10X11 | DMPAPER_10X14 | DMPAPER_11X17 | DMPAPER_15X11 | DMPAPER_9X11 | DMPAPER_A2 | DMPAPER_A3 | DMPAPER_A3_EXTRA | DMPAPER_A3_EXTRA_TRANSVERSE | DMPAPER_A3_TRANSVERSE | DMPAPER_A4 | DMPAPER_A4SMALL | DMPAPER_A4_EXTRA | DMPAPER_A4_PLUS | DMPAPER_A4_TRANSVERSE | DMPAPER_A5 | DMPAPER_A5_EXTRA | DMPAPER_A5_TRANSVERSE | DMPAPER_A_PLUS | DMPAPER_B4 | DMPAPER_B5 | DMPAPER_B5_EXTRA | DMPAPER_B5_TRANSVERSE | DMPAPER_B_PLUS | DMPAPER_CSHEET | DMPAPER_DSHEET | DMPAPER_ENV_10 | DMPAPER_ENV_11 | DMPAPER_ENV_12 | DMPAPER_ENV_14 | DMPAPER_ENV_9 | DMPAPER_ENV_B4 | DMPAPER_ENV_B5 | DMPAPER_ENV_B6 | DMPAPER_ENV_C3 | DMPAPER_ENV_C4 | DMPAPER_ENV_C5 | DMPAPER_ENV_C6 | DMPAPER_ENV_C65 | DMPAPER_ENV_DL | DMPAPER_ENV_INVITE | DMPAPER_ENV_ITALY | DMPAPER_ENV_MONARCH | DMPAPER_ENV_PERSONAL | DMPAPER_ESHEET | DMPAPER_EXECUTIVE | DMPAPER_FANFOLD_LGL_GERMAN | DMPAPER_FANFOLD_STD_GERMAN | DMPAPER_FANFOLD_US | DMPAPER_FOLIO | DMPAPER_ISO_B4 | DMPAPER_JAPANESE_POSTCARD | DMPAPER_LEDGER | DMPAPER_LEGAL | DMPAPER_LEGAL_EXTRA | DMPAPER_LETTER | DMPAPER_LETTERSMALL | DMPAPER_LETTER_EXTRA | DMPAPER_LETTER_EXTRA_TRANSVERSE | DMPAPER_LETTER_PLUS | DMPAPER_LETTER_TRANSVERSE | DMPAPER_NOTE | DMPAPER_OTHER of int | DMPAPER_QUARTO | DMPAPER_RESERVED_48 | DMPAPER_RESERVED_49 | DMPAPER_STATEMENT | DMPAPER_TABLOID | DMPAPER_TABLOID_EXTRA and DMResolution = DMRES_DPI of int | DMRES_DRAFT | DMRES_HIGH | DMRES_LOW | DMRES_MEDIUM and DMSource = DMBIN_AUTO | DMBIN_CASSETTE | DMBIN_ENVELOPE | DMBIN_ENVMANUAL | DMBIN_FORMSOURCE | DMBIN_LARGECAPACITY | DMBIN_LARGEFMT | DMBIN_LOWER | DMBIN_MANUAL | DMBIN_MIDDLE | DMBIN_ONLYONE | DMBIN_SMALLFMT | DMBIN_TRACTOR | DMBIN_UPPER | DMSOURCE_OTHER of int and DMTrueType = DMTT_BITMAP | DMTT_DOWNLOAD | DMTT_DOWNLOAD_OUTLINE | DMTT_SUBDEV type DEVMODE = { deviceName: string, driverVersion: int, orientation: DMOrientation option, paperSize: DMPaperSize option, paperLength: int option, paperWidth: int option, scale: int option, copies: int option, defaultSource: DMSource option, printQuality: DMResolution option, color: DMColor option, duplex: DMDuplex option, yResolution: int option, ttOption: DMTrueType option, collate: bool option, formName: string option, logPixels: int option, bitsPerPixel: int option, pelsWidth: int option, pelsHeight: int option, displayFlags: int option, (* Apparently no longer used. *) displayFrequency: int option, icmMethod: DMICMMethod option, icmIntent: DMICMIntent option, mediaType: DMMedia option, ditherType: DMDither option, iccManufacturer: int option, iccModel: int option, panningWidth: int option, panningHeight: int option, driverPrivate: Word8Vector.vector } val CancelDC : HDC -> unit val CreateCompatibleDC : HDC -> HDC val CreateDC : string option * string option * string option * DEVMODE option -> HDC val DeleteDC : HDC -> unit val DeleteObject : HGDIOBJ -> unit datatype EnumObject = OBJ_BITMAP | OBJ_BRUSH | OBJ_DC | OBJ_ENHMETADC | OBJ_ENHMETAFILE | OBJ_EXTPEN | OBJ_FONT | OBJ_MEMDC | OBJ_METADC | OBJ_METAFILE | OBJ_PAL | OBJ_PEN | OBJ_REGION val GetCurrentObject : HDC * EnumObject -> HGDIOBJ val GetDC : HWND -> HDC datatype DeviceContextFlag = DCX_CACHE | DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | DCX_EXCLUDERGN | DCX_EXCLUDEUPDATE | DCX_INTERSECTRGN | DCX_INTERSECTUPDATE | DCX_LOCKWINDOWUPDATE | DCX_NORECOMPUTE | DCX_NORESETATTRS | DCX_PARENTCLIP | DCX_VALIDATE | DCX_WINDOW val GetDCEx : HWND * HRGN * DeviceContextFlag list -> HDC val GetDCOrgEx : HDC -> POINT datatype GetObject = GO_Bitmap of BITMAP | GO_Brush of LOGBRUSH | GO_Font of LOGFONT | GO_Palette of int | GO_Pen of LOGPEN val GetObject : HGDIOBJ -> GetObject val GetObjectType : HGDIOBJ -> EnumObject val ReleaseDC : HWND * HDC -> bool val ResetDC : HDC * DEVMODE -> HDC val RestoreDC : HDC * int -> unit val SaveDC : HDC -> int val SelectObject : HDC * HGDIOBJ -> HGDIOBJ type DEVNAMES = {driver: string, device: string, output: string, default: bool} end