1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3
4<head>
5<title>Windows Interface Reference: DeviceContext structure</title>
6</head>
7
8<body>
9
10<h1>DeviceContext</h1>
11
12<p>The DeviceContext structure contains functions and structures to create and operate on
13device contexts.</p>
14
15<pre>structure DeviceContext:
16  sig
17    type BITMAP and HDC and HGDIOBJ and HWND and HRGN
18    type LOGBRUSH = Brush.LOGBRUSH
19    type LOGFONT = Font.LOGFONT
20    type LOGPEN = Pen.LOGPEN
21    type POINT = {x: int, y: int}
22
23    type StockObjectType
24    val ANSI_FIXED_FONT : StockObjectType
25    val ANSI_VAR_FONT : StockObjectType
26    val BLACK_BRUSH : StockObjectType
27    val BLACK_PEN : StockObjectType
28    val CLR_INVALID : StockObjectType
29    val DEFAULT_PALETTE : StockObjectType
30    val DEVICE_DEFAULT_FONT : StockObjectType
31    val DKGRAY_BRUSH : StockObjectType
32    val GRAY_BRUSH : StockObjectType
33    val HOLLOW_BRUSH : StockObjectType
34    val LTGRAY_BRUSH : StockObjectType
35    val NULL_BRUSH : StockObjectType
36    val NULL_PEN : StockObjectType
37    val OEM_FIXED_FONT : StockObjectType
38    val SYSTEM_FIXED_FONT : StockObjectType
39    val SYSTEM_FONT : StockObjectType
40    val WHITE_BRUSH : StockObjectType
41    val WHITE_PEN : StockObjectType
42
43    val GetStockObject : StockObjectType -&gt; HGDIOBJ
44
45    eqtype DeviceItem
46    val ASPECTX : DeviceItem
47    val ASPECTXY : DeviceItem
48    val ASPECTY : DeviceItem
49    val BITSPIXEL : DeviceItem
50    val CLIPCAPS : DeviceItem
51    val COLORRES : DeviceItem
52    val CURVECAPS : DeviceItem
53    val DRIVERVERSION : DeviceItem
54    val HORZRES : DeviceItem
55    val HORZSIZE : DeviceItem
56    val LINECAPS : DeviceItem
57    val LOGPIXELSX : DeviceItem
58    val LOGPIXELSY : DeviceItem
59    val NUMBRUSHES : DeviceItem
60    val NUMCOLORS : DeviceItem
61    val NUMFONTS : DeviceItem
62    val NUMMARKERS : DeviceItem
63    val NUMPENS : DeviceItem
64    val NUMRESERVED : DeviceItem
65    val PDEVICESIZE : DeviceItem
66    val PHYSICALHEIGHT : DeviceItem
67    val PHYSICALOFFSETX : DeviceItem
68    val PHYSICALOFFSETY : DeviceItem
69    val PHYSICALWIDTH : DeviceItem
70    val PLANES : DeviceItem
71    val POLYGONALCAPS : DeviceItem
72    val RASTERCAPS : DeviceItem
73    val SCALINGFACTORX : DeviceItem
74    val SCALINGFACTORY : DeviceItem
75    val SIZEPALETTE : DeviceItem
76    val TECHNOLOGY : DeviceItem
77    val TEXTCAPS : DeviceItem
78    val VERTRES : DeviceItem
79    val VERTSIZE : DeviceItem
80
81    val GetDeviceCaps : HDC * DeviceItem -&gt; int
82
83   (* Results of various calls to GetDeviceCaps. *)
84    val CC_CHORD : int
85    val CC_CIRCLES : int
86    val CC_ELLIPSES : int
87    val CC_INTERIORS : int
88    val CC_NONE : int
89    val CC_PIE : int
90    val CC_ROUNDRECT : int
91    val CC_STYLED : int
92    val CC_WIDE : int
93    val CC_WIDESTYLED : int
94
95    val CP_NONE : int
96    val CP_RECTANGLE : int
97    val CP_REGION : int
98
99    val DT_CHARSTREAM : int
100    val DT_DISPFILE : int
101    val DT_METAFILE : int
102    val DT_PLOTTER : int
103    val DT_RASCAMERA : int
104    val DT_RASDISPLAY : int
105    val DT_RASPRINTER : int
106
107    val LC_INTERIORS : int
108    val LC_MARKER : int
109    val LC_NONE : int
110    val LC_POLYLINE : int
111    val LC_POLYMARKER : int
112    val LC_STYLED : int
113    val LC_WIDE : int
114    val LC_WIDESTYLED : int
115
116    val PC_INTERIORS : int
117    val PC_NONE : int
118    val PC_PATHS : int
119    val PC_POLYGON : int
120    val PC_POLYPOLYGON : int
121    val PC_RECTANGLE : int
122    val PC_SCANLINE : int
123    val PC_STYLED : int
124    val PC_TRAPEZOID : int
125    val PC_WIDE : int
126    val PC_WIDESTYLED : int
127    val PC_WINDPOLYGON : int
128
129    val RC_BANDING : int
130    val RC_BIGFONT : int
131    val RC_BITBLT : int
132    val RC_BITMAP64 : int
133    val RC_DEVBITS : int
134    val RC_DIBTODEV : int
135    val RC_DI_BITMAP : int
136    val RC_FLOODFILL : int
137    val RC_GDI20_OUTPUT : int
138    val RC_GDI20_STATE : int
139    val RC_OP_DX_OUTPUT : int
140    val RC_PALETTE : int
141    val RC_SAVEBITMAP : int
142    val RC_SCALING : int
143    val RC_STRETCHBLT : int
144    val RC_STRETCHDIB : int
145
146    val TC_CP_STROKE : int
147    val TC_CR_90 : int
148    val TC_CR_ANY : int
149    val TC_EA_DOUBLE : int
150    val TC_IA_ABLE : int
151    val TC_OP_CHARACTER : int
152    val TC_OP_STROKE : int
153    val TC_RA_ABLE : int
154    val TC_RESERVED : int
155    val TC_SA_CONTIN : int
156    val TC_SA_DOUBLE : int
157    val TC_SA_INTEGER : int
158    val TC_SCROLLBLT : int
159    val TC_SF_X_YINDEP : int
160    val TC_SO_ABLE : int
161    val TC_UA_ABLE : int
162    val TC_VA_ABLE : int
163
164    datatype DMColor = DMCOLOR_COLOR | DMCOLOR_MONOCHROME
165    and DMDither =
166          DMDITHER_COARSE
167        | DMDITHER_FINE
168        | DMDITHER_GRAYSCALE
169        | DMDITHER_LINEART
170        | DMDITHER_NONE
171        | DMDITHER_OTHER of int
172    and DMDuplex = DMDUP_HORIZONTAL | DMDUP_SIMPLEX | DMDUP_VERTICAL
173    and DMICMIntent =
174          DMICMINTENT_OTHER of int
175        | DMICM_COLORMETRIC
176        | DMICM_CONTRAST
177        | DMICM_SATURATE
178    and DMICMMethod =
179          DMICMMETHOD_DEVICE
180        | DMICMMETHOD_DRIVER
181        | DMICMMETHOD_NONE
182        | DMICMMETHOD_OTHER of int
183        | DMICMMETHOD_SYSTEM
184    and DMMedia =
185          DMICMMEDIA_OTHER of int
186        | DMMEDIA_GLOSSY
187        | DMMEDIA_STANDARD
188        | DMMEDIA_TRANSPARENCY
189    and DMOrientation = DMORIENT_LANDSCAPE | DMORIENT_PORTRAIT
190    and DMPaperSize =
191          DMPAPER_10X11
192        | DMPAPER_10X14
193        | DMPAPER_11X17
194        | DMPAPER_15X11
195        | DMPAPER_9X11
196        | DMPAPER_A2
197        | DMPAPER_A3
198        | DMPAPER_A3_EXTRA
199        | DMPAPER_A3_EXTRA_TRANSVERSE
200        | DMPAPER_A3_TRANSVERSE
201        | DMPAPER_A4
202        | DMPAPER_A4SMALL
203        | DMPAPER_A4_EXTRA
204        | DMPAPER_A4_PLUS
205        | DMPAPER_A4_TRANSVERSE
206        | DMPAPER_A5
207        | DMPAPER_A5_EXTRA
208        | DMPAPER_A5_TRANSVERSE
209        | DMPAPER_A_PLUS
210        | DMPAPER_B4
211        | DMPAPER_B5
212        | DMPAPER_B5_EXTRA
213        | DMPAPER_B5_TRANSVERSE
214        | DMPAPER_B_PLUS
215        | DMPAPER_CSHEET
216        | DMPAPER_DSHEET
217        | DMPAPER_ENV_10
218        | DMPAPER_ENV_11
219        | DMPAPER_ENV_12
220        | DMPAPER_ENV_14
221        | DMPAPER_ENV_9
222        | DMPAPER_ENV_B4
223        | DMPAPER_ENV_B5
224        | DMPAPER_ENV_B6
225        | DMPAPER_ENV_C3
226        | DMPAPER_ENV_C4
227        | DMPAPER_ENV_C5
228        | DMPAPER_ENV_C6
229        | DMPAPER_ENV_C65
230        | DMPAPER_ENV_DL
231        | DMPAPER_ENV_INVITE
232        | DMPAPER_ENV_ITALY
233        | DMPAPER_ENV_MONARCH
234        | DMPAPER_ENV_PERSONAL
235        | DMPAPER_ESHEET
236        | DMPAPER_EXECUTIVE
237        | DMPAPER_FANFOLD_LGL_GERMAN
238        | DMPAPER_FANFOLD_STD_GERMAN
239        | DMPAPER_FANFOLD_US
240        | DMPAPER_FOLIO
241        | DMPAPER_ISO_B4
242        | DMPAPER_JAPANESE_POSTCARD
243        | DMPAPER_LEDGER
244        | DMPAPER_LEGAL
245        | DMPAPER_LEGAL_EXTRA
246        | DMPAPER_LETTER
247        | DMPAPER_LETTERSMALL
248        | DMPAPER_LETTER_EXTRA
249        | DMPAPER_LETTER_EXTRA_TRANSVERSE
250        | DMPAPER_LETTER_PLUS
251        | DMPAPER_LETTER_TRANSVERSE
252        | DMPAPER_NOTE
253        | DMPAPER_OTHER of int
254        | DMPAPER_QUARTO
255        | DMPAPER_RESERVED_48
256        | DMPAPER_RESERVED_49
257        | DMPAPER_STATEMENT
258        | DMPAPER_TABLOID
259        | DMPAPER_TABLOID_EXTRA
260    and DMResolution =
261          DMRES_DPI of int
262        | DMRES_DRAFT
263        | DMRES_HIGH
264        | DMRES_LOW
265        | DMRES_MEDIUM
266    and DMSource =
267          DMBIN_AUTO
268        | DMBIN_CASSETTE
269        | DMBIN_ENVELOPE
270        | DMBIN_ENVMANUAL
271        | DMBIN_FORMSOURCE
272        | DMBIN_LARGECAPACITY
273        | DMBIN_LARGEFMT
274        | DMBIN_LOWER
275        | DMBIN_MANUAL
276        | DMBIN_MIDDLE
277        | DMBIN_ONLYONE
278        | DMBIN_SMALLFMT
279        | DMBIN_TRACTOR
280        | DMBIN_UPPER
281        | DMSOURCE_OTHER of int
282    and DMTrueType =
283          DMTT_BITMAP
284        | DMTT_DOWNLOAD
285        | DMTT_DOWNLOAD_OUTLINE
286        | DMTT_SUBDEV
287
288    type DEVMODE = {
289        deviceName: string,
290        driverVersion: int,
291        orientation: DMOrientation option,
292        paperSize: DMPaperSize option,
293        paperLength: int option,
294        paperWidth: int option,
295        scale: int option,
296        copies: int option,
297        defaultSource: DMSource option,
298        printQuality: DMResolution option,
299        color: DMColor option,
300        duplex: DMDuplex option,
301        yResolution: int option,
302        ttOption: DMTrueType option,
303        collate: bool option,
304        formName: string option,
305        logPixels: int option,
306        bitsPerPixel: int option,
307        pelsWidth: int option,
308        pelsHeight: int option,
309        displayFlags: int option, (* Apparently no longer used. *)
310        displayFrequency: int option,
311        icmMethod: DMICMMethod option,
312        icmIntent: DMICMIntent option,
313        mediaType: DMMedia option,
314        ditherType: DMDither option,
315        iccManufacturer: int option,
316        iccModel: int option,
317        panningWidth: int option,
318        panningHeight: int option,
319        driverPrivate: Word8Vector.vector
320        }
321
322    val CancelDC : HDC -&gt; unit
323    val CreateCompatibleDC : HDC -&gt; HDC
324    val <a
325name="CreateDC">CreateDC</a> : string option * string option * string option * DEVMODE option -&gt; HDC
326
327    val <a
328name="DeleteDC">DeleteDC</a> : HDC -&gt; unit
329    val <a name="DeleteObject">DeleteObject</a> : HGDIOBJ -&gt; unit
330
331    datatype
332      EnumObject =
333          OBJ_BITMAP
334        | OBJ_BRUSH
335        | OBJ_DC
336        | OBJ_ENHMETADC
337        | OBJ_ENHMETAFILE
338        | OBJ_EXTPEN
339        | OBJ_FONT
340        | OBJ_MEMDC
341        | OBJ_METADC
342        | OBJ_METAFILE
343        | OBJ_PAL
344        | OBJ_PEN
345        | OBJ_REGION
346    val <a
347name="GetCurrentObject">GetCurrentObject</a> : HDC * EnumObject -&gt; HGDIOBJ
348    val GetDC : HWND -&gt; HDC
349
350    datatype
351      DeviceContextFlag =
352          DCX_CACHE
353        | DCX_CLIPCHILDREN
354        | DCX_CLIPSIBLINGS
355        | DCX_EXCLUDERGN
356        | DCX_EXCLUDEUPDATE
357        | DCX_INTERSECTRGN
358        | DCX_INTERSECTUPDATE
359        | DCX_LOCKWINDOWUPDATE
360        | DCX_NORECOMPUTE
361        | DCX_NORESETATTRS
362        | DCX_PARENTCLIP
363        | DCX_VALIDATE
364        | DCX_WINDOW
365
366    val GetDCEx : HWND * HRGN * DeviceContextFlag list -&gt; HDC
367    val GetDCOrgEx : HDC -&gt; POINT
368
369    datatype
370      GetObject =
371          GO_Bitmap of BITMAP
372        | GO_Brush of LOGBRUSH
373        | GO_Font of LOGFONT
374        | GO_Palette of int
375        | GO_Pen of LOGPEN
376
377    val GetObject : HGDIOBJ -&gt; GetObject
378    val <a
379name="GetObjectType">GetObjectType</a> : HGDIOBJ -&gt; EnumObject
380    val ReleaseDC : HWND * HDC -&gt; bool
381    val ResetDC : HDC * DEVMODE -&gt; HDC
382    val RestoreDC : HDC * int -&gt; unit
383    val SaveDC : HDC -&gt; int
384    val <a
385name="SelectObject">SelectObject</a> : HDC * HGDIOBJ -&gt; HGDIOBJ
386
387    type DEVNAMES = {driver: string, device: string, output: string, default: bool}
388
389  end</pre>
390</body>
391</html>
392