1#| -*-Scheme-*-
2
3Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
5    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Massachusetts
6    Institute of Technology
7
8This file is part of MIT/GNU Scheme.
9
10MIT/GNU Scheme is free software; you can redistribute it and/or modify
11it under the terms of the GNU General Public License as published by
12the Free Software Foundation; either version 2 of the License, or (at
13your option) any later version.
14
15MIT/GNU Scheme is distributed in the hope that it will be useful, but
16WITHOUT ANY WARRANTY; without even the implied warranty of
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18General Public License for more details.
19
20You should have received a copy of the GNU General Public License
21along with MIT/GNU Scheme; if not, write to the Free Software
22Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
23USA.
24
25|#
26
27;;;; OS/2 PM Interface -- Primitives
28;;; package: (runtime os2-window-primitives)
29
30(declare (usual-integrations))
31
32(define-primitives
33  (os2-clipboard-read-text 0)
34  (os2-clipboard-write-text 1)
35  (os2-map-window-point 3)
36  (os2-window-handle-from-id 2)
37  (os2menu-create 3)
38  (os2menu-destroy 1)
39  (os2menu-get-item 3)
40  (os2menu-get-item-attributes 4)
41  (os2menu-insert-item 7)
42  (os2menu-n-items 1)
43  (os2menu-nth-item 2)
44  (os2menu-remove-item 4)
45  (os2menu-set-item-attributes 5)
46  (os2pm-synchronize 0)
47  (os2ps-bitblt 6)
48  (os2ps-clear 5)
49  (os2ps-create-bitmap 3)
50  (os2ps-create-memory-ps 0)
51  (os2ps-destroy-bitmap 1)
52  (os2ps-destroy-memory-ps 1)
53  (os2ps-draw-point 3)
54  (os2ps-get-bitmap 1)
55  (os2ps-get-bitmap-bits 5)
56  (os2ps-get-bitmap-parameters 1)
57  (os2ps-get-font-metrics 1)
58  (os2ps-line 3)
59  (os2ps-move-graphics-cursor 3)
60  (os2ps-poly-line 3)
61  (os2ps-poly-line-disjoint 3)
62  (os2ps-query-capabilities 3)
63  (os2ps-query-capability 2)
64  (os2ps-reset-clip-rectangle 1)
65  (os2ps-set-bitmap 2)
66  (os2ps-set-bitmap-bits 5)
67  (os2ps-set-clip-rectangle 5)
68  (os2ps-set-colors 3)
69  (os2ps-set-font 3)
70  (os2ps-set-line-type 2)
71  (os2ps-set-mix 2)
72  (os2ps-text-width 4)
73  (os2ps-write 6)
74  (os2win-activate 1)
75  (os2win-alarm 1)
76  (os2win-beep 2)
77  (os2win-client-handle 1)
78  (os2win-close 1)
79  (os2win-close-event-qid 1)
80  (os2win-console-wid 0)
81  (os2win-desktop-height 0)
82  (os2win-desktop-width 0)
83  (os2win-destroy-pointer 1)
84  (os2win-event-ready? 2)
85  (os2win-focus? 1)
86  (os2win-font-dialog 2)
87  (os2win-frame-handle 1)
88  (os2win-get-event 2)
89  (os2win-get-frame-size 1)
90  (os2win-get-pos 1)
91  (os2win-get-size 1)
92  (os2win-invalidate 5)
93  (os2win-load-pointer 3)
94  (os2win-load-menu 3)
95  (os2win-move-cursor 3)
96  (os2win-open 2)
97  (os2win-open-event-qid 0)
98  (os2win-popup-menu 7)
99  (os2win-ps 1)
100  (os2win-query-sys-value 2)
101  (os2win-scroll 7)
102  (os2win-set-capture 2)
103  (os2win-set-grid 3)
104  (os2win-set-icon 2)
105  (os2win-set-pos 3)
106  (os2win-set-size 3)
107  (os2win-set-state 2)
108  (os2win-set-title 2)
109  (os2win-shape-cursor 4)
110  (os2win-show 2)
111  (os2win-show-cursor 2)
112  (os2win-track-mouse 2)
113  (os2win-update-frame 2))
114
115(define-integrable (event-type event) (vector-ref event 0))
116(define-integrable (event-wid event) (vector-ref event 1))
117(define-integrable (set-event-wid! event wid) (vector-set! event 1 wid))
118
119(define-syntax define-event
120  (sc-macro-transformer
121   (lambda (form environment)
122     (let ((name (cadr form))
123	   (type (close-syntax (caddr form) environment))
124	   (slots (cdddr form)))
125       `(BEGIN
126	  (DEFINE-INTEGRABLE ,(symbol-append 'EVENT-TYPE: name) ,type)
127	  ,@(let loop ((slots slots) (index 2))
128	      (if (pair? slots)
129		  (cons `(DEFINE-INTEGRABLE
130			   (,(symbol-append name '-EVENT/ (car slots)) EVENT)
131			   (VECTOR-REF EVENT ,index))
132			(loop (cdr slots) (+ index 1)))
133		  '())))))))
134
135;; These must match "microcode/pros2pm.c"
136(define-event button     0 number type x y flags)
137(define-event close      1)
138(define-event focus      2 gained?)
139(define-event key        3 code flags repeat)
140(define-event paint      4 xl xh yl yh)
141(define-event resize     5 width height)
142(define-event visibility 6 shown?)
143(define-event command    7 code source mouse?)
144(define-event help       8 code source mouse?)
145(define-event mousemove  9 x y hit-test flags)
146
147(define-integrable number-of-event-types 10)
148
149(define-integrable button-event-type:down 0)
150(define-integrable button-event-type:up 1)
151(define-integrable button-event-type:click 2)
152(define-integrable button-event-type:double-click 3)
153
154(define-structure (font-metrics (type vector) (conc-name font-metrics/))
155  (width #f read-only #t)
156  (height #f read-only #t)
157  (descender #f read-only #t))
158
159;;; Constants from OS/2 header file "pmwin.h":
160
161(define-integrable CURSOR_SOLID		#x0000)
162(define-integrable CURSOR_HALFTONE	#x0001)
163(define-integrable CURSOR_FRAME		#x0002)
164(define-integrable CURSOR_FLASH		#x0004)
165
166(define-integrable VK_BUTTON1		#x01)
167(define-integrable VK_BUTTON2		#x02)
168(define-integrable VK_BUTTON3		#x03)
169(define-integrable VK_BREAK		#x04)
170(define-integrable VK_BACKSPACE		#x05)
171(define-integrable VK_TAB		#x06)
172(define-integrable VK_BACKTAB		#x07)
173(define-integrable VK_NEWLINE		#x08)
174(define-integrable VK_SHIFT		#x09)
175(define-integrable VK_CTRL		#x0A)
176(define-integrable VK_ALT		#x0B)
177(define-integrable VK_ALTGRAF		#x0C)
178(define-integrable VK_PAUSE		#x0D)
179(define-integrable VK_CAPSLOCK		#x0E)
180(define-integrable VK_ESC		#x0F)
181(define-integrable VK_SPACE		#x10)
182(define-integrable VK_PAGEUP		#x11)
183(define-integrable VK_PAGEDOWN		#x12)
184(define-integrable VK_END		#x13)
185(define-integrable VK_HOME		#x14)
186(define-integrable VK_LEFT		#x15)
187(define-integrable VK_UP		#x16)
188(define-integrable VK_RIGHT		#x17)
189(define-integrable VK_DOWN		#x18)
190(define-integrable VK_PRINTSCRN		#x19)
191(define-integrable VK_INSERT		#x1A)
192(define-integrable VK_DELETE		#x1B)
193(define-integrable VK_SCRLLOCK		#x1C)
194(define-integrable VK_NUMLOCK		#x1D)
195(define-integrable VK_ENTER		#x1E)
196(define-integrable VK_SYSRQ		#x1F)
197(define-integrable VK_F1		#x20)
198(define-integrable VK_F2		#x21)
199(define-integrable VK_F3		#x22)
200(define-integrable VK_F4		#x23)
201(define-integrable VK_F5		#x24)
202(define-integrable VK_F6		#x25)
203(define-integrable VK_F7		#x26)
204(define-integrable VK_F8		#x27)
205(define-integrable VK_F9		#x28)
206(define-integrable VK_F10		#x29)
207(define-integrable VK_F11		#x2A)
208(define-integrable VK_F12		#x2B)
209(define-integrable VK_F13		#x2C)
210(define-integrable VK_F14		#x2D)
211(define-integrable VK_F15		#x2E)
212(define-integrable VK_F16		#x2F)
213(define-integrable VK_F17		#x30)
214(define-integrable VK_F18		#x31)
215(define-integrable VK_F19		#x32)
216(define-integrable VK_F20		#x33)
217(define-integrable VK_F21		#x34)
218(define-integrable VK_F22		#x35)
219(define-integrable VK_F23		#x36)
220(define-integrable VK_F24		#x37)
221(define-integrable VK_ENDDRAG		#x38)
222(define-integrable VK_CLEAR		#x39)
223(define-integrable VK_EREOF		#x3A)
224(define-integrable VK_PA1		#x3B)
225(define-integrable virtual-key-supremum #x3C)
226
227(define-integrable KC_NONE		#x0000)
228(define-integrable KC_CHAR		#x0001)
229(define-integrable KC_VIRTUALKEY	#x0002)
230(define-integrable KC_SCANCODE		#x0004)
231(define-integrable KC_SHIFT		#x0008)
232(define-integrable KC_CTRL		#x0010)
233(define-integrable KC_ALT		#x0020)
234(define-integrable KC_KEYUP		#x0040)
235(define-integrable KC_PREVDOWN		#x0080)
236(define-integrable KC_LONEKEY		#x0100)
237(define-integrable KC_DEADKEY		#x0200)
238(define-integrable KC_COMPOSITE		#x0400)
239(define-integrable KC_INVALIDCOMP	#x0800)
240(define-integrable KC_TOGGLE		#x1000)
241(define-integrable KC_INVALIDCHAR	#x2000)
242
243(define-integrable LINETYPE_DEFAULT       0)
244(define-integrable LINETYPE_DOT           1)
245(define-integrable LINETYPE_SHORTDASH     2)
246(define-integrable LINETYPE_DASHDOT       3)
247(define-integrable LINETYPE_DOUBLEDOT     4)
248(define-integrable LINETYPE_LONGDASH      5)
249(define-integrable LINETYPE_DASHDOUBLEDOT 6)
250(define-integrable LINETYPE_SOLID         7)
251(define-integrable LINETYPE_INVISIBLE     8)
252(define-integrable LINETYPE_ALTERNATE     9)
253
254(define-integrable FM_DEFAULT     0)
255(define-integrable FM_OR          1)
256(define-integrable FM_OVERPAINT   2)
257(define-integrable FM_XOR         4)
258(define-integrable FM_LEAVEALONE  5)
259(define-integrable FM_AND         6)
260(define-integrable FM_SUBTRACT    7)
261(define-integrable FM_MASKSRCNOT  8)
262(define-integrable FM_ZERO        9)
263(define-integrable FM_NOTMERGESRC 10)
264(define-integrable FM_NOTXORSRC   11)
265(define-integrable FM_INVERT      12)
266(define-integrable FM_MERGESRCNOT 13)
267(define-integrable FM_NOTCOPYSRC  14)
268(define-integrable FM_MERGENOTSRC 15)
269(define-integrable FM_NOTMASKSRC  16)
270(define-integrable FM_ONE         17)
271
272(define-integrable window-state:top        0)
273(define-integrable window-state:bottom     1)
274(define-integrable window-state:show       2)
275(define-integrable window-state:hide       3)
276(define-integrable window-state:activate   4)
277(define-integrable window-state:deactivate 5)
278(define-integrable window-state:minimize   6)
279(define-integrable window-state:maximize   7)
280(define-integrable window-state:restore    8)
281
282(define-integrable WS_VISIBLE      #x80000000)
283(define-integrable WS_DISABLED     #x40000000)
284(define-integrable WS_CLIPCHILDREN #x20000000)
285(define-integrable WS_CLIPSIBLINGS #x10000000)
286(define-integrable WS_PARENTCLIP   #x08000000)
287(define-integrable WS_SAVEBITS     #x04000000)
288(define-integrable WS_SYNCPAINT    #x02000000)
289(define-integrable WS_MINIMIZED    #x01000000)
290(define-integrable WS_MAXIMIZED    #x00800000)
291(define-integrable WS_ANIMATE      #x00400000)
292
293;; codes for OS2PS-QUERY-CAPABILITIES and OS2PS-QUERY-CAPABILITY
294(define-integrable CAPS_FAMILY                     0)
295(define-integrable CAPS_IO_CAPS                    1)
296(define-integrable CAPS_TECHNOLOGY                 2)
297(define-integrable CAPS_DRIVER_VERSION             3)
298(define-integrable CAPS_WIDTH                      4) ;pels
299(define-integrable CAPS_HEIGHT                     5) ;pels
300(define-integrable CAPS_WIDTH_IN_CHARS             6)
301(define-integrable CAPS_HEIGHT_IN_CHARS            7)
302(define-integrable CAPS_HORIZONTAL_RESOLUTION      8) ;pels per meter
303(define-integrable CAPS_VERTICAL_RESOLUTION        9) ;pels per meter
304(define-integrable CAPS_CHAR_WIDTH                10) ;pels
305(define-integrable CAPS_CHAR_HEIGHT               11) ;pels
306(define-integrable CAPS_SMALL_CHAR_WIDTH          12) ;pels
307(define-integrable CAPS_SMALL_CHAR_HEIGHT         13) ;pels
308(define-integrable CAPS_COLORS                    14)
309(define-integrable CAPS_COLOR_PLANES              15)
310(define-integrable CAPS_COLOR_BITCOUNT            16)
311(define-integrable CAPS_COLOR_TABLE_SUPPORT       17)
312(define-integrable CAPS_MOUSE_BUTTONS             18)
313(define-integrable CAPS_FOREGROUND_MIX_SUPPORT    19)
314(define-integrable CAPS_BACKGROUND_MIX_SUPPORT    20)
315(define-integrable CAPS_VIO_LOADABLE_FONTS        21)
316(define-integrable CAPS_WINDOW_BYTE_ALIGNMENT     22)
317(define-integrable CAPS_BITMAP_FORMATS            23)
318(define-integrable CAPS_RASTER_CAPS               24)
319(define-integrable CAPS_MARKER_HEIGHT             25) ;pels
320(define-integrable CAPS_MARKER_WIDTH              26) ;pels
321(define-integrable CAPS_DEVICE_FONTS              27)
322(define-integrable CAPS_GRAPHICS_SUBSET           28)
323(define-integrable CAPS_GRAPHICS_VERSION          29)
324(define-integrable CAPS_GRAPHICS_VECTOR_SUBSET    30)
325(define-integrable CAPS_DEVICE_WINDOWING          31)
326(define-integrable CAPS_ADDITIONAL_GRAPHICS       32)
327(define-integrable CAPS_PHYS_COLORS               33)
328(define-integrable CAPS_COLOR_INDEX               34)
329(define-integrable CAPS_GRAPHICS_CHAR_WIDTH       35)
330(define-integrable CAPS_GRAPHICS_CHAR_HEIGHT      36)
331(define-integrable CAPS_HORIZONTAL_FONT_RES       37)
332(define-integrable CAPS_VERTICAL_FONT_RES         38)
333(define-integrable CAPS_DEVICE_FONT_SIM           39)
334(define-integrable CAPS_LINEWIDTH_THICK           40)
335(define-integrable CAPS_DEVICE_POLYSET_POINTS     41)
336
337;; Constants for CAPS_IO_CAPS
338(define-integrable CAPS_IO_DUMMY       1)
339(define-integrable CAPS_IO_SUPPORTS_OP 2)
340(define-integrable CAPS_IO_SUPPORTS_IP 3)
341(define-integrable CAPS_IO_SUPPORTS_IO 4)
342
343;; Constants for CAPS_TECHNOLOGY
344(define-integrable CAPS_TECH_UNKNOWN        0)
345(define-integrable CAPS_TECH_VECTOR_PLOTTER 1)
346(define-integrable CAPS_TECH_RASTER_DISPLAY 2)
347(define-integrable CAPS_TECH_RASTER_PRINTER 3)
348(define-integrable CAPS_TECH_RASTER_CAMERA  4)
349(define-integrable CAPS_TECH_POSTSCRIPT     5)
350
351;; Constants for CAPS_COLOR_TABLE_SUPPORT
352(define-integrable CAPS_COLTABL_RGB_8      #x0001)
353(define-integrable CAPS_COLTABL_RGB_8_PLUS #x0002)
354(define-integrable CAPS_COLTABL_TRUE_MIX   #x0004)
355(define-integrable CAPS_COLTABL_REALIZE    #x0008)
356
357;; Constants for CAPS_FOREGROUND_MIX_SUPPORT
358(define-integrable CAPS_FM_OR              #x0001)
359(define-integrable CAPS_FM_OVERPAINT       #x0002)
360(define-integrable CAPS_FM_XOR             #x0008)
361(define-integrable CAPS_FM_LEAVEALONE      #x0010)
362(define-integrable CAPS_FM_AND             #x0020)
363(define-integrable CAPS_FM_GENERAL_BOOLEAN #x0040)
364
365;; Constants for CAPS_BACKGROUND_MIX_SUPPORT
366(define-integrable CAPS_BM_OR              #x0001)
367(define-integrable CAPS_BM_OVERPAINT       #x0002)
368(define-integrable CAPS_BM_XOR             #x0008)
369(define-integrable CAPS_BM_LEAVEALONE      #x0010)
370(define-integrable CAPS_BM_AND             #x0020)
371(define-integrable CAPS_BM_GENERAL_BOOLEAN #x0040)
372(define-integrable CAPS_BM_SRCTRANSPARENT  #x0080)
373(define-integrable CAPS_BM_DESTTRANSPARENT #x0100)
374
375;; Constants for CAPS_DEVICE_WINDOWING
376(define-integrable CAPS_DEV_WINDOWING_SUPPORT 1)
377
378;; Constants for CAPS_ADDITIONAL_GRAPHICS
379(define-integrable CAPS_VDD_DDB_TRANSFER          #x0001)
380(define-integrable CAPS_GRAPHICS_KERNING_SUPPORT  #x0002)
381(define-integrable CAPS_FONT_OUTLINE_DEFAULT      #x0004)
382(define-integrable CAPS_FONT_IMAGE_DEFAULT        #x0008)
383;; bits represented by values #x0010 and #x0020 are reserved
384(define-integrable CAPS_SCALED_DEFAULT_MARKERS    #x0040)
385(define-integrable CAPS_COLOR_CURSOR_SUPPORT      #x0080)
386(define-integrable CAPS_PALETTE_MANAGER           #x0100)
387(define-integrable CAPS_COSMETIC_WIDELINE_SUPPORT #x0200)
388(define-integrable CAPS_DIRECT_FILL               #x0400)
389(define-integrable CAPS_REBUILD_FILLS             #x0800)
390(define-integrable CAPS_CLIP_FILLS                #x1000)
391(define-integrable CAPS_ENHANCED_FONTMETRICS      #x2000)
392(define-integrable CAPS_TRANSFORM_SUPPORT         #x4000)
393
394;; Constants for CAPS_WINDOW_BYTE_ALIGNMENT
395(define-integrable CAPS_BYTE_ALIGN_REQUIRED     0)
396(define-integrable CAPS_BYTE_ALIGN_RECOMMENDED  1)
397(define-integrable CAPS_BYTE_ALIGN_NOT_REQUIRED 2)
398
399;; Constants for CAPS_RASTER_CAPS
400(define-integrable CAPS_RASTER_BITBLT         #x0001)
401(define-integrable CAPS_RASTER_BANDING        #x0002)
402(define-integrable CAPS_RASTER_BITBLT_SCALING #x0004)
403(define-integrable CAPS_RASTER_SET_PEL        #x0010)
404(define-integrable CAPS_RASTER_FONTS          #x0020)
405(define-integrable CAPS_RASTER_FLOOD_FILL     #x0040)
406
407;; Constants for OS2PS-BITBLT raster-op argument
408(define-integrable ROP_SRCCOPY     #xCC)
409(define-integrable ROP_SRCPAINT    #xEE)
410(define-integrable ROP_SRCAND      #x88)
411(define-integrable ROP_SRCINVERT   #x66)
412(define-integrable ROP_SRCERASE    #x44)
413(define-integrable ROP_NOTSRCCOPY  #x33)
414(define-integrable ROP_NOTSRCERASE #x11)
415(define-integrable ROP_MERGECOPY   #xC0)
416(define-integrable ROP_MERGEPAINT  #xBB)
417(define-integrable ROP_PATCOPY     #xF0)
418(define-integrable ROP_PATPAINT    #xFB)
419(define-integrable ROP_PATINVERT   #x5A)
420(define-integrable ROP_DSTINVERT   #x55)
421(define-integrable ROP_ZERO        #x00)
422(define-integrable ROP_ONE         #xFF)
423
424;; Constants for OS2PS-BITBLT options argument
425(define-integrable BBO_OR            0)
426(define-integrable BBO_AND           1)
427(define-integrable BBO_IGNORE        2)
428(define-integrable BBO_PAL_COLORS    4)
429(define-integrable BBO_NO_COLOR_INFO 8)
430
431;; Menu item positions:
432(define-integrable MIT_END                    #xFFFF)
433(define-integrable MIT_NONE                   #xFFFF)
434(define-integrable MIT_MEMERROR               #xFFFF)
435(define-integrable MIT_ERROR                  #xFFFF)
436(define-integrable MIT_FIRST                  #xFFFE)
437(define-integrable MIT_LAST                   #xFFFD)
438
439;; Menu item styles:
440(define-integrable MIS_TEXT                   #x0001)
441(define-integrable MIS_BITMAP                 #x0002)
442(define-integrable MIS_SEPARATOR              #x0004)
443(define-integrable MIS_OWNERDRAW              #x0008)
444(define-integrable MIS_SUBMENU                #x0010)
445(define-integrable MIS_MULTMENU               #x0020) ;multiple choice submenu
446(define-integrable MIS_SYSCOMMAND             #x0040)
447(define-integrable MIS_HELP                   #x0080)
448(define-integrable MIS_STATIC                 #x0100)
449(define-integrable MIS_BUTTONSEPARATOR        #x0200)
450(define-integrable MIS_BREAK                  #x0400)
451(define-integrable MIS_BREAKSEPARATOR         #x0800)
452(define-integrable MIS_GROUP                  #x1000) ;multiple choice group
453;; In multiple choice submenus a style of 'single' denotes the item is
454;; a radiobutton.  Absence of this style defaults the item to a
455;; checkbox.
456(define-integrable MIS_SINGLE                 #x2000)
457
458;; Menu item attributes:
459(define-integrable MIA_NODISMISS              #x0020)
460(define-integrable MIA_FRAMED                 #x1000)
461(define-integrable MIA_CHECKED                #x2000)
462(define-integrable MIA_DISABLED               #x4000)
463(define-integrable MIA_HILITED                #x8000)
464
465(define-integrable FID_SYSMENU                #x8002)
466(define-integrable FID_TITLEBAR               #x8003)
467(define-integrable FID_MINMAX                 #x8004)
468(define-integrable FID_MENU                   #x8005)
469(define-integrable FID_VERTSCROLL             #x8006)
470(define-integrable FID_HORZSCROLL             #x8007)
471(define-integrable FID_CLIENT                 #x8008)
472
473;; Menu control styles */
474(define-integrable MS_ACTIONBAR               #x0001)
475(define-integrable MS_TITLEBUTTON             #x0002)
476(define-integrable MS_VERTICALFLIP            #x0004)
477(define-integrable MS_CONDITIONALCASCADE      #x0040)
478
479;; Frame window styles:
480(define-integrable FCF_TITLEBAR               #x00000001)
481(define-integrable FCF_SYSMENU                #x00000002)
482(define-integrable FCF_MENU                   #x00000004)
483(define-integrable FCF_SIZEBORDER             #x00000008)
484(define-integrable FCF_MINBUTTON              #x00000010)
485(define-integrable FCF_MAXBUTTON              #x00000020)
486(define-integrable FCF_MINMAX                 #x00000030)
487(define-integrable FCF_VERTSCROLL             #x00000040)
488(define-integrable FCF_HORZSCROLL             #x00000080)
489(define-integrable FCF_DLGBORDER              #x00000100)
490(define-integrable FCF_BORDER                 #x00000200)
491(define-integrable FCF_SHELLPOSITION          #x00000400)
492(define-integrable FCF_TASKLIST               #x00000800)
493(define-integrable FCF_NOBYTEALIGN            #x00001000)
494(define-integrable FCF_NOMOVEWITHOWNER        #x00002000)
495(define-integrable FCF_ICON                   #x00004000)
496(define-integrable FCF_ACCELTABLE             #x00008000)
497(define-integrable FCF_SYSMODAL               #x00010000)
498(define-integrable FCF_SCREENALIGN            #x00020000)
499(define-integrable FCF_MOUSEALIGN             #x00040000)
500(define-integrable FCF_HIDEBUTTON             #x01000000)
501(define-integrable FCF_HIDEMAX                #x01000020)
502(define-integrable FCF_AUTOICON               #x40000000)
503(define-integrable FCF_STANDARD               #x0000CC3F)
504
505;;; Window handles.
506(define-integrable NULLHANDLE 0)
507(define-integrable HWND_DESKTOP 1)
508
509;;; Hit-test values (event-type:mousemove).
510(define-integrable HT_NORMAL 0)
511(define-integrable HT_TRANSPARENT -1)
512(define-integrable HT_DISCARD -2)
513(define-integrable HT_ERROR -3)
514
515;;; Pop-up menu option flags.
516(define-integrable PU_POSITIONONITEM          #x0001)
517(define-integrable PU_HCONSTRAIN              #x0002)
518(define-integrable PU_VCONSTRAIN              #x0004)
519(define-integrable PU_NONE                    #x0000)
520(define-integrable PU_MOUSEBUTTON1DOWN        #x0008)
521(define-integrable PU_MOUSEBUTTON2DOWN        #x0010)
522(define-integrable PU_MOUSEBUTTON3DOWN        #x0018)
523(define-integrable PU_SELECTITEM              #x0020)
524(define-integrable PU_MOUSEBUTTON1            #x0040)
525(define-integrable PU_MOUSEBUTTON2            #x0080)
526(define-integrable PU_MOUSEBUTTON3            #x0100)
527(define-integrable PU_KEYBOARD                #x0200)
528
529;;; Alarm types (os2win-alarm).
530(define-integrable WA_WARNING 0)
531(define-integrable WA_NOTE 1)
532(define-integrable WA_ERROR 2)
533
534(define-integrable SPTR_ARROW 1)
535(define-integrable SPTR_TEXT 2)
536(define-integrable SPTR_WAIT 3)
537(define-integrable SPTR_SIZE 4)
538(define-integrable SPTR_MOVE 5)
539(define-integrable SPTR_SIZENWSE 6)
540(define-integrable SPTR_SIZENESW 7)
541(define-integrable SPTR_SIZEWE 8)
542(define-integrable SPTR_SIZENS 9)
543(define-integrable SPTR_APPICON 10)
544(define-integrable SPTR_ICONINFORMATION 11)
545(define-integrable SPTR_ICONQUESTION 12)
546(define-integrable SPTR_ICONERROR 13)
547(define-integrable SPTR_ICONWARNING 14)
548(define-integrable SPTR_ILLEGAL 18)
549(define-integrable SPTR_FILE 19)
550(define-integrable SPTR_FOLDER 20)
551(define-integrable SPTR_MULTFILE 21)
552(define-integrable SPTR_PROGRAM 22)
553
554;;; Constants for use with os2win-load-pointer.
555(define-integrable IDI_BCH	10)
556(define-integrable IDI_COFFEE	11)
557(define-integrable IDI_CONSES	12)
558(define-integrable IDI_EDWIN	13)
559(define-integrable IDI_ENVIR1	14)
560(define-integrable IDI_GRAPHICS	15)
561(define-integrable IDI_LAMBDA	16)
562(define-integrable IDI_LAMBDA2	17)
563(define-integrable IDI_LIAR1	18)
564(define-integrable IDI_LIAR2	19)
565(define-integrable IDI_LIAR3	20)
566(define-integrable IDI_MINCER	21)
567(define-integrable IDI_SHIELD1	22)
568(define-integrable IDI_SHIELD2	23)
569(define-integrable IDI_SHIELD3	24)
570(define-integrable IDI_SHIELD4	25)
571
572(define-integrable SV_SWAPBUTTON              0)
573(define-integrable SV_DBLCLKTIME              1)
574(define-integrable SV_CXDBLCLK                2)
575(define-integrable SV_CYDBLCLK                3)
576(define-integrable SV_CXSIZEBORDER            4)
577(define-integrable SV_CYSIZEBORDER            5)
578(define-integrable SV_ALARM                   6)
579;;; 7-8
580(define-integrable SV_CURSORRATE              9)
581(define-integrable SV_FIRSTSCROLLRATE         10)
582(define-integrable SV_SCROLLRATE              11)
583(define-integrable SV_NUMBEREDLISTS           12)
584(define-integrable SV_WARNINGFREQ             13)
585(define-integrable SV_NOTEFREQ                14)
586(define-integrable SV_ERRORFREQ               15)
587(define-integrable SV_WARNINGDURATION         16)
588(define-integrable SV_NOTEDURATION            17)
589(define-integrable SV_ERRORDURATION           18)
590;;; 19
591(define-integrable SV_CXSCREEN                20)
592(define-integrable SV_CYSCREEN                21)
593(define-integrable SV_CXVSCROLL               22)
594(define-integrable SV_CYHSCROLL               23)
595(define-integrable SV_CYVSCROLLARROW          24)
596(define-integrable SV_CXHSCROLLARROW          25)
597(define-integrable SV_CXBORDER                26)
598(define-integrable SV_CYBORDER                27)
599(define-integrable SV_CXDLGFRAME              28)
600(define-integrable SV_CYDLGFRAME              29)
601(define-integrable SV_CYTITLEBAR              30)
602(define-integrable SV_CYVSLIDER               31)
603(define-integrable SV_CXHSLIDER               32)
604(define-integrable SV_CXMINMAXBUTTON          33)
605(define-integrable SV_CYMINMAXBUTTON          34)
606(define-integrable SV_CYMENU                  35)
607(define-integrable SV_CXFULLSCREEN            36)
608(define-integrable SV_CYFULLSCREEN            37)
609(define-integrable SV_CXICON                  38)
610(define-integrable SV_CYICON                  39)
611(define-integrable SV_CXPOINTER               40)
612(define-integrable SV_CYPOINTER               41)
613(define-integrable SV_DEBUG                   42)
614(define-integrable SV_CMOUSEBUTTONS           43)
615(define-integrable SV_CPOINTERBUTTONS         43)
616(define-integrable SV_POINTERLEVEL            44)
617(define-integrable SV_CURSORLEVEL             45)
618(define-integrable SV_TRACKRECTLEVEL          46)
619(define-integrable SV_CTIMERS                 47)
620(define-integrable SV_MOUSEPRESENT            48)
621(define-integrable SV_CXBYTEALIGN             49)
622(define-integrable SV_CXALIGN                 49)
623(define-integrable SV_CYBYTEALIGN             50)
624(define-integrable SV_CYALIGN                 50)
625;;; 51-55
626(define-integrable SV_NOTRESERVED             56)
627(define-integrable SV_EXTRAKEYBEEP            57)
628(define-integrable SV_SETLIGHTS               58)
629(define-integrable SV_INSERTMODE              59)
630;;; 60-63
631(define-integrable SV_MENUROLLDOWNDELAY       64)
632(define-integrable SV_MENUROLLUPDELAY         65)
633(define-integrable SV_ALTMNEMONIC             66)
634(define-integrable SV_TASKLISTMOUSEACCESS     67)
635(define-integrable SV_CXICONTEXTWIDTH         68)
636(define-integrable SV_CICONTEXTLINES          69)
637(define-integrable SV_CHORDTIME               70)
638(define-integrable SV_CXCHORD                 71)
639(define-integrable SV_CYCHORD                 72)
640(define-integrable SV_CXMOTIONSTART           73)
641(define-integrable SV_CYMOTIONSTART           74)
642(define-integrable SV_BEGINDRAG               75)
643(define-integrable SV_ENDDRAG                 76)
644(define-integrable SV_SINGLESELECT            77)
645(define-integrable SV_OPEN                    78)
646(define-integrable SV_CONTEXTMENU             79)
647(define-integrable SV_CONTEXTHELP             80)
648(define-integrable SV_TEXTEDIT                81)
649(define-integrable SV_BEGINSELECT             82)
650(define-integrable SV_ENDSELECT               83)
651(define-integrable SV_BEGINDRAGKB             84)
652(define-integrable SV_ENDDRAGKB               85)
653(define-integrable SV_SELECTKB                86)
654(define-integrable SV_OPENKB                  87)
655(define-integrable SV_CONTEXTMENUKB           88)
656(define-integrable SV_CONTEXTHELPKB           89)
657(define-integrable SV_TEXTEDITKB              90)
658(define-integrable SV_BEGINSELECTKB           91)
659(define-integrable SV_ENDSELECTKB             92)
660(define-integrable SV_ANIMATION               93)
661(define-integrable SV_ANIMATIONSPEED          94)
662(define-integrable SV_MONOICONS               95)
663(define-integrable SV_KBDALTERED              96)
664(define-integrable SV_PRINTSCREEN             97)
665(define-integrable SV_LOCKSTARTINPUT          98)
666;;; 99-104
667(define-integrable SV_CSYSVALUES              105)