1(*
2    Copyright (c) 2001, 2015
3        David C.J. Matthews
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License version 2.1 as published by the Free Software Foundation.
8
9    This library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13
14    You should have received a copy of the GNU Lesser General Public
15    License along with this library; if not, write to the Free Software
16    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17*)
18structure WinSystem :
19  sig
20    type SystemMetrics
21    val SM_ARRANGE : SystemMetrics
22    val SM_CLEANBOOT : SystemMetrics
23    val SM_CMOUSEBUTTONS : SystemMetrics
24    val SM_CXBORDER : SystemMetrics
25    val SM_CXCURSOR : SystemMetrics
26    val SM_CXDLGFRAME : SystemMetrics
27    val SM_CXDOUBLECLK : SystemMetrics
28    val SM_CXDRAG : SystemMetrics
29    val SM_CXEDGE : SystemMetrics
30    val SM_CXFIXEDFRAME : SystemMetrics
31    val SM_CXFRAME : SystemMetrics
32    val SM_CXFULLSCREEN : SystemMetrics
33    val SM_CXHSCROLL : SystemMetrics
34    val SM_CXHTHUMB : SystemMetrics
35    val SM_CXICON : SystemMetrics
36    val SM_CXICONSPACING : SystemMetrics
37    val SM_CXMAXIMIZED : SystemMetrics
38    val SM_CXMAXTRACK : SystemMetrics
39    val SM_CXMENUCHECK : SystemMetrics
40    val SM_CXMENUSIZE : SystemMetrics
41    val SM_CXMIN : SystemMetrics
42    val SM_CXMINIMIZED : SystemMetrics
43    val SM_CXMINSPACING : SystemMetrics
44    val SM_CXMINTRACK : SystemMetrics
45    val SM_CXSCREEN : SystemMetrics
46    val SM_CXSIZE : SystemMetrics
47    val SM_CXSIZEFRAME : SystemMetrics
48    val SM_CXSMICON : SystemMetrics
49    val SM_CXSMSIZE : SystemMetrics
50    val SM_CXVSCROLL : SystemMetrics
51    val SM_CYBORDER : SystemMetrics
52    val SM_CYCAPTION : SystemMetrics
53    val SM_CYCURSOR : SystemMetrics
54    val SM_CYDLGFRAME : SystemMetrics
55    val SM_CYDOUBLECLK : SystemMetrics
56    val SM_CYDRAG : SystemMetrics
57    val SM_CYEDGE : SystemMetrics
58    val SM_CYFIXEDFRAME : SystemMetrics
59    val SM_CYFRAME : SystemMetrics
60    val SM_CYFULLSCREEN : SystemMetrics
61    val SM_CYHSCROLL : SystemMetrics
62    val SM_CYICON : SystemMetrics
63    val SM_CYICONSPACING : SystemMetrics
64    val SM_CYKANJIWINDOW : SystemMetrics
65    val SM_CYMAXIMIZED : SystemMetrics
66    val SM_CYMAXTRACK : SystemMetrics
67    val SM_CYMENU : SystemMetrics
68    val SM_CYMENUCHECK : SystemMetrics
69    val SM_CYMENUSIZE : SystemMetrics
70    val SM_CYMIN : SystemMetrics
71    val SM_CYMINIMIZED : SystemMetrics
72    val SM_CYMINSPACING : SystemMetrics
73    val SM_CYMINTRACK : SystemMetrics
74    val SM_CYSCREEN : SystemMetrics
75    val SM_CYSIZE : SystemMetrics
76    val SM_CYSIZEFRAME : SystemMetrics
77    val SM_CYSMCAPTION : SystemMetrics
78    val SM_CYSMICON : SystemMetrics
79    val SM_CYSMSIZE : SystemMetrics
80    val SM_CYVSCROLL : SystemMetrics
81    val SM_CYVTHUMB : SystemMetrics
82    val SM_DBCSENABLED : SystemMetrics
83    val SM_DEBUG : SystemMetrics
84    val SM_MENUDROPALIGNMENT : SystemMetrics
85    val SM_MIDEASTENABLED : SystemMetrics
86    val SM_MOUSEPRESENT : SystemMetrics
87    val SM_MOUSEWHEELPRESENT : SystemMetrics
88    val SM_NETWORK : SystemMetrics
89    val SM_PENWINDOWS : SystemMetrics
90    val SM_RESERVED1 : SystemMetrics
91    val SM_RESERVED2 : SystemMetrics
92    val SM_RESERVED3 : SystemMetrics
93    val SM_RESERVED4 : SystemMetrics
94    val SM_SECURE : SystemMetrics
95    val SM_SHOWSOUNDS : SystemMetrics
96    val SM_SLOWMACHINE : SystemMetrics
97    val SM_SWAPBUTTON : SystemMetrics
98    val GetSystemMetrics : SystemMetrics -> int
99  end
100 =
101struct
102local
103    open Foreign
104    open Base
105in
106    abstype SystemMetrics = ABS of int
107    with
108        val SM_CXSCREEN             = ABS 0
109        val SM_CYSCREEN             = ABS 1
110        val SM_CXVSCROLL            = ABS 2
111        val SM_CYHSCROLL            = ABS 3
112        val SM_CYCAPTION            = ABS 4
113        val SM_CXBORDER             = ABS 5
114        val SM_CYBORDER             = ABS 6
115        val SM_CXDLGFRAME           = ABS 7
116        val SM_CYDLGFRAME           = ABS 8
117        val SM_CYVTHUMB             = ABS 9
118        val SM_CXHTHUMB             = ABS 10
119        val SM_CXICON               = ABS 11
120        val SM_CYICON               = ABS 12
121        val SM_CXCURSOR             = ABS 13
122        val SM_CYCURSOR             = ABS 14
123        val SM_CYMENU               = ABS 15
124        val SM_CXFULLSCREEN         = ABS 16
125        val SM_CYFULLSCREEN         = ABS 17
126        val SM_CYKANJIWINDOW        = ABS 18
127        val SM_MOUSEPRESENT         = ABS 19
128        val SM_CYVSCROLL            = ABS 20
129        val SM_CXHSCROLL            = ABS 21
130        val SM_DEBUG                = ABS 22
131        val SM_SWAPBUTTON           = ABS 23
132        val SM_RESERVED1            = ABS 24
133        val SM_RESERVED2            = ABS 25
134        val SM_RESERVED3            = ABS 26
135        val SM_RESERVED4            = ABS 27
136        val SM_CXMIN                = ABS 28
137        val SM_CYMIN                = ABS 29
138        val SM_CXSIZE               = ABS 30
139        val SM_CYSIZE               = ABS 31
140        val SM_CXFRAME              = ABS 32
141        val SM_CYFRAME              = ABS 33
142        val SM_CXMINTRACK           = ABS 34
143        val SM_CYMINTRACK           = ABS 35
144        val SM_CXDOUBLECLK          = ABS 36
145        val SM_CYDOUBLECLK          = ABS 37
146        val SM_CXICONSPACING        = ABS 38
147        val SM_CYICONSPACING        = ABS 39
148        val SM_MENUDROPALIGNMENT    = ABS 40
149        val SM_PENWINDOWS           = ABS 41
150        val SM_DBCSENABLED          = ABS 42
151        val SM_CMOUSEBUTTONS        = ABS 43
152        val SM_SECURE               = ABS 44
153        val SM_CXEDGE               = ABS 45
154        val SM_CYEDGE               = ABS 46
155        val SM_CXMINSPACING         = ABS 47
156        val SM_CYMINSPACING         = ABS 48
157        val SM_CXSMICON             = ABS 49
158        val SM_CYSMICON             = ABS 50
159        val SM_CYSMCAPTION          = ABS 51
160        val SM_CXSMSIZE             = ABS 52
161        val SM_CYSMSIZE             = ABS 53
162        val SM_CXMENUSIZE           = ABS 54
163        val SM_CYMENUSIZE           = ABS 55
164        val SM_ARRANGE              = ABS 56
165        val SM_CXMINIMIZED          = ABS 57
166        val SM_CYMINIMIZED          = ABS 58
167        val SM_CXMAXTRACK           = ABS 59
168        val SM_CYMAXTRACK           = ABS 60
169        val SM_CXMAXIMIZED          = ABS 61
170        val SM_CYMAXIMIZED          = ABS 62
171        val SM_NETWORK              = ABS 63
172        val SM_CLEANBOOT            = ABS 67
173        val SM_CXDRAG               = ABS 68
174        val SM_CYDRAG               = ABS 69
175        val SM_SHOWSOUNDS           = ABS 70
176        val SM_CXMENUCHECK          = ABS 71
177        val SM_CYMENUCHECK          = ABS 72
178        val SM_SLOWMACHINE          = ABS 73
179        val SM_MIDEASTENABLED       = ABS 74
180        val SM_MOUSEWHEELPRESENT    = ABS 75
181
182        val SM_CXFIXEDFRAME         = SM_CXDLGFRAME
183        val SM_CYFIXEDFRAME         = SM_CYDLGFRAME
184        val SM_CXSIZEFRAME          = SM_CXFRAME
185        val SM_CYSIZEFRAME          = SM_CYFRAME
186
187        local
188            val getSystemMetrics = winCall1 (user "GetSystemMetrics") (cInt) cInt
189        in
190            fun GetSystemMetrics(ABS i) = getSystemMetrics i
191        end
192    end
193end
194end;
195