]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/windows/user32/user32.factor
Reformat
[factor.git] / basis / windows / user32 / user32.factor
old mode 100755 (executable)
new mode 100644 (file)
index 4c39385..2b713af
@@ -1,50 +1,50 @@
 ! Copyright (C) 2005, 2006 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax parser namespaces kernel math
-windows.types generalizations math.bitwise classes.struct
-literals ;
+! See https://factorcode.org/license.txt for BSD license.
+USING: accessors alien alien.c-types alien.syntax classes.struct
+generalizations kernel literals math math.bitwise namespaces
+parser system windows.com.syntax windows.kernel32 windows.ole32
+windows.types ;
 IN: windows.user32
 
 ! HKL for ActivateKeyboardLayout
 CONSTANT: HKL_PREV 0
 CONSTANT: HKL_NEXT 1
 
-CONSTANT: CW_USEDEFAULT HEX: 80000000
-
-CONSTANT: WS_OVERLAPPED       HEX: 00000000
-CONSTANT: WS_POPUP            HEX: 80000000
-CONSTANT: WS_CHILD            HEX: 40000000
-CONSTANT: WS_MINIMIZE         HEX: 20000000
-CONSTANT: WS_VISIBLE          HEX: 10000000
-CONSTANT: WS_DISABLED         HEX: 08000000
-CONSTANT: WS_CLIPSIBLINGS     HEX: 04000000
-CONSTANT: WS_CLIPCHILDREN     HEX: 02000000
-CONSTANT: WS_MAXIMIZE         HEX: 01000000
-CONSTANT: WS_CAPTION          HEX: 00C00000
-CONSTANT: WS_BORDER           HEX: 00800000
-CONSTANT: WS_DLGFRAME         HEX: 00400000
-CONSTANT: WS_VSCROLL          HEX: 00200000
-CONSTANT: WS_HSCROLL          HEX: 00100000
-CONSTANT: WS_SYSMENU          HEX: 00080000
-CONSTANT: WS_THICKFRAME       HEX: 00040000
-CONSTANT: WS_GROUP            HEX: 00020000
-CONSTANT: WS_TABSTOP          HEX: 00010000
-CONSTANT: WS_MINIMIZEBOX      HEX: 00020000
-CONSTANT: WS_MAXIMIZEBOX      HEX: 00010000
+CONSTANT: CW_USEDEFAULT 0x80000000
+
+CONSTANT: WS_OVERLAPPED       0x00000000
+CONSTANT: WS_POPUP            0x80000000
+CONSTANT: WS_CHILD            0x40000000
+CONSTANT: WS_MINIMIZE         0x20000000
+CONSTANT: WS_VISIBLE          0x10000000
+CONSTANT: WS_DISABLED         0x08000000
+CONSTANT: WS_CLIPSIBLINGS     0x04000000
+CONSTANT: WS_CLIPCHILDREN     0x02000000
+CONSTANT: WS_MAXIMIZE         0x01000000
+CONSTANT: WS_CAPTION          0x00C00000
+CONSTANT: WS_BORDER           0x00800000
+CONSTANT: WS_DLGFRAME         0x00400000
+CONSTANT: WS_VSCROLL          0x00200000
+CONSTANT: WS_HSCROLL          0x00100000
+CONSTANT: WS_SYSMENU          0x00080000
+CONSTANT: WS_THICKFRAME       0x00040000
+CONSTANT: WS_GROUP            0x00020000
+CONSTANT: WS_TABSTOP          0x00010000
+CONSTANT: WS_MINIMIZEBOX      0x00020000
+CONSTANT: WS_MAXIMIZEBOX      0x00010000
 
 ! Common window styles
-: WS_OVERLAPPEDWINDOW ( -- n )
-    {
+CONSTANT: WS_OVERLAPPEDWINDOW
+    flags{
         WS_OVERLAPPED
         WS_CAPTION
         WS_SYSMENU
         WS_THICKFRAME
         WS_MINIMIZEBOX
         WS_MAXIMIZEBOX
-    } flags ; foldable
+    }
 
-: WS_POPUPWINDOW ( -- n )
-    { WS_POPUP WS_BORDER WS_SYSMENU } flags ; foldable
+CONSTANT: WS_POPUPWINDOW flags{ WS_POPUP WS_BORDER WS_SYSMENU }
 
 ALIAS: WS_CHILDWINDOW      WS_CHILD
 
@@ -55,44 +55,44 @@ ALIAS: WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
 
 ! Extended window styles
 
-CONSTANT: WS_EX_DLGMODALFRAME     HEX: 00000001
-CONSTANT: WS_EX_NOPARENTNOTIFY    HEX: 00000004
-CONSTANT: WS_EX_TOPMOST           HEX: 00000008
-CONSTANT: WS_EX_ACCEPTFILES       HEX: 00000010
-CONSTANT: WS_EX_TRANSPARENT       HEX: 00000020
-CONSTANT: WS_EX_MDICHILD          HEX: 00000040
-CONSTANT: WS_EX_TOOLWINDOW        HEX: 00000080
-CONSTANT: WS_EX_WINDOWEDGE        HEX: 00000100
-CONSTANT: WS_EX_CLIENTEDGE        HEX: 00000200
-CONSTANT: WS_EX_CONTEXTHELP       HEX: 00000400
-
-CONSTANT: WS_EX_RIGHT             HEX: 00001000
-CONSTANT: WS_EX_LEFT              HEX: 00000000
-CONSTANT: WS_EX_RTLREADING        HEX: 00002000
-CONSTANT: WS_EX_LTRREADING        HEX: 00000000
-CONSTANT: WS_EX_LEFTSCROLLBAR     HEX: 00004000
-CONSTANT: WS_EX_RIGHTSCROLLBAR    HEX: 00000000
-CONSTANT: WS_EX_CONTROLPARENT     HEX: 00010000
-CONSTANT: WS_EX_STATICEDGE        HEX: 00020000
-CONSTANT: WS_EX_APPWINDOW         HEX: 00040000
-
-: WS_EX_OVERLAPPEDWINDOW ( -- n )
-    WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE bitor ; foldable
-
-: WS_EX_PALETTEWINDOW ( -- n )
-    { WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW WS_EX_TOPMOST } flags ; foldable
-
-CONSTANT: CS_VREDRAW          HEX: 0001
-CONSTANT: CS_HREDRAW          HEX: 0002
-CONSTANT: CS_DBLCLKS          HEX: 0008
-CONSTANT: CS_OWNDC            HEX: 0020
-CONSTANT: CS_CLASSDC          HEX: 0040
-CONSTANT: CS_PARENTDC         HEX: 0080
-CONSTANT: CS_NOCLOSE          HEX: 0200
-CONSTANT: CS_SAVEBITS         HEX: 0800
-CONSTANT: CS_BYTEALIGNCLIENT  HEX: 1000
-CONSTANT: CS_BYTEALIGNWINDOW  HEX: 2000
-CONSTANT: CS_GLOBALCLASS      HEX: 4000
+CONSTANT: WS_EX_DLGMODALFRAME     0x00000001
+CONSTANT: WS_EX_NOPARENTNOTIFY    0x00000004
+CONSTANT: WS_EX_TOPMOST           0x00000008
+CONSTANT: WS_EX_ACCEPTFILES       0x00000010
+CONSTANT: WS_EX_TRANSPARENT       0x00000020
+CONSTANT: WS_EX_MDICHILD          0x00000040
+CONSTANT: WS_EX_TOOLWINDOW        0x00000080
+CONSTANT: WS_EX_WINDOWEDGE        0x00000100
+CONSTANT: WS_EX_CLIENTEDGE        0x00000200
+CONSTANT: WS_EX_CONTEXTHELP       0x00000400
+
+CONSTANT: WS_EX_RIGHT             0x00001000
+CONSTANT: WS_EX_LEFT              0x00000000
+CONSTANT: WS_EX_RTLREADING        0x00002000
+CONSTANT: WS_EX_LTRREADING        0x00000000
+CONSTANT: WS_EX_LEFTSCROLLBAR     0x00004000
+CONSTANT: WS_EX_RIGHTSCROLLBAR    0x00000000
+CONSTANT: WS_EX_CONTROLPARENT     0x00010000
+CONSTANT: WS_EX_STATICEDGE        0x00020000
+CONSTANT: WS_EX_APPWINDOW         0x00040000
+
+CONSTANT: WS_EX_OVERLAPPEDWINDOW
+    flags{ WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE }
+
+CONSTANT: WS_EX_PALETTEWINDOW
+    flags{ WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW WS_EX_TOPMOST }
+
+CONSTANT: CS_VREDRAW          0x0001
+CONSTANT: CS_HREDRAW          0x0002
+CONSTANT: CS_DBLCLKS          0x0008
+CONSTANT: CS_OWNDC            0x0020
+CONSTANT: CS_CLASSDC          0x0040
+CONSTANT: CS_PARENTDC         0x0080
+CONSTANT: CS_NOCLOSE          0x0200
+CONSTANT: CS_SAVEBITS         0x0800
+CONSTANT: CS_BYTEALIGNCLIENT  0x1000
+CONSTANT: CS_BYTEALIGNWINDOW  0x2000
+CONSTANT: CS_GLOBALCLASS      0x4000
 
 CONSTANT: COLOR_SCROLLBAR         0
 CONSTANT: COLOR_BACKGROUND        1
@@ -116,13 +116,6 @@ CONSTANT: COLOR_BTNTEXT           18
 CONSTANT: COLOR_INACTIVECAPTIONTEXT 19
 CONSTANT: COLOR_BTNHIGHLIGHT      20
 
-CONSTANT: IDI_APPLICATION     32512
-CONSTANT: IDI_HAND            32513
-CONSTANT: IDI_QUESTION        32514
-CONSTANT: IDI_EXCLAMATION     32515
-CONSTANT: IDI_ASTERISK        32516
-CONSTANT: IDI_WINLOGO         32517
-
 ! ShowWindow() Commands
 CONSTANT: SW_HIDE             0
 CONSTANT: SW_SHOWNORMAL       1
@@ -150,7 +143,7 @@ CONSTANT: PM_NOYIELD    2
 ! : PM_QS_SENDMESSAGE   (QS_SENDMESSAGE << 16) ;
 
 
-! 
+!
 ! Standard Cursor IDs
 !
 CONSTANT: IDC_ARROW           32512
@@ -190,72 +183,72 @@ CONSTANT: CF_LOCALE           16
 CONSTANT: CF_DIBV5            17
 CONSTANT: CF_MAX              18
 
-CONSTANT: CF_OWNERDISPLAY HEX: 0080
-CONSTANT: CF_DSPTEXT HEX: 0081
-CONSTANT: CF_DSPBITMAP HEX: 0082
-CONSTANT: CF_DSPMETAFILEPICT HEX: 0083
-CONSTANT: CF_DSPENHMETAFILE HEX: 008E
+CONSTANT: CF_OWNERDISPLAY     0x0080
+CONSTANT: CF_DSPTEXT          0x0081
+CONSTANT: CF_DSPBITMAP        0x0082
+CONSTANT: CF_DSPMETAFILEPICT  0x0083
+CONSTANT: CF_DSPENHMETAFILE   0x008E
 
 ! "Private" formats don't get GlobalFree()'d
-CONSTANT: CF_PRIVATEFIRST HEX: 200
-CONSTANT: CF_PRIVATELAST HEX: 2FF
+CONSTANT: CF_PRIVATEFIRST 0x200
+CONSTANT: CF_PRIVATELAST 0x2FF
 
 ! "GDIOBJ" formats do get DeleteObject()'d
-CONSTANT: CF_GDIOBJFIRST HEX: 300
-CONSTANT: CF_GDIOBJLAST HEX: 3FF
+CONSTANT: CF_GDIOBJFIRST 0x300
+CONSTANT: CF_GDIOBJLAST 0x3FF
 
 ! Virtual Keys, Standard Set
-CONSTANT: VK_LBUTTON        HEX: 01
-CONSTANT: VK_RBUTTON        HEX: 02
-CONSTANT: VK_CANCEL         HEX: 03
-CONSTANT: VK_MBUTTON        HEX: 04  ! NOT contiguous with L & RBUTTON
-CONSTANT: VK_XBUTTON1       HEX: 05  ! NOT contiguous with L & RBUTTON
-CONSTANT: VK_XBUTTON2       HEX: 06  ! NOT contiguous with L & RBUTTON
+CONSTANT: VK_LBUTTON        0x01
+CONSTANT: VK_RBUTTON        0x02
+CONSTANT: VK_CANCEL         0x03
+CONSTANT: VK_MBUTTON        0x04  ! NOT contiguous with L & RBUTTON
+CONSTANT: VK_XBUTTON1       0x05  ! NOT contiguous with L & RBUTTON
+CONSTANT: VK_XBUTTON2       0x06  ! NOT contiguous with L & RBUTTON
 ! 0x07 : unassigned
-CONSTANT: VK_BACK           HEX: 08
-CONSTANT: VK_TAB            HEX: 09
+CONSTANT: VK_BACK           0x08
+CONSTANT: VK_TAB            0x09
 ! 0x0A - 0x0B : reserved
 
-CONSTANT: VK_CLEAR          HEX: 0C
-CONSTANT: VK_RETURN         HEX: 0D
-
-CONSTANT: VK_SHIFT          HEX: 10
-CONSTANT: VK_CONTROL        HEX: 11
-CONSTANT: VK_MENU           HEX: 12
-CONSTANT: VK_PAUSE          HEX: 13
-CONSTANT: VK_CAPITAL        HEX: 14
-
-CONSTANT: VK_KANA           HEX: 15
-CONSTANT: VK_HANGEUL        HEX: 15 ! old name - here for compatibility
-CONSTANT: VK_HANGUL         HEX: 15
-CONSTANT: VK_JUNJA          HEX: 17
-CONSTANT: VK_FINAL          HEX: 18
-CONSTANT: VK_HANJA          HEX: 19
-CONSTANT: VK_KANJI          HEX: 19
-
-CONSTANT: VK_ESCAPE         HEX: 1B
-
-CONSTANT: VK_CONVERT        HEX: 1C
-CONSTANT: VK_NONCONVERT     HEX: 1D
-CONSTANT: VK_ACCEPT         HEX: 1E
-CONSTANT: VK_MODECHANGE     HEX: 1F
-
-CONSTANT: VK_SPACE          HEX: 20
-CONSTANT: VK_PRIOR          HEX: 21
-CONSTANT: VK_NEXT           HEX: 22
-CONSTANT: VK_END            HEX: 23
-CONSTANT: VK_HOME           HEX: 24
-CONSTANT: VK_LEFT           HEX: 25
-CONSTANT: VK_UP             HEX: 26
-CONSTANT: VK_RIGHT          HEX: 27
-CONSTANT: VK_DOWN           HEX: 28
-CONSTANT: VK_SELECT         HEX: 29
-CONSTANT: VK_PRINT          HEX: 2A
-CONSTANT: VK_EXECUTE        HEX: 2B
-CONSTANT: VK_SNAPSHOT       HEX: 2C
-CONSTANT: VK_INSERT         HEX: 2D
-CONSTANT: VK_DELETE         HEX: 2E
-CONSTANT: VK_HELP           HEX: 2F
+CONSTANT: VK_CLEAR          0x0C
+CONSTANT: VK_RETURN         0x0D
+
+CONSTANT: VK_SHIFT          0x10
+CONSTANT: VK_CONTROL        0x11
+CONSTANT: VK_MENU           0x12
+CONSTANT: VK_PAUSE          0x13
+CONSTANT: VK_CAPITAL        0x14
+
+CONSTANT: VK_KANA           0x15
+CONSTANT: VK_HANGEUL        0x15 ! old name - here for compatibility
+CONSTANT: VK_HANGUL         0x15
+CONSTANT: VK_JUNJA          0x17
+CONSTANT: VK_FINAL          0x18
+CONSTANT: VK_HANJA          0x19
+CONSTANT: VK_KANJI          0x19
+
+CONSTANT: VK_ESCAPE         0x1B
+
+CONSTANT: VK_CONVERT        0x1C
+CONSTANT: VK_NONCONVERT     0x1D
+CONSTANT: VK_ACCEPT         0x1E
+CONSTANT: VK_MODECHANGE     0x1F
+
+CONSTANT: VK_SPACE          0x20
+CONSTANT: VK_PRIOR          0x21
+CONSTANT: VK_NEXT           0x22
+CONSTANT: VK_END            0x23
+CONSTANT: VK_HOME           0x24
+CONSTANT: VK_LEFT           0x25
+CONSTANT: VK_UP             0x26
+CONSTANT: VK_RIGHT          0x27
+CONSTANT: VK_DOWN           0x28
+CONSTANT: VK_SELECT         0x29
+CONSTANT: VK_PRINT          0x2A
+CONSTANT: VK_EXECUTE        0x2B
+CONSTANT: VK_SNAPSHOT       0x2C
+CONSTANT: VK_INSERT         0x2D
+CONSTANT: VK_DELETE         0x2E
+CONSTANT: VK_HELP           0x2F
 
 CONSTANT: VK_0 CHAR: 0
 CONSTANT: VK_1 CHAR: 1
@@ -295,172 +288,172 @@ CONSTANT: VK_X CHAR: X
 CONSTANT: VK_Y CHAR: Y
 CONSTANT: VK_Z CHAR: Z
 
-CONSTANT: VK_LWIN           HEX: 5B
-CONSTANT: VK_RWIN           HEX: 5C
-CONSTANT: VK_APPS           HEX: 5D
+CONSTANT: VK_LWIN           0x5B
+CONSTANT: VK_RWIN           0x5C
+CONSTANT: VK_APPS           0x5D
 
 ! 0x5E : reserved
 
-CONSTANT: VK_SLEEP          HEX: 5F
-
-CONSTANT: VK_NUMPAD0        HEX: 60
-CONSTANT: VK_NUMPAD1        HEX: 61
-CONSTANT: VK_NUMPAD2        HEX: 62
-CONSTANT: VK_NUMPAD3        HEX: 63
-CONSTANT: VK_NUMPAD4        HEX: 64
-CONSTANT: VK_NUMPAD5        HEX: 65
-CONSTANT: VK_NUMPAD6        HEX: 66
-CONSTANT: VK_NUMPAD7        HEX: 67
-CONSTANT: VK_NUMPAD8        HEX: 68
-CONSTANT: VK_NUMPAD9        HEX: 69
-CONSTANT: VK_MULTIPLY       HEX: 6A
-CONSTANT: VK_ADD            HEX: 6B
-CONSTANT: VK_SEPARATOR      HEX: 6C
-CONSTANT: VK_SUBTRACT       HEX: 6D
-CONSTANT: VK_DECIMAL        HEX: 6E
-CONSTANT: VK_DIVIDE         HEX: 6F
-CONSTANT: VK_F1             HEX: 70
-CONSTANT: VK_F2             HEX: 71
-CONSTANT: VK_F3             HEX: 72
-CONSTANT: VK_F4             HEX: 73
-CONSTANT: VK_F5             HEX: 74
-CONSTANT: VK_F6             HEX: 75
-CONSTANT: VK_F7             HEX: 76
-CONSTANT: VK_F8             HEX: 77
-CONSTANT: VK_F9             HEX: 78
-CONSTANT: VK_F10            HEX: 79
-CONSTANT: VK_F11            HEX: 7A
-CONSTANT: VK_F12            HEX: 7B
-CONSTANT: VK_F13            HEX: 7C
-CONSTANT: VK_F14            HEX: 7D
-CONSTANT: VK_F15            HEX: 7E
-CONSTANT: VK_F16            HEX: 7F
-CONSTANT: VK_F17            HEX: 80
-CONSTANT: VK_F18            HEX: 81
-CONSTANT: VK_F19            HEX: 82
-CONSTANT: VK_F20            HEX: 83
-CONSTANT: VK_F21            HEX: 84
-CONSTANT: VK_F22            HEX: 85
-CONSTANT: VK_F23            HEX: 86
-CONSTANT: VK_F24            HEX: 87
+CONSTANT: VK_SLEEP          0x5F
+
+CONSTANT: VK_NUMPAD0        0x60
+CONSTANT: VK_NUMPAD1        0x61
+CONSTANT: VK_NUMPAD2        0x62
+CONSTANT: VK_NUMPAD3        0x63
+CONSTANT: VK_NUMPAD4        0x64
+CONSTANT: VK_NUMPAD5        0x65
+CONSTANT: VK_NUMPAD6        0x66
+CONSTANT: VK_NUMPAD7        0x67
+CONSTANT: VK_NUMPAD8        0x68
+CONSTANT: VK_NUMPAD9        0x69
+CONSTANT: VK_MULTIPLY       0x6A
+CONSTANT: VK_ADD            0x6B
+CONSTANT: VK_SEPARATOR      0x6C
+CONSTANT: VK_SUBTRACT       0x6D
+CONSTANT: VK_DECIMAL        0x6E
+CONSTANT: VK_DIVIDE         0x6F
+CONSTANT: VK_F1             0x70
+CONSTANT: VK_F2             0x71
+CONSTANT: VK_F3             0x72
+CONSTANT: VK_F4             0x73
+CONSTANT: VK_F5             0x74
+CONSTANT: VK_F6             0x75
+CONSTANT: VK_F7             0x76
+CONSTANT: VK_F8             0x77
+CONSTANT: VK_F9             0x78
+CONSTANT: VK_F10            0x79
+CONSTANT: VK_F11            0x7A
+CONSTANT: VK_F12            0x7B
+CONSTANT: VK_F13            0x7C
+CONSTANT: VK_F14            0x7D
+CONSTANT: VK_F15            0x7E
+CONSTANT: VK_F16            0x7F
+CONSTANT: VK_F17            0x80
+CONSTANT: VK_F18            0x81
+CONSTANT: VK_F19            0x82
+CONSTANT: VK_F20            0x83
+CONSTANT: VK_F21            0x84
+CONSTANT: VK_F22            0x85
+CONSTANT: VK_F23            0x86
+CONSTANT: VK_F24            0x87
 
 ! 0x88 - 0x8F : unassigned
 
-CONSTANT: VK_NUMLOCK        HEX: 90
-CONSTANT: VK_SCROLL         HEX: 91
+CONSTANT: VK_NUMLOCK        0x90
+CONSTANT: VK_SCROLL         0x91
 
 ! NEC PC-9800 kbd definitions
-CONSTANT: VK_OEM_NEC_EQUAL  HEX: 92  ! '=' key on numpad
+CONSTANT: VK_OEM_NEC_EQUAL  0x92  ! '=' key on numpad
 
 ! Fujitsu/OASYS kbd definitions
-CONSTANT: VK_OEM_FJ_JISHO   HEX: 92  ! 'Dictionary' key
-CONSTANT: VK_OEM_FJ_MASSHOU HEX: 93  ! 'Unregister word' key
-CONSTANT: VK_OEM_FJ_TOUROKU HEX: 94  ! 'Register word' key
-CONSTANT: VK_OEM_FJ_LOYA    HEX: 95  ! 'Left OYAYUBI' key
-CONSTANT: VK_OEM_FJ_ROYA    HEX: 96  ! 'Right OYAYUBI' key
+CONSTANT: VK_OEM_FJ_JISHO   0x92  ! 'Dictionary' key
+CONSTANT: VK_OEM_FJ_MASSHOU 0x93  ! 'Unregister word' key
+CONSTANT: VK_OEM_FJ_TOUROKU 0x94  ! 'Register word' key
+CONSTANT: VK_OEM_FJ_LOYA    0x95  ! 'Left OYAYUBI' key
+CONSTANT: VK_OEM_FJ_ROYA    0x96  ! 'Right OYAYUBI' key
 
 ! 0x97 - 0x9F : unassigned
 
 ! VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
 ! Used only as parameters to GetAsyncKeyState() and GetKeyState().
 ! No other API or message will distinguish left and right keys in this way.
-CONSTANT: VK_LSHIFT         HEX: A0
-CONSTANT: VK_RSHIFT         HEX: A1
-CONSTANT: VK_LCONTROL       HEX: A2
-CONSTANT: VK_RCONTROL       HEX: A3
-CONSTANT: VK_LMENU          HEX: A4
-CONSTANT: VK_RMENU          HEX: A5
-
-CONSTANT: VK_BROWSER_BACK        HEX: A6
-CONSTANT: VK_BROWSER_FORWARD     HEX: A7
-CONSTANT: VK_BROWSER_REFRESH     HEX: A8
-CONSTANT: VK_BROWSER_STOP        HEX: A9
-CONSTANT: VK_BROWSER_SEARCH      HEX: AA
-CONSTANT: VK_BROWSER_FAVORITES   HEX: AB
-CONSTANT: VK_BROWSER_HOME        HEX: AC
-
-CONSTANT: VK_VOLUME_MUTE         HEX: AD
-CONSTANT: VK_VOLUME_DOWN         HEX: AE
-CONSTANT: VK_VOLUME_UP           HEX: AF
-CONSTANT: VK_MEDIA_NEXT_TRACK    HEX: B0
-CONSTANT: VK_MEDIA_PREV_TRACK    HEX: B1
-CONSTANT: VK_MEDIA_STOP          HEX: B2
-CONSTANT: VK_MEDIA_PLAY_PAUSE    HEX: B3
-CONSTANT: VK_LAUNCH_MAIL         HEX: B4
-CONSTANT: VK_LAUNCH_MEDIA_SELECT HEX: B5
-CONSTANT: VK_LAUNCH_APP1         HEX: B6
-CONSTANT: VK_LAUNCH_APP2         HEX: B7
+CONSTANT: VK_LSHIFT         0xA0
+CONSTANT: VK_RSHIFT         0xA1
+CONSTANT: VK_LCONTROL       0xA2
+CONSTANT: VK_RCONTROL       0xA3
+CONSTANT: VK_LMENU          0xA4
+CONSTANT: VK_RMENU          0xA5
+
+CONSTANT: VK_BROWSER_BACK        0xA6
+CONSTANT: VK_BROWSER_FORWARD     0xA7
+CONSTANT: VK_BROWSER_REFRESH     0xA8
+CONSTANT: VK_BROWSER_STOP        0xA9
+CONSTANT: VK_BROWSER_SEARCH      0xAA
+CONSTANT: VK_BROWSER_FAVORITES   0xAB
+CONSTANT: VK_BROWSER_HOME        0xAC
+
+CONSTANT: VK_VOLUME_MUTE         0xAD
+CONSTANT: VK_VOLUME_DOWN         0xAE
+CONSTANT: VK_VOLUME_UP           0xAF
+CONSTANT: VK_MEDIA_NEXT_TRACK    0xB0
+CONSTANT: VK_MEDIA_PREV_TRACK    0xB1
+CONSTANT: VK_MEDIA_STOP          0xB2
+CONSTANT: VK_MEDIA_PLAY_PAUSE    0xB3
+CONSTANT: VK_LAUNCH_MAIL         0xB4
+CONSTANT: VK_LAUNCH_MEDIA_SELECT 0xB5
+CONSTANT: VK_LAUNCH_APP1         0xB6
+CONSTANT: VK_LAUNCH_APP2         0xB7
 
 ! 0xB8 - 0xB9 : reserved
 
-CONSTANT: VK_OEM_1          HEX: BA  ! ';:' for US
-CONSTANT: VK_OEM_PLUS       HEX: BB  ! '+' any country
-CONSTANT: VK_OEM_COMMA      HEX: BC  ! ',' any country
-CONSTANT: VK_OEM_MINUS      HEX: BD  ! '-' any country
-CONSTANT: VK_OEM_PERIOD     HEX: BE  ! '.' any country
-CONSTANT: VK_OEM_2          HEX: BF  ! '/?' for US
-CONSTANT: VK_OEM_3          HEX: C0  ! '`~' for US
+CONSTANT: VK_OEM_1          0xBA  ! ';:' for US
+CONSTANT: VK_OEM_PLUS       0xBB  ! '+' any country
+CONSTANT: VK_OEM_COMMA      0xBC  ! ',' any country
+CONSTANT: VK_OEM_MINUS      0xBD  ! '-' any country
+CONSTANT: VK_OEM_PERIOD     0xBE  ! '.' any country
+CONSTANT: VK_OEM_2          0xBF  ! '/?' for US
+CONSTANT: VK_OEM_3          0xC0  ! '`~' for US
 
 ! 0xC1 - 0xD7 : reserved
 
 ! 0xD8 - 0xDA : unassigned
 
-CONSTANT: VK_OEM_4          HEX: DB !  '[{' for US
-CONSTANT: VK_OEM_5          HEX: DC !  '\|' for US
-CONSTANT: VK_OEM_6          HEX: DD !  ']}' for US
-CONSTANT: VK_OEM_7          HEX: DE !  ''"' for US
-CONSTANT: VK_OEM_8          HEX: DF
+CONSTANT: VK_OEM_4          0xDB !  '[{' for US
+CONSTANT: VK_OEM_5          0xDC !  '\|' for US
+CONSTANT: VK_OEM_6          0xDD !  ']}' for US
+CONSTANT: VK_OEM_7          0xDE !  ''"' for US
+CONSTANT: VK_OEM_8          0xDF
 
 ! 0xE0 : reserved
 
 ! Various extended or enhanced keyboards
-CONSTANT: VK_OEM_AX         HEX: E1 !  'AX' key on Japanese AX kbd
-CONSTANT: VK_OEM_102        HEX: E2 !  "<>" or "\|" on RT 102-key kbd.
-CONSTANT: VK_ICO_HELP       HEX: E3 !  Help key on ICO
-CONSTANT: VK_ICO_00         HEX: E4 !  00 key on ICO
+CONSTANT: VK_OEM_AX         0xE1 !  'AX' key on Japanese AX kbd
+CONSTANT: VK_OEM_102        0xE2 !  "<>" or "\|" on RT 102-key kbd.
+CONSTANT: VK_ICO_HELP       0xE3 !  Help key on ICO
+CONSTANT: VK_ICO_00         0xE4 !  00 key on ICO
 
-CONSTANT: VK_PROCESSKEY     HEX: E5
+CONSTANT: VK_PROCESSKEY     0xE5
 
-CONSTANT: VK_ICO_CLEAR      HEX: E6
+CONSTANT: VK_ICO_CLEAR      0xE6
 
-CONSTANT: VK_PACKET         HEX: E7
+CONSTANT: VK_PACKET         0xE7
 
 ! 0xE8 : unassigned
 
 ! Nokia/Ericsson definitions
-CONSTANT: VK_OEM_RESET      HEX: E9
-CONSTANT: VK_OEM_JUMP       HEX: EA
-CONSTANT: VK_OEM_PA1        HEX: EB
-CONSTANT: VK_OEM_PA2        HEX: EC
-CONSTANT: VK_OEM_PA3        HEX: ED
-CONSTANT: VK_OEM_WSCTRL     HEX: EE
-CONSTANT: VK_OEM_CUSEL      HEX: EF
-CONSTANT: VK_OEM_ATTN       HEX: F0
-CONSTANT: VK_OEM_FINISH     HEX: F1
-CONSTANT: VK_OEM_COPY       HEX: F2
-CONSTANT: VK_OEM_AUTO       HEX: F3
-CONSTANT: VK_OEM_ENLW       HEX: F4
-CONSTANT: VK_OEM_BACKTAB    HEX: F5
-
-CONSTANT: VK_ATTN           HEX: F6
-CONSTANT: VK_CRSEL          HEX: F7
-CONSTANT: VK_EXSEL          HEX: F8
-CONSTANT: VK_EREOF          HEX: F9
-CONSTANT: VK_PLAY           HEX: FA
-CONSTANT: VK_ZOOM           HEX: FB
-CONSTANT: VK_NONAME         HEX: FC
-CONSTANT: VK_PA1            HEX: FD
-CONSTANT: VK_OEM_CLEAR      HEX: FE
+CONSTANT: VK_OEM_RESET      0xE9
+CONSTANT: VK_OEM_JUMP       0xEA
+CONSTANT: VK_OEM_PA1        0xEB
+CONSTANT: VK_OEM_PA2        0xEC
+CONSTANT: VK_OEM_PA3        0xED
+CONSTANT: VK_OEM_WSCTRL     0xEE
+CONSTANT: VK_OEM_CUSEL      0xEF
+CONSTANT: VK_OEM_ATTN       0xF0
+CONSTANT: VK_OEM_FINISH     0xF1
+CONSTANT: VK_OEM_COPY       0xF2
+CONSTANT: VK_OEM_AUTO       0xF3
+CONSTANT: VK_OEM_ENLW       0xF4
+CONSTANT: VK_OEM_BACKTAB    0xF5
+
+CONSTANT: VK_ATTN           0xF6
+CONSTANT: VK_CRSEL          0xF7
+CONSTANT: VK_EXSEL          0xF8
+CONSTANT: VK_EREOF          0xF9
+CONSTANT: VK_PLAY           0xFA
+CONSTANT: VK_ZOOM           0xFB
+CONSTANT: VK_NONAME         0xFC
+CONSTANT: VK_PA1            0xFD
+CONSTANT: VK_OEM_CLEAR      0xFE
 ! 0xFF : reserved
 
 ! Key State Masks for Mouse Messages
-CONSTANT: MK_LBUTTON          HEX: 0001
-CONSTANT: MK_RBUTTON          HEX: 0002
-CONSTANT: MK_SHIFT            HEX: 0004
-CONSTANT: MK_CONTROL          HEX: 0008
-CONSTANT: MK_MBUTTON          HEX: 0010
-CONSTANT: MK_XBUTTON1         HEX: 0020
-CONSTANT: MK_XBUTTON2         HEX: 0040
+CONSTANT: MK_LBUTTON          0x0001
+CONSTANT: MK_RBUTTON          0x0002
+CONSTANT: MK_SHIFT            0x0004
+CONSTANT: MK_CONTROL          0x0008
+CONSTANT: MK_MBUTTON          0x0010
+CONSTANT: MK_XBUTTON1         0x0020
+CONSTANT: MK_XBUTTON2         0x0040
 
 ! Some fields are not defined for win64
 ! Window field offsets for GetWindowLong()
@@ -500,11 +493,11 @@ CONSTANT: GCLP_HMODULE        -16
 CONSTANT: GCLP_WNDPROC        -24
 CONSTANT: GCLP_HICONSM        -34
 
-CONSTANT: MB_ICONASTERISK    HEX: 00000040
-CONSTANT: MB_ICONEXCLAMATION HEX: 00000030
-CONSTANT: MB_ICONHAND        HEX: 00000010
-CONSTANT: MB_ICONQUESTION    HEX: 00000020
-CONSTANT: MB_OK              HEX: 00000000
+CONSTANT: MB_ICONASTERISK    0x00000040
+CONSTANT: MB_ICONEXCLAMATION 0x00000030
+CONSTANT: MB_ICONHAND        0x00000010
+CONSTANT: MB_ICONQUESTION    0x00000020
+CONSTANT: MB_OK              0x00000000
 
 ALIAS: FVIRTKEY TRUE
 CONSTANT: FNOINVERT 2
@@ -521,9 +514,9 @@ CONSTANT: MAPVK_VK_TO_VSC_EX 3
 CONSTANT: TME_HOVER 1
 CONSTANT: TME_LEAVE 2
 CONSTANT: TME_NONCLIENT 16
-CONSTANT: TME_QUERY HEX: 40000000
-CONSTANT: TME_CANCEL HEX: 80000000
-CONSTANT: HOVER_DEFAULT HEX: ffffffff
+CONSTANT: TME_QUERY 0x40000000
+CONSTANT: TME_CANCEL 0x80000000
+CONSTANT: HOVER_DEFAULT 0xffffffff
 STRUCT: TRACKMOUSEEVENT
     { cbSize DWORD }
     { dwFlags DWORD }
@@ -531,8 +524,8 @@ STRUCT: TRACKMOUSEEVENT
     { dwHoverTime DWORD } ;
 TYPEDEF: TRACKMOUSEEVENT* LPTRACKMOUSEEVENT
 
-CONSTANT: DBT_DEVICEARRIVAL HEX: 8000
-CONSTANT: DBT_DEVICEREMOVECOMPLETE HEX: 8004
+CONSTANT: DBT_DEVICEARRIVAL 0x8000
+CONSTANT: DBT_DEVICEREMOVECOMPLETE 0x8004
 
 CONSTANT: DBT_DEVTYP_DEVICEINTERFACE 5
 
@@ -560,7 +553,7 @@ STRUCT: MONITORINFOEX
     { rcMonitor RECT }
     { rcWork RECT }
     { dwFlags DWORD }
-    { szDevice { "TCHAR" $ CCHDEVICENAME } } ;
+    { szDevice { TCHAR CCHDEVICENAME } } ;
 
 TYPEDEF: MONITORINFOEX* LPMONITORINFOEX
 TYPEDEF: MONITORINFOEX* LPMONITORINFO
@@ -580,45 +573,745 @@ CONSTANT: SWP_HIDEWINDOW 128
 CONSTANT: SWP_NOCOPYBITS 256
 CONSTANT: SWP_NOOWNERZORDER 512
 CONSTANT: SWP_NOSENDCHANGING 1024
-CONSTANT: SWP_DRAWFRAME SWP_FRAMECHANGED
-CONSTANT: SWP_NOREPOSITION SWP_NOOWNERZORDER
+ALIAS: SWP_DRAWFRAME SWP_FRAMECHANGED
+ALIAS: SWP_NOREPOSITION SWP_NOOWNERZORDER
 CONSTANT: SWP_DEFERERASE 8192
 CONSTANT: SWP_ASYNCWINDOWPOS 16384
 
-CONSTANT: MF_ENABLED         HEX: 0000
-CONSTANT: MF_GRAYED          HEX: 0001
-CONSTANT: MF_DISABLED        HEX: 0002
-CONSTANT: MF_STRING          HEX: 0000
-CONSTANT: MF_BITMAP          HEX: 0004
-CONSTANT: MF_UNCHECKED       HEX: 0000
-CONSTANT: MF_CHECKED         HEX: 0008
-CONSTANT: MF_POPUP           HEX: 0010
-CONSTANT: MF_MENUBARBREAK    HEX: 0020
-CONSTANT: MF_MENUBREAK       HEX: 0040
-CONSTANT: MF_UNHILITE        HEX: 0000
-CONSTANT: MF_HILITE          HEX: 0080
-CONSTANT: MF_OWNERDRAW       HEX: 0100
-CONSTANT: MF_USECHECKBITMAPS HEX: 0200
-CONSTANT: MF_BYCOMMAND       HEX: 0000
-CONSTANT: MF_BYPOSITION      HEX: 0400
-CONSTANT: MF_SEPARATOR       HEX: 0800
-CONSTANT: MF_DEFAULT         HEX: 1000
-CONSTANT: MF_SYSMENU         HEX: 2000
-CONSTANT: MF_HELP            HEX: 4000
-CONSTANT: MF_RIGHTJUSTIFY    HEX: 4000
-CONSTANT: MF_MOUSESELECT     HEX: 8000
+CONSTANT: MF_ENABLED         0x0000
+CONSTANT: MF_GRAYED          0x0001
+CONSTANT: MF_DISABLED        0x0002
+CONSTANT: MF_STRING          0x0000
+CONSTANT: MF_BITMAP          0x0004
+CONSTANT: MF_UNCHECKED       0x0000
+CONSTANT: MF_CHECKED         0x0008
+CONSTANT: MF_POPUP           0x0010
+CONSTANT: MF_MENUBARBREAK    0x0020
+CONSTANT: MF_MENUBREAK       0x0040
+CONSTANT: MF_UNHILITE        0x0000
+CONSTANT: MF_HILITE          0x0080
+CONSTANT: MF_OWNERDRAW       0x0100
+CONSTANT: MF_USECHECKBITMAPS 0x0200
+CONSTANT: MF_BYCOMMAND       0x0000
+CONSTANT: MF_BYPOSITION      0x0400
+CONSTANT: MF_SEPARATOR       0x0800
+CONSTANT: MF_DEFAULT         0x1000
+CONSTANT: MF_SYSMENU         0x2000
+CONSTANT: MF_HELP            0x4000
+CONSTANT: MF_RIGHTJUSTIFY    0x4000
+CONSTANT: MF_MOUSESELECT     0x8000
+
+CONSTANT: SPI_GETBEEP               1
+CONSTANT: SPI_SETBEEP               2
+CONSTANT: SPI_GETMOUSE              3
+CONSTANT: SPI_SETMOUSE              4
+CONSTANT: SPI_GETBORDER             5
+CONSTANT: SPI_SETBORDER             6
+CONSTANT: SPI_GETKEYBOARDSPEED      10
+CONSTANT: SPI_SETKEYBOARDSPEED      11
+CONSTANT: SPI_LANGDRIVER            12
+CONSTANT: SPI_ICONHORIZONTALSPACING 13
+CONSTANT: SPI_GETSCREENSAVETIMEOUT  14
+CONSTANT: SPI_SETSCREENSAVETIMEOUT  15
+CONSTANT: SPI_GETSCREENSAVEACTIVE   16
+CONSTANT: SPI_SETSCREENSAVEACTIVE   17
+CONSTANT: SPI_GETGRIDGRANULARITY    18
+CONSTANT: SPI_SETGRIDGRANULARITY    19
+CONSTANT: SPI_SETDESKWALLPAPER      20
+CONSTANT: SPI_SETDESKPATTERN        21
+CONSTANT: SPI_GETKEYBOARDDELAY      22
+CONSTANT: SPI_SETKEYBOARDDELAY      23
+CONSTANT: SPI_ICONVERTICALSPACING   24
+CONSTANT: SPI_GETICONTITLEWRAP      25
+CONSTANT: SPI_SETICONTITLEWRAP      26
+CONSTANT: SPI_GETMENUDROPALIGNMENT  27
+CONSTANT: SPI_SETMENUDROPALIGNMENT  28
+CONSTANT: SPI_SETDOUBLECLKWIDTH     29
+CONSTANT: SPI_SETDOUBLECLKHEIGHT    30
+CONSTANT: SPI_GETICONTITLELOGFONT   31
+CONSTANT: SPI_SETDOUBLECLICKTIME    32
+CONSTANT: SPI_SETMOUSEBUTTONSWAP    33
+CONSTANT: SPI_SETICONTITLELOGFONT   34
+CONSTANT: SPI_GETFASTTASKSWITCH     35
+CONSTANT: SPI_SETFASTTASKSWITCH     36
+CONSTANT: SPI_SETDRAGFULLWINDOWS    37
+CONSTANT: SPI_GETDRAGFULLWINDOWS    38
+
+CONSTANT: SPI_GETFILTERKEYS         50
+CONSTANT: SPI_SETFILTERKEYS         51
+CONSTANT: SPI_GETTOGGLEKEYS         52
+CONSTANT: SPI_SETTOGGLEKEYS         53
+CONSTANT: SPI_GETMOUSEKEYS          54
+CONSTANT: SPI_SETMOUSEKEYS          55
+CONSTANT: SPI_GETSHOWSOUNDS         56
+CONSTANT: SPI_SETSHOWSOUNDS         57
+CONSTANT: SPI_GETSTICKYKEYS         58
+CONSTANT: SPI_SETSTICKYKEYS         59
+CONSTANT: SPI_GETACCESSTIMEOUT      60
+CONSTANT: SPI_SETACCESSTIMEOUT      61
+
+CONSTANT: SPI_GETSOUNDSENTRY        64
+CONSTANT: SPI_SETSOUNDSENTRY        65
+
+! WINVER >= 0x0400
+CONSTANT: SPI_GETNONCLIENTMETRICS   41
+CONSTANT: SPI_SETNONCLIENTMETRICS   42
+CONSTANT: SPI_GETMINIMIZEDMETRICS   43
+CONSTANT: SPI_SETMINIMIZEDMETRICS   44
+CONSTANT: SPI_GETICONMETRICS        45
+CONSTANT: SPI_SETICONMETRICS        46
+CONSTANT: SPI_SETWORKAREA           47
+CONSTANT: SPI_GETWORKAREA           48
+CONSTANT: SPI_SETPENWINDOWS         49
+
+CONSTANT: SPI_GETSERIALKEYS         62
+CONSTANT: SPI_SETSERIALKEYS         63
+CONSTANT: SPI_GETHIGHCONTRAST       66
+CONSTANT: SPI_SETHIGHCONTRAST       67
+CONSTANT: SPI_GETKEYBOARDPREF       68
+CONSTANT: SPI_SETKEYBOARDPREF       69
+CONSTANT: SPI_GETSCREENREADER       70
+CONSTANT: SPI_SETSCREENREADER       71
+CONSTANT: SPI_GETANIMATION          72
+CONSTANT: SPI_SETANIMATION          73
+CONSTANT: SPI_GETFONTSMOOTHING      74
+CONSTANT: SPI_SETFONTSMOOTHING      75
+CONSTANT: SPI_SETDRAGWIDTH          76
+CONSTANT: SPI_SETDRAGHEIGHT         77
+CONSTANT: SPI_SETHANDHELD           78
+CONSTANT: SPI_GETLOWPOWERTIMEOUT    79
+CONSTANT: SPI_GETPOWEROFFTIMEOUT    80
+CONSTANT: SPI_SETLOWPOWERTIMEOUT    81
+CONSTANT: SPI_SETPOWEROFFTIMEOUT    82
+CONSTANT: SPI_GETLOWPOWERACTIVE     83
+CONSTANT: SPI_GETPOWEROFFACTIVE     84
+CONSTANT: SPI_SETLOWPOWERACTIVE     85
+CONSTANT: SPI_SETPOWEROFFACTIVE     86
+CONSTANT: SPI_SETCURSORS            87
+CONSTANT: SPI_SETICONS              88
+CONSTANT: SPI_GETDEFAULTINPUTLANG   89
+CONSTANT: SPI_SETDEFAULTINPUTLANG   90
+CONSTANT: SPI_SETLANGTOGGLE         91
+CONSTANT: SPI_GETWINDOWSEXTENSION   92
+CONSTANT: SPI_SETMOUSETRAILS        93
+CONSTANT: SPI_GETMOUSETRAILS        94
+CONSTANT: SPI_SETSCREENSAVERRUNNING 97
+ALIAS: SPI_SCREENSAVERRUNNING    SPI_SETSCREENSAVERRUNNING
+
+! WIN32_WINNT >= 0x0400 || WIN32_WINDOWS > 0x0400
+CONSTANT: SPI_GETMOUSEHOVERWIDTH    98
+CONSTANT: SPI_SETMOUSEHOVERWIDTH    99
+CONSTANT: SPI_GETMOUSEHOVERHEIGHT   100
+CONSTANT: SPI_SETMOUSEHOVERHEIGHT   101
+CONSTANT: SPI_GETMOUSEHOVERTIME     102
+CONSTANT: SPI_SETMOUSEHOVERTIME     103
+CONSTANT: SPI_GETWHEELSCROLLLINES   104
+CONSTANT: SPI_SETWHEELSCROLLLINES   105
+
+CONSTANT: SPI_GETSHOWIMEUI          110
+CONSTANT: SPI_SETSHOWIMEUI          111
+
+! WINVER >= 0x0500
+CONSTANT: SPI_GETMOUSESPEED         112
+CONSTANT: SPI_SETMOUSESPEED         113
+CONSTANT: SPI_GETSCREENSAVERRUNNING 114
+
+CONSTANT: SPI_GETACTIVEWINDOWTRACKING    0x1000
+CONSTANT: SPI_SETACTIVEWINDOWTRACKING    0x1001
+CONSTANT: SPI_GETMENUANIMATION           0x1002
+CONSTANT: SPI_SETMENUANIMATION           0x1003
+CONSTANT: SPI_GETCOMBOBOXANIMATION       0x1004
+CONSTANT: SPI_SETCOMBOBOXANIMATION       0x1005
+CONSTANT: SPI_GETLISTBOXSMOOTHSCROLLING  0x1006
+CONSTANT: SPI_SETLISTBOXSMOOTHSCROLLING  0x1007
+CONSTANT: SPI_GETGRADIENTCAPTIONS        0x1008
+CONSTANT: SPI_SETGRADIENTCAPTIONS        0x1009
+CONSTANT: SPI_GETMENUUNDERLINES          0x100A
+CONSTANT: SPI_SETMENUUNDERLINES          0x100B
+CONSTANT: SPI_GETACTIVEWNDTRKZORDER      0x100C
+CONSTANT: SPI_SETACTIVEWNDTRKZORDER      0x100D
+CONSTANT: SPI_GETHOTTRACKING             0x100E
+CONSTANT: SPI_SETHOTTRACKING             0x100F
+CONSTANT: SPI_GETFOREGROUNDLOCKTIMEOUT   0x2000
+CONSTANT: SPI_SETFOREGROUNDLOCKTIMEOUT   0x2001
+CONSTANT: SPI_GETACTIVEWNDTRKTIMEOUT     0x2002
+CONSTANT: SPI_SETACTIVEWNDTRKTIMEOUT     0x2003
+CONSTANT: SPI_GETFOREGROUNDFLASHCOUNT    0x2004
+CONSTANT: SPI_SETFOREGROUNDFLASHCOUNT    0x2005
+
+! SystemParamInfo Flags
+CONSTANT: SPIF_UPDATEINIFILE              1
+CONSTANT: SPIF_SENDWININICHANGE           2
+ALIAS: SPIF_SENDCHANGE                 SPIF_SENDWININICHANGE
+
+
+TYPEDEF: HANDLE HRAWINPUT
+: GET_RAWINPUT_CODE_WPARAM ( wParam -- n ) 0xff bitand ; inline
+
+CONSTANT: LLMHF_INJECTED 1
+CONSTANT: LLMHF_LOWER_IL_INJECTED 2
+
+
+CONSTANT: WH_JOURNALRECORD 0    ! global
+CONSTANT: WH_JOURNALPLAYBACK 1  ! global
+CONSTANT: WH_KEYBOARD 2         ! thread/global
+CONSTANT: WH_GETMESSAGE 3       ! thread/global
+CONSTANT: WH_CALLWNDPROC 4      ! thread/global
+CONSTANT: WH_CBT 5              ! thread/global
+CONSTANT: WH_SYSMSGFILTER 6     ! global
+CONSTANT: WH_MOUSE 7            ! thread/global
+CONSTANT: WH_DEBUG 9            ! thread/global
+CONSTANT: WH_SHELL 10           ! thread/global
+CONSTANT: WH_FOREGROUNDIDLE 11  ! thread/global
+CONSTANT: WH_CALLWNDPROCRET 12  ! thread/global
+CONSTANT: WH_KEYBOARD_LL 13     ! global
+CONSTANT: WH_MOUSE_LL 14        ! global
+CONSTANT: WH_MSGFILTER -1       ! thread/global
+
+
+STRUCT: KBDLLHOOKSTRUCT
+    { vkCode DWORD }
+    { scanCode DWORD }
+    { flags DWORD }
+    { time DWORD }
+    { dwExtraInfo ULONG_PTR } ;
+TYPEDEF: KBDLLHOOKSTRUCT* PKBDLLHOOKSTRUCT
+TYPEDEF: KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT
+
+STRUCT: MSLLHOOKSTRUCT
+  { pt POINT }
+  { mouseData DWORD }
+  { flags DWORD }
+  { time DWORD }
+  { dwExtraInfo ULONG_PTR } ;
+TYPEDEF: MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT
+TYPEDEF: MSLLHOOKSTRUCT* LPMSLLHOOKSTRUCT
+
+CONSTANT: RIM_INPUT        0
+CONSTANT: RIM_INPUTSINK    1
+
+CONSTANT: RIM_TYPEMOUSE    0
+CONSTANT: RIM_TYPEKEYBOARD 1
+CONSTANT: RIM_TYPEHID      2
+
+STRUCT: RAWINPUTHEADER
+    { dwType  DWORD  }
+    { dwSize  DWORD  }
+    { hDevice HANDLE }
+    { wParam  WPARAM } ;
+TYPEDEF: RAWINPUTHEADER* PRAWINPUTHEADER
+TYPEDEF: RAWINPUTHEADER* LPRAWINPUTHEADER
+STRUCT: RAWMOUSE_BUTTONS_USBUTTONS
+    { usButtonFlags USHORT }
+    { usButtonData  USHORT } ;
+
+UNION-STRUCT: RAWMOUSE_BUTTONS
+    { ulButtons ULONG                      }
+    { usButtons RAWMOUSE_BUTTONS_USBUTTONS } ;
+STRUCT: RAWMOUSE
+    { usFlags            USHORT            }
+    { uButtons           RAWMOUSE_BUTTONS  }
+    { ulRawButtons       ULONG             }
+    { lLastX             LONG              }
+    { lLastY             LONG              }
+    { ulExtraInformation ULONG             } ;
+TYPEDEF: RAWMOUSE* PRAWMOUSE
+TYPEDEF: RAWMOUSE* LPRAWMOUSE
+
+CONSTANT: RI_MOUSE_LEFT_BUTTON_DOWN   0x0001
+CONSTANT: RI_MOUSE_LEFT_BUTTON_UP     0x0002
+CONSTANT: RI_MOUSE_RIGHT_BUTTON_DOWN  0x0004
+CONSTANT: RI_MOUSE_RIGHT_BUTTON_UP    0x0008
+CONSTANT: RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010
+CONSTANT: RI_MOUSE_MIDDLE_BUTTON_UP   0x0020
+
+: RI_MOUSE_BUTTON_1_DOWN      ( -- n ) RI_MOUSE_LEFT_BUTTON_DOWN ; inline
+: RI_MOUSE_BUTTON_1_UP        ( -- n ) RI_MOUSE_LEFT_BUTTON_UP ; inline
+: RI_MOUSE_BUTTON_2_DOWN      ( -- n ) RI_MOUSE_RIGHT_BUTTON_DOWN ; inline
+: RI_MOUSE_BUTTON_2_UP        ( -- n ) RI_MOUSE_RIGHT_BUTTON_UP ; inline
+: RI_MOUSE_BUTTON_3_DOWN      ( -- n ) RI_MOUSE_MIDDLE_BUTTON_DOWN ; inline
+: RI_MOUSE_BUTTON_3_UP        ( -- n ) RI_MOUSE_MIDDLE_BUTTON_UP ; inline
+
+CONSTANT: RI_MOUSE_BUTTON_4_DOWN      0x0040
+CONSTANT: RI_MOUSE_BUTTON_4_UP        0x0080
+CONSTANT: RI_MOUSE_BUTTON_5_DOWN      0x0100
+CONSTANT: RI_MOUSE_BUTTON_5_UP        0x0200
+CONSTANT: RI_MOUSE_WHEEL              0x0400
+
+CONSTANT: MOUSE_MOVE_RELATIVE      0
+CONSTANT: MOUSE_MOVE_ABSOLUTE      1
+CONSTANT: MOUSE_VIRTUAL_DESKTOP    0x02
+CONSTANT: MOUSE_ATTRIBUTES_CHANGED 0x04
+CONSTANT: MOUSE_MOVE_NOCOALESCE    0x08
+
+STRUCT: RAWKEYBOARD
+    { MakeCode         USHORT }
+    { Flags            USHORT }
+    { Reserved         USHORT }
+    { VKey             USHORT }
+    { Message          UINT   }
+    { ExtraInformation ULONG  } ;
+TYPEDEF: RAWKEYBOARD* PRAWKEYBOARD
+TYPEDEF: RAWKEYBOARD* LPRAWKEYBOARD
+
+CONSTANT: KEYBOARD_OVERRUN_MAKE_CODE    0xFF
+
+CONSTANT: RI_KEY_MAKE             0
+CONSTANT: RI_KEY_BREAK            1
+CONSTANT: RI_KEY_E0               2
+CONSTANT: RI_KEY_E1               4
+CONSTANT: RI_KEY_TERMSRV_SET_LED  8
+CONSTANT: RI_KEY_TERMSRV_SHADOW   0x10
+
+STRUCT: RAWHID
+    { dwSizeHid DWORD   }
+    { dwCount   DWORD   }
+    { bRawData  BYTE[1] } ;
+TYPEDEF: RAWHID* PRAWHID
+TYPEDEF: RAWHID* LPRAWHID
+
+UNION-STRUCT: RAWINPUT_UNION
+    { mouse    RAWMOUSE }
+    { keyboard RAWKEYBOARD }
+    { hid      RAWHID } ;
+STRUCT: RAWINPUT
+    { header RAWINPUTHEADER }
+    { data   RAWINPUT_UNION } ;
+TYPEDEF: RAWINPUT* PRAWINPUT
+TYPEDEF: RAWINPUT* LPRAWINPUT
+
+: RAWINPUT_ALIGN ( x -- y )
+    cpu x86.32 = [ 4 ] [ 8 ] if align ; inline
+: NEXTRAWINPUTBLOCK ( struct -- next-struct )
+    dup header>> dwSize>> swap <displaced-alien> RAWINPUT_ALIGN RAWINPUT memory>struct ; inline
+
+CONSTANT: RID_INPUT               0x10000003
+CONSTANT: RID_HEADER              0x10000005
+CONSTANT: RIDI_PREPARSEDDATA      0x20000005
+CONSTANT: RIDI_DEVICENAME         0x20000007
+CONSTANT: RIDI_DEVICEINFO         0x2000000b
+
+STRUCT: RID_DEVICE_INFO_MOUSE
+    { dwId                 DWORD }
+    { dwNumberOfButtons    DWORD }
+    { dwSampleRate         DWORD }
+    { fHasHorizontalWheel  BOOL  } ;
+TYPEDEF: RID_DEVICE_INFO_MOUSE* PRID_DEVICE_INFO_MOUSE
+
+STRUCT: RID_DEVICE_INFO_KEYBOARD
+    { dwType                 DWORD }
+    { dwSubType              DWORD }
+    { dwKeyboardMode         DWORD }
+    { dwNumberOfFunctionKeys DWORD }
+    { dwNumberOfIndicators   DWORD }
+    { dwNumberOfKeysTotal    DWORD } ;
+TYPEDEF: RID_DEVICE_INFO_KEYBOARD* PRID_DEVICE_INFO_KEYBOARD
+
+STRUCT: RID_DEVICE_INFO_HID
+    { dwVendorId      DWORD  }
+    { dwProductId     DWORD  }
+    { dwVersionNumber DWORD  }
+    { usUsagePage     USHORT }
+    { usUsage         USHORT } ;
+TYPEDEF: RID_DEVICE_INFO_HID* PRID_DEVICE_INFO_HID
+
+UNION-STRUCT: RID_DEVICE_INFO_UNION
+    { mouse    RID_DEVICE_INFO_MOUSE    }
+    { keyboard RID_DEVICE_INFO_KEYBOARD }
+    { hid      RID_DEVICE_INFO_HID      } ;
+STRUCT: RID_DEVICE_INFO
+    { cbSize DWORD                 }
+    { dwType DWORD                 }
+    { data   RID_DEVICE_INFO_UNION } ;
+TYPEDEF: RID_DEVICE_INFO* PRID_DEVICE_INFO
+TYPEDEF: RID_DEVICE_INFO* LPRID_DEVICE_INFO
+
+STRUCT: RAWINPUTDEVICE
+    { usUsagePage USHORT }
+    { usUsage     USHORT }
+    { dwFlags     DWORD  }
+    { hwndTarget  HWND   } ;
+TYPEDEF: RAWINPUTDEVICE* PRAWINPUTDEVICE
+TYPEDEF: RAWINPUTDEVICE* LPRAWINPUTDEVICE
+TYPEDEF: RAWINPUTDEVICE* PCRAWINPUTDEVICE
+
+CONSTANT: RIDEV_REMOVE            0x00000001
+CONSTANT: RIDEV_EXCLUDE           0x00000010
+CONSTANT: RIDEV_PAGEONLY          0x00000020
+CONSTANT: RIDEV_NOLEGACY          0x00000030
+CONSTANT: RIDEV_INPUTSINK         0x00000100
+CONSTANT: RIDEV_CAPTUREMOUSE      0x00000200
+CONSTANT: RIDEV_NOHOTKEYS         0x00000200
+CONSTANT: RIDEV_APPKEYS           0x00000400
+CONSTANT: RIDEV_EXINPUTSINK       0x00001000
+CONSTANT: RIDEV_DEVNOTIFY         0x00002000
+CONSTANT: RIDEV_EXMODEMASK        0x000000F0
+
+: RIDEV_EXMODE ( mode -- x ) RIDEV_EXMODEMASK bitand ; inline
+
+CONSTANT: GIDC_ARRIVAL             1
+CONSTANT: GIDC_REMOVAL             2
+
+: GET_DEVICE_CHANGE_WPARAM ( wParam -- x ) 0xffff bitand ; inline
+
+STRUCT: RAWINPUTDEVICELIST
+    { hDevice HANDLE }
+    { dwType  DWORD  } ;
+TYPEDEF: RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST
+
+CONSTANT: CCHFORMNAME 32
+
+CONSTANT: CDS_UPDATEREGISTRY      0x00000001
+CONSTANT: CDS_TEST                0x00000002
+CONSTANT: CDS_FULLSCREEN          0x00000004
+CONSTANT: CDS_GLOBAL              0x00000008
+CONSTANT: CDS_SET_PRIMARY         0x00000010
+CONSTANT: CDS_RESET               0x40000000
+CONSTANT: CDS_SETRECT             0x20000000
+CONSTANT: CDS_NORESET             0x10000000
+
+CONSTANT: DISP_CHANGE_SUCCESSFUL 0
+CONSTANT: DISP_CHANGE_RESTART 1
+CONSTANT: DISP_CHANGE_FAILED     -1
+CONSTANT: DISP_CHANGE_BADMODE    -2
+CONSTANT: DISP_CHANGE_NOTUPDATED -3
+CONSTANT: DISP_CHANGE_BADFLAGS   -4
+CONSTANT: DISP_CHANGE_BADPARAM   -5
+
+STRUCT: DEVMODE_PROPS1
+    { dmOrientation short }
+    { dmPaperSize short }
+    { dmPaperLength short }
+    { dmPaperWidth short }
+    { dmScale short }
+    { dmCopies short }
+    { dmDefaultSource short }
+    { dmPrintQuality short } ;
+
+STRUCT: DEVMODE_PROPS2
+    { dmPosition POINTL }
+    { dmDisplayOrientation DWORD }
+    { dmDisplayFixedOutput DWORD } ;
+
+UNION-STRUCT: DEVMODE_UNION_1
+    { props1 DEVMODE_PROPS1 }
+    { props2 DEVMODE_PROPS2 } ;
+
+STRUCT: DEVMODE
+    { dmDeviceName WCHAR[CCHDEVICENAME] }
+    { dmSpecVersion WORD }
+    { dmDriverVersion WORD }
+    { dmSize WORD }
+    { dmDriverExtra WORD }
+    { dmFields DWORD }
+
+    { props DEVMODE_UNION_1 }
+
+    { dmColor short }
+    { dmDuplex short }
+    { dmYResolution short }
+    { dmTTOption short }
+    { dmCollate short }
+    { dmFormName WCHAR[CCHFORMNAME] }
+    { dmLogPixels WORD }
+    { dmBitsPerPel DWORD }
+    { dmPelsWidth DWORD }
+    { dmPelsHeight DWORD }
+    { dmDisplayFlags DWORD }
+    { dmDisplayFrequency DWORD }
+    { dmiCMMethod DWORD }
+    { dmICMIntent DWORD }
+    { dmMediaType DWORD }
+    { dmDitherType DWORD }
+    { dmReserved1 DWORD }
+    { dmReserved2 DWORD }
+    { dmPanningWidth DWORD }
+    { dmPanningHeight DWORD } ;
+
+TYPEDEF: DEVMODE DEVMODEW
+TYPEDEF: DEVMODE* PDEVMODE
+TYPEDEF: DEVMODE* LPDEVMODE
+
+STRUCT: DISPLAY_DEVICEW
+    { cb DWORD }
+    { DeviceName CHAR[32] }
+    { DeviceString CHAR[128] }
+    { StateFlags DWORD }
+    { DeviceID CHAR[128] }
+    { DeviceKey CHAR[128] } ;
+TYPEDEF: DISPLAY_DEVICEW* PDISPLAY_DEVICEW
+TYPEDEF: DISPLAY_DEVICEW* LPDISPLAY_DEVICEW
+
+CALLBACK: BOOL DESKTOPENUMPROCW ( LPWSTR arg1, LPARAM arg2 )
+
+CONSTANT: MSGFLT_ADD    1
+CONSTANT: MSGFLT_REMOVE 2
+
+CONSTANT: MSGFLT_RESET    0
+CONSTANT: MSGFLT_ALLOW    1
+CONSTANT: MSGFLT_DISALLOW 2
+
+STRUCT: CHANGEFILTERSTRUCT
+    { cbSize DWORD }
+    { ExtStatus DWORD } ;
+TYPEDEF: CHANGEFILTERSTRUCT* PCHANGEFILTERSTRUCT
+
+CONSTANT: INPUT_MOUSE 0
+CONSTANT: INPUT_KEYBOARD 1
+CONSTANT: INPUT_HARDWARE 2
+
+CONSTANT: XBUTTON1 1
+CONSTANT: XBUTTON2 2
+
+CONSTANT: MOUSEEVENTF_ABSOLUTE 0x8000
+CONSTANT: MOUSEEVENTF_HWHEEL 0x01000
+CONSTANT: MOUSEEVENTF_MOVE 0x0001
+CONSTANT: MOUSEEVENTF_MOVE_NOCOALESCE 0x2000
+CONSTANT: MOUSEEVENTF_LEFTDOWN 0x0002
+CONSTANT: MOUSEEVENTF_LEFTUP 0x0004
+CONSTANT: MOUSEEVENTF_RIGHTDOWN 0x0008
+CONSTANT: MOUSEEVENTF_RIGHTUP 0x0010
+CONSTANT: MOUSEEVENTF_MIDDLEDOWN 0x0020
+CONSTANT: MOUSEEVENTF_MIDDLEUP 0x0040
+CONSTANT: MOUSEEVENTF_VIRTUALDESK 0x4000
+CONSTANT: MOUSEEVENTF_WHEEL 0x0800
+CONSTANT: MOUSEEVENTF_XDOWN 0x0080
+CONSTANT: MOUSEEVENTF_XUP 0x0100
+
+STRUCT: MOUSEINPUT
+    { dx LONG }
+    { dy LONG }
+    { mouseData DWORD }
+    { dwFlags DWORD }
+    { time DWORD }
+    { dwExtraInfo ULONG_PTR } ;
+TYPEDEF: MOUSEINPUT* PMOUSEINPUT
+
+CONSTANT: KEYEVENTF_EXTENDEDKEY 1
+CONSTANT: KEYEVENTF_KEYUP 2
+CONSTANT: KEYEVENTF_UNICODE 4
+CONSTANT: KEYEVENTF_SCANCODE 8
+
+
+STRUCT: KEYBDINPUT
+    { wVk WORD }
+    { wScan WORD }
+    { dwFlags DWORD }
+    { time DWORD }
+    { dwExtraInfo ULONG_PTR } ;
+TYPEDEF: KEYBDINPUT* PKEYBDINPUT
+
+STRUCT: HARDWAREINPUT
+    { uMsg DWORD }
+    { wParamL WORD }
+    { wParamH WORD } ;
+TYPEDEF: HARDWAREINPUT* PHARDWAREINPUT
+
+
+UNION-STRUCT: ANYINPUT
+    { mi MOUSEINPUT }
+    { ki KEYBDINPUT }
+    { hi HARDWAREINPUT } ;
+
+STRUCT: INPUT
+    { type DWORD }
+    { input ANYINPUT } ;
+TYPEDEF: INPUT* PINPUT
+TYPEDEF: INPUT* LPINPUT
+
+
+CONSTANT: LR_DEFAULTCOLOR 0x00
+CONSTANT: LR_MONOCHROME 0x01
+CONSTANT: LR_COLOR 0x02
+CONSTANT: LR_COPYRETURNORG 0x04
+CONSTANT: LR_COPYDELETEORG 0x08
+CONSTANT: LR_LOADFROMFILE 0x10
+CONSTANT: LR_LOADTRANSPARENT 0x20
+CONSTANT: LR_DEFAULTSIZE 0x40
+CONSTANT: LR_VGACOLOR 0x80
+CONSTANT: LR_LOADMAP3DCOLORS 0x1000
+CONSTANT: LR_CREATEDIBSECTION 0x2000
+CONSTANT: LR_COPYFROMRESOURCE 0x4000
+CONSTANT: LR_SHARED 0x8000
+
+CONSTANT: IMAGE_BITMAP 0
+CONSTANT: IMAGE_ICON 1
+CONSTANT: IMAGE_CURSOR 2
+
+CONSTANT: IDI_APPLICATION 32512
+CONSTANT: IDI_ASTERISK 21516
+CONSTANT: IDI_ERROR 32513
+CONSTANT: IDI_EXCLAMATION 32515
+CONSTANT: IDI_HAND 32513
+CONSTANT: IDI_INFORMATION 32516
+CONSTANT: IDI_QUESTION 32514
+CONSTANT: IDI_SHIELD 32518
+CONSTANT: IDI_WARNING 32515
+CONSTANT: IDI_WINLOGO 32517
+
+CONSTANT: OBM_BTNCORNERS 32758
+CONSTANT: OBM_BTSIZE 32761
+CONSTANT: OBM_CHECK 32760
+CONSTANT: OBM_CHECKBOXES 32759
+CONSTANT: OBM_CLOSE 32754
+CONSTANT: OBM_COMBO 32738
+CONSTANT: OBM_DNARROW 32752
+CONSTANT: OBM_DNARROWD 32742
+CONSTANT: OBM_DNARROWI 32736
+CONSTANT: OBM_LFARROW 32750
+CONSTANT: OBM_LFARROWI 32734
+CONSTANT: OBM_LFARROWD 32740
+CONSTANT: OBM_MNARROW 32739
+CONSTANT: OBM_OLD_CLOSE 32767
+CONSTANT: OBM_OLD_DNARROW 32764
+CONSTANT: OBM_OLD_LFARROW 32762
+CONSTANT: OBM_OLD_REDUCE 32757
+CONSTANT: OBM_OLD_RESTORE 32755
+CONSTANT: OBM_OLD_RGARROW 32763
+CONSTANT: OBM_OLD_UPARROW 32765
+CONSTANT: OBM_OLD_ZOOM 32756
+CONSTANT: OBM_REDUCE 32749
+CONSTANT: OBM_REDUCED 32746
+CONSTANT: OBM_RESTORE 32747
+CONSTANT: OBM_RESTORED 32744
+CONSTANT: OBM_RGARROW 32751
+CONSTANT: OBM_RGARROWD 32741
+CONSTANT: OBM_RGARROWI 32735
+CONSTANT: OBM_SIZE 32766
+CONSTANT: OBM_UPARROW 32753
+CONSTANT: OBM_UPARROWD 32743
+CONSTANT: OBM_UPARROWI 32737
+CONSTANT: OBM_ZOOM 32748
+CONSTANT: OBM_ZOOMD 32745
+CONSTANT: OCR_NORMAL 32512
+CONSTANT: OCR_IBEAM 32513
+CONSTANT: OCR_WAIT 32514
+CONSTANT: OCR_CROSS 32515
+CONSTANT: OCR_UP 32516
+CONSTANT: OCR_SIZE 32640
+CONSTANT: OCR_ICON 32641
+CONSTANT: OCR_SIZENWSE 32642
+CONSTANT: OCR_SIZENESW 32643
+CONSTANT: OCR_SIZEWE 32644
+CONSTANT: OCR_SIZENS 32645
+CONSTANT: OCR_SIZEALL 32646
+CONSTANT: OCR_NO 32648
+CONSTANT: OCR_APPSTARTING 32650
+CONSTANT: OIC_SAMPLE 32512
+CONSTANT: OIC_HAND 32513
+CONSTANT: OIC_QUES 32514
+CONSTANT: OIC_BANG 32515
+CONSTANT: OIC_NOTE 32516
+CONSTANT: OIC_WINLOGO 32517
+CONSTANT: OIC_WARNING 32515
+CONSTANT: OIC_ERROR 32513
+CONSTANT: OIC_INFORMATION 32516
+
+CONSTANT: SM_CXSCREEN 0
+CONSTANT: SM_CYSCREEN 1
+CONSTANT: SM_CXVSCROLL 2
+CONSTANT: SM_CYHSCROLL 3
+CONSTANT: SM_CYCAPTION 4
+CONSTANT: SM_CXBORDER 5
+CONSTANT: SM_CYBORDER 6
+CONSTANT: SM_CXDLGFRAME 7
+CONSTANT: SM_CXFIXEDFRAME 7
+CONSTANT: SM_CYDLGFRAME 8
+CONSTANT: SM_CYFIXEDFRAME 8
+CONSTANT: SM_CYVTHUMB 9
+CONSTANT: SM_CXHTHUMB 10
+CONSTANT: SM_CXICON 11
+CONSTANT: SM_CYICON 12
+CONSTANT: SM_CXCURSOR 13
+CONSTANT: SM_CYCURSOR 14
+CONSTANT: SM_CYMENU 15
+CONSTANT: SM_CXFULLSCREEN 16
+CONSTANT: SM_CYFULLSCREEN 17
+CONSTANT: SM_CYKANJIWINDOW 18
+CONSTANT: SM_MOUSEPRESENT 19
+CONSTANT: SM_CYVSCROLL 20
+CONSTANT: SM_CXHSCROLL 21
+CONSTANT: SM_DEBUG 22
+CONSTANT: SM_SWAPBUTTON 23
+CONSTANT: SM_RESERVED1 24
+CONSTANT: SM_RESERVED2 25
+CONSTANT: SM_RESERVED3 26
+CONSTANT: SM_RESERVED4 27
+CONSTANT: SM_CXMIN 28
+CONSTANT: SM_CYMIN 29
+CONSTANT: SM_CXSIZE 30
+CONSTANT: SM_CYSIZE 31
+CONSTANT: SM_CXSIZEFRAME 32
+CONSTANT: SM_CXFRAME 32
+CONSTANT: SM_CYSIZEFRAME 33
+CONSTANT: SM_CYFRAME 33
+CONSTANT: SM_CXMINTRACK 34
+CONSTANT: SM_CYMINTRACK 35
+CONSTANT: SM_CXDOUBLECLK 36
+CONSTANT: SM_CYDOUBLECLK 37
+CONSTANT: SM_CXICONSPACING 38
+CONSTANT: SM_CYICONSPACING 39
+CONSTANT: SM_MENUDROPALIGNMENT 40
+CONSTANT: SM_PENWINDOWS 41
+CONSTANT: SM_DBCSENABLED 42
+CONSTANT: SM_CMOUSEBUTTONS 43
+CONSTANT: SM_SECURE 44
+CONSTANT: SM_CXEDGE 45
+CONSTANT: SM_CYEDGE 46
+CONSTANT: SM_CXMINSPACING 47
+CONSTANT: SM_CYMINSPACING 48
+CONSTANT: SM_CXSMICON 49
+CONSTANT: SM_CYSMICON 50
+CONSTANT: SM_CYSMCAPTION 51
+CONSTANT: SM_CXSMSIZE 52
+CONSTANT: SM_CYSMSIZE 53
+CONSTANT: SM_CXMENUSIZE 54
+CONSTANT: SM_CYMENUSIZE 55
+CONSTANT: SM_ARRANGE 56
+CONSTANT: SM_CXMINIMIZED 57
+CONSTANT: SM_CYMINIMIZED 58
+CONSTANT: SM_CXMAXTRACK 59
+CONSTANT: SM_CYMAXTRACK 60
+CONSTANT: SM_CXMAXIMIZED 61
+CONSTANT: SM_CYMAXIMIZED 62
+CONSTANT: SM_NETWORK 63
+! CONSTANT: LR_DEFAULTSIZE 64
+CONSTANT: SM_CLEANBOOT 67
+CONSTANT: SM_CXDRAG 68
+CONSTANT: SM_CYDRAG 69
+CONSTANT: SM_SHOWSOUNDS 70
+CONSTANT: SM_CXMENUCHECK 71
+CONSTANT: SM_CYMENUCHECK 72
+CONSTANT: SM_SLOWMACHINE 73
+CONSTANT: SM_MIDEASTENABLED 74
+CONSTANT: SM_MOUSEWHEELPRESENT 75
+CONSTANT: SM_XVIRTUALSCREEN 76
+CONSTANT: SM_YVIRTUALSCREEN 77
+CONSTANT: SM_CXVIRTUALSCREEN 78
+CONSTANT: SM_CYVIRTUALSCREEN 79
+CONSTANT: SM_CMONITORS 80
+CONSTANT: SM_SAMEDISPLAYFORMAT 81
+CONSTANT: SM_IMMENABLED 82
+CONSTANT: SM_CXFOCUSBORDER 83
+CONSTANT: SM_CYFOCUSBORDER 84
+CONSTANT: SM_TABLETPC 86
+CONSTANT: SM_MEDIACENTER 87
+CONSTANT: SM_CMETRICS 88
+CONSTANT: SM_REMOTESESSION 0X1000
+
+CONSTANT: DF_ALLOWOTHERACCOUNTHOOK 1
 
 LIBRARY: user32
 
-FUNCTION: HKL ActivateKeyboardLayout ( HKL hkl, UINT Flags ) ;
-FUNCTION: BOOL AdjustWindowRect ( LPRECT lpRect, DWORD dwStyle, BOOL bMenu ) ;
-FUNCTION: BOOL AdjustWindowRectEx ( LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle ) ;
+FUNCTION: HKL ActivateKeyboardLayout ( HKL hkl, UINT Flags )
+FUNCTION: BOOL AdjustWindowRect ( LPRECT lpRect, DWORD dwStyle, BOOL bMenu )
+FUNCTION: BOOL AdjustWindowRectEx ( LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle )
 ! FUNCTION: AlignRects
 ! FUNCTION: AllowForegroundActivation
 ! FUNCTION: AllowSetForegroundWindow
 ! FUNCTION: AnimateWindow
 
-FUNCTION: BOOL AnyPopup ( ) ;
+FUNCTION: BOOL AnyPopup ( )
 
 ! FUNCTION: AppendMenuA
 ! FUNCTION: AppendMenuW
@@ -626,7 +1319,7 @@ FUNCTION: BOOL AnyPopup ( ) ;
 ! FUNCTION: AttachThreadInput
 ! FUNCTION: BeginDeferWindowPos
 
-FUNCTION: HDC BeginPaint ( HWND hwnd, LPPAINTSTRUCT lpPaint ) ;
+FUNCTION: HDC BeginPaint ( HWND hwnd, LPPAINTSTRUCT lpPaint )
 
 ! FUNCTION: BlockInput
 ! FUNCTION: BringWindowToTop
@@ -640,18 +1333,28 @@ FUNCTION: HDC BeginPaint ( HWND hwnd, LPPAINTSTRUCT lpPaint ) ;
 ! FUNCTION: CallMsgFilter
 ! FUNCTION: CallMsgFilterA
 ! FUNCTION: CallMsgFilterW
-! FUNCTION: CallNextHookEx
+FUNCTION: LRESULT CallNextHookEx ( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam )
 ! FUNCTION: CallWindowProcA
 ! FUNCTION: CallWindowProcW
 ! FUNCTION: CascadeChildWindows
 ! FUNCTION: CascadeWindows
 ! FUNCTION: ChangeClipboardChain
-! FUNCTION: ChangeDisplaySettingsA
-! FUNCTION: ChangeDisplaySettingsExA
-! FUNCTION: ChangeDisplaySettingsExW
-! FUNCTION: ChangeDisplaySettingsW
+FUNCTION: LONG ChangeDisplaySettingsExW ( LPCTSTR lpszDeviceName, DEVMODE *lpDevMode, HWND hwnd, DWORD dwFlags, LPVOID lParam )
+FUNCTION: LONG ChangeDisplaySettingsW ( DEVMODE *lpDevMode, DWORD dwFlags )
+ALIAS: ChangeDisplaySettingsEx ChangeDisplaySettingsExW
+ALIAS: ChangeDisplaySettings ChangeDisplaySettingsW
 ! FUNCTION: ChangeMenuA
 ! FUNCTION: ChangeMenuW
+
+FUNCTION: BOOL ChangeWindowMessageFilter (
+                UINT message,
+                DWORD dwFlag )
+FUNCTION: BOOL ChangeWindowMessageFilterEx (
+                HWND hWnd,
+                UINT message,
+                DWORD action,
+                PCHANGEFILTERSTRUCT pChangeFilterStruct )
+
 ! FUNCTION: CharLowerA
 ! FUNCTION: CharLowerBuffA
 ! FUNCTION: CharLowerBuffW
@@ -674,30 +1377,31 @@ FUNCTION: HDC BeginPaint ( HWND hwnd, LPPAINTSTRUCT lpPaint ) ;
 ! FUNCTION: CheckMenuItem
 ! FUNCTION: CheckMenuRadioItem
 ! FUNCTION: CheckRadioButton
-FUNCTION: HWND ChildWindowFromPoint ( HWND hWndParent, POINT point ) ;
+FUNCTION: HWND ChildWindowFromPoint ( HWND hWndParent, POINT point )
 ! FUNCTION: ChildWindowFromPointEx
 ! FUNCTION: ClientThreadSetup
-FUNCTION: BOOL ClientToScreen ( HWND hWnd, POINT* point ) ;
+FUNCTION: BOOL ClientToScreen ( HWND hWnd, POINT* point )
 ! FUNCTION: CliImmSetHotKey
-FUNCTION: int ClipCursor ( RECT* clipRect ) ;
-FUNCTION: BOOL CloseClipboard ( ) ;
+FUNCTION: int ClipCursor ( RECT* clipRect )
+FUNCTION: BOOL CloseClipboard ( )
 ! FUNCTION: CloseDesktop
 ! FUNCTION: CloseWindow
 ! FUNCTION: CloseWindowStation
 ! FUNCTION: CopyAcceleratorTableA
-FUNCTION: int CopyAcceleratorTableW ( HACCEL hAccelSrc, LPACCEL lpAccelDst, int cAccelEntries ) ;
+FUNCTION: int CopyAcceleratorTableW ( HACCEL hAccelSrc, LPACCEL lpAccelDst, int cAccelEntries )
 ALIAS: CopyAcceleratorTable CopyAcceleratorTableW
 ! FUNCTION: CopyIcon
 ! FUNCTION: CopyImage
 ! FUNCTION: CopyRect
 ! FUNCTION: CountClipboardFormats
 ! FUNCTION: CreateAcceleratorTableA
-FUNCTION: HACCEL CreateAcceleratorTableW ( LPACCEL lpaccl, int cEntries ) ;
+FUNCTION: HACCEL CreateAcceleratorTableW ( LPACCEL lpaccl, int cEntries )
 ALIAS: CreateAcceleratorTable CreateAcceleratorTableW
 ! FUNCTION: CreateCaret
 ! FUNCTION: CreateCursor
 ! FUNCTION: CreateDesktopA
-! FUNCTION: CreateDesktopW
+FUNCTION: HDESK CreateDesktopW ( LPCTSTR lpszDesktop, LPCTSTR lpszDevice, DEVMODE* pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa )
+ALIAS: CreateDesktop CreateDesktopW
 ! FUNCTION: CreateDialogIndirectParamA
 ! FUNCTION: CreateDialogIndirectParamAorW
 ! FUNCTION: CreateDialogIndirectParamW
@@ -725,7 +1429,7 @@ FUNCTION: HWND CreateWindowExW (
                 HWND hWndParent,
                 HMENU hMenu,
                 HINSTANCE hInstance,
-                LPVOID lpParam ) ;
+                LPVOID lpParam )
 
 ALIAS: CreateWindowEx CreateWindowExW
 
@@ -775,18 +1479,18 @@ ALIAS: CreateWindowEx CreateWindowExW
 ! FUNCTION: DefFrameProcW
 ! FUNCTION: DefMDIChildProcA
 ! FUNCTION: DefMDIChildProcW
-! FUNCTION: DefRawInputProc
-FUNCTION: LRESULT DefWindowProcW ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) ;
+FUNCTION: LRESULT DefRawInputProc ( PRAWINPUT* paRawInput, INT nInput, UINT cbSizeHeader )
+FUNCTION: LRESULT DefWindowProcW ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
 ALIAS: DefWindowProc DefWindowProcW
 ! FUNCTION: DeleteMenu
 ! FUNCTION: DeregisterShellHookWindow
-FUNCTION: BOOL DestroyAcceleratorTable ( HACCEL hAccel ) ;
+FUNCTION: BOOL DestroyAcceleratorTable ( HACCEL hAccel )
 ! FUNCTION: DestroyCaret
 ! FUNCTION: DestroyCursor
 ! FUNCTION: DestroyIcon
 ! FUNCTION: DestroyMenu
 ! FUNCTION: DestroyReasons
-FUNCTION: BOOL DestroyWindow ( HWND hWnd ) ;
+FUNCTION: BOOL DestroyWindow ( HWND hWnd )
 ! FUNCTION: DeviceEventWorker
 ! FUNCTION: DialogBoxIndirectParamA
 ! FUNCTION: DialogBoxIndirectParamAorW
@@ -795,7 +1499,7 @@ FUNCTION: BOOL DestroyWindow ( HWND hWnd ) ;
 ! FUNCTION: DialogBoxParamW
 ! FUNCTION: DisableProcessWindowsGhosting
 
-FUNCTION: LONG DispatchMessageW ( MSG* lpMsg ) ;
+FUNCTION: LONG DispatchMessageW ( MSG* lpMsg )
 ALIAS: DispatchMessage DispatchMessageW
 
 ! FUNCTION: DisplayExitWindowsWarnings
@@ -811,15 +1515,15 @@ ALIAS: DispatchMessage DispatchMessageW
 ! FUNCTION: DragObject
 
 
-FUNCTION: BOOL DrawAnimatedRects ( HWND hWnd, int idAni, RECT* lprcFrom, RECT* lprcTo ) ;
-! FUNCTION: BOOL DrawCaption ( HWND hWnd, HDC hdc, LPRECT lprc, UINT uFlags ) ;
+FUNCTION: BOOL DrawAnimatedRects ( HWND hWnd, int idAni, RECT* lprcFrom, RECT* lprcTo )
+! FUNCTION: BOOL DrawCaption ( HWND hWnd, HDC hdc, LPRECT lprc, UINT uFlags )
 
 ! FUNCTION: DrawEdge
 ! FUNCTION: DrawFocusRect
 ! FUNCTION: DrawFrame
 ! FUNCTION: DrawFrameControl
 
-FUNCTION: BOOL DrawIcon ( HDC hDC, int X, int Y, HICON hIcon ) ;
+FUNCTION: BOOL DrawIcon ( HDC hDC, int X, int Y, HICON hIcon )
 
 ! FUNCTION: DrawIconEx
 ! FUNCTION: DrawMenuBar
@@ -831,45 +1535,66 @@ FUNCTION: BOOL DrawIcon ( HDC hDC, int X, int Y, HICON hIcon ) ;
 ! FUNCTION: DrawTextExW
 ! FUNCTION: DrawTextW
 ! FUNCTION: EditWndProc
-FUNCTION: BOOL EmptyClipboard ( ) ;
-FUNCTION: BOOL EnableMenuItem ( HMENU hMenu, UINT uIDEnableItem, UINT uEnable ) ;
+FUNCTION: BOOL EmptyClipboard ( )
+FUNCTION: BOOL EnableMenuItem ( HMENU hMenu, UINT uIDEnableItem, UINT uEnable )
 ! FUNCTION: EnableScrollBar
 ! FUNCTION: EnableWindow
 ! FUNCTION: EndDeferWindowPos
 ! FUNCTION: EndDialog
 ! FUNCTION: EndMenu
 
-FUNCTION: BOOL EndPaint ( HWND hWnd, PAINTSTRUCT* lpPaint) ;
+FUNCTION: BOOL EndPaint ( HWND hWnd, PAINTSTRUCT* lpPaint )
 
 ! FUNCTION: EndTask
 ! FUNCTION: EnterReaderModeHelper
 ! FUNCTION: EnumChildWindows
-FUNCTION: UINT EnumClipboardFormats ( UINT format ) ;
+FUNCTION: UINT EnumClipboardFormats ( UINT format )
 ! FUNCTION: EnumDesktopsA
-! FUNCTION: EnumDesktopsW
-! FUNCTION: EnumDesktopWindows
+
+FUNCTION: BOOL EnumDesktopsW (
+    HWINSTA          hwinsta,
+    DESKTOPENUMPROCW lpEnumFunc,
+    LPARAM           lParam
+)
+
+FUNCTION: BOOL EnumDesktopWindows ( HDESK hDesktop, WNDENUMPROC lpFn, LPARAM lParam )
 ! FUNCTION: EnumDisplayDevicesA
-! FUNCTION: EnumDisplayDevicesW
-! FUNCTION: EnumDisplayMonitors
+FUNCTION: BOOL EnumDisplayDevicesW (
+    LPCWSTR          lpDevice,
+    DWORD            iDevNum,
+    PDISPLAY_DEVICEW lpDisplayDevice,
+    DWORD            dwFlags
+)
+CALLBACK: BOOL MONITORENUMPROC ( HMONITOR arg1, HDC arg2, LPRECT arg3, LPARAM arg4 )
+FUNCTION: BOOL EnumDisplayMonitors ( HDC hdc, LPRECT lprcClip, MONITORENUMPROC lpfnEnum, LPARAM dwData )
 ! FUNCTION: EnumDisplaySettingsA
 ! FUNCTION: EnumDisplaySettingsExA
-! FUNCTION: EnumDisplaySettingsExW
-! FUNCTION: EnumDisplaySettingsW
+FUNCTION: BOOL EnumDisplaySettingsExW ( LPCWSTR  lpszDeviceName,
+  DWORD    iModeNum,
+  DEVMODEW *lpDevMode,
+  DWORD    dwFlags
+)
+
+FUNCTION: BOOL EnumDisplaySettingsW ( LPCTSTR lpszDeviceName, DWORD iModeNum, DEVMODE *lpDevMode )
+ALIAS: EnumDisplaySettings EnumDisplaySettingsW
 ! FUNCTION: EnumPropsA
 ! FUNCTION: EnumPropsExA
 ! FUNCTION: EnumPropsExW
 ! FUNCTION: EnumPropsW
 ! FUNCTION: EnumThreadWindows
-! FUNCTION: EnumWindows
+FUNCTION: BOOL EnumWindows ( WNDENUMPROC lpEnumFunc, LPARAM lParam )
 ! FUNCTION: EnumWindowStationsA
 ! FUNCTION: EnumWindowStationsW
 ! FUNCTION: EqualRect
 ! FUNCTION: ExcludeUpdateRgn
 ! FUNCTION: ExitWindowsEx
-FUNCTION: int FillRect ( HDC hDC, RECT* lprc, HBRUSH hbr ) ;
-FUNCTION: HWND FindWindowA ( char* lpClassName, char* lpWindowName ) ;
-FUNCTION: HWND FindWindowExA ( HWND hwndParent, HWND childAfter, char* lpClassName, char* lpWindowName ) ;
-! FUNCTION: FindWindowExW
+FUNCTION: int FillRect ( HDC hDC, RECT* lprc, HBRUSH hbr )
+FUNCTION: HWND FindWindowA ( c-string lpClassName, c-string lpWindowName )
+FUNCTION: HWND FindWindowW ( c-string lpClassName, c-string lpWindowName )
+ALIAS: FindWindow FindWindowW
+FUNCTION: HWND FindWindowExA ( HWND hwndParent, HWND childAfter, c-string lpClassName, c-string lpWindowName )
+FUNCTION: HWND FindWindowExW ( HWND hwndParent, HWND hwndChildAfter, c-string lpszClass, c-string lpszWindow )
+ALIAS: FindWindowEx FindWindowExW
 ! FUNCTION: FindWindowW
 ! FUNCTION: FlashWindow
 ! FUNCTION: FlashWindowEx
@@ -883,16 +1608,16 @@ FUNCTION: HWND FindWindowExA ( HWND hwndParent, HWND childAfter, char* lpClassNa
 ! FUNCTION: GetAppCompatFlags
 ! FUNCTION: GetAppCompatFlags2
 ! FUNCTION: GetAsyncKeyState
-FUNCTION: HWND GetCapture ( ) ;
+FUNCTION: HWND GetCapture ( )
 ! FUNCTION: GetCaretBlinkTime
 ! FUNCTION: GetCaretPos
-FUNCTION: BOOL GetClassInfoW ( HINSTANCE hInst, LPCWSTR lpszClass, LPWNDCLASS lpwcx ) ;
+FUNCTION: BOOL GetClassInfoW ( HINSTANCE hInst, LPCWSTR lpszClass, LPWNDCLASS lpwcx )
 ALIAS: GetClassInfo GetClassInfoW
 
-FUNCTION: BOOL GetClassInfoExW ( HINSTANCE hInst, LPCWSTR lpszClass, LPWNDCLASSEX lpwcx ) ;
+FUNCTION: BOOL GetClassInfoExW ( HINSTANCE hInst, LPCWSTR lpszClass, LPWNDCLASSEX lpwcx )
 ALIAS: GetClassInfoEx GetClassInfoExW
 
-FUNCTION: ULONG_PTR GetClassLongW ( HWND hWnd, int nIndex ) ;
+FUNCTION: ULONG_PTR GetClassLongW ( HWND hWnd, int nIndex )
 ALIAS: GetClassLong GetClassLongW
 ALIAS: GetClassLongPtr GetClassLongW
 
@@ -900,33 +1625,34 @@ ALIAS: GetClassLongPtr GetClassLongW
 ! FUNCTION: GetClassNameA
 ! FUNCTION: GetClassNameW
 ! FUNCTION: GetClassWord
-FUNCTION: BOOL GetClientRect ( HWND hWnd, LPRECT lpRect ) ;
+FUNCTION: BOOL GetClientRect ( HWND hWnd, LPRECT lpRect )
 
-FUNCTION: HANDLE GetClipboardData ( UINT uFormat ) ;
+FUNCTION: HANDLE GetClipboardData ( UINT uFormat )
 
 ! FUNCTION: GetClipboardFormatNameA
 ! FUNCTION: GetClipboardFormatNameW
-FUNCTION: HWND GetClipboardOwner ( ) ;
-FUNCTION: DWORD GetClipboardSequenceNumber ( ) ;
+FUNCTION: HWND GetClipboardOwner ( )
+FUNCTION: DWORD GetClipboardSequenceNumber ( )
 ! FUNCTION: GetClipboardViewer
 ! FUNCTION: GetClipCursor
 ! FUNCTION: GetComboBoxInfo
 ! FUNCTION: GetCursor
 ! FUNCTION: GetCursorFrameInfo
 ! FUNCTION: GetCursorInfo
-! FUNCTION: GetCursorPos
-FUNCTION: HDC GetDC ( HWND hWnd ) ;
-FUNCTION: HDC GetDCEx ( HWND hWnd, HRGN hrgnClip, DWORD flags ) ;
-! FUNCTION: GetDesktopWindow
+FUNCTION: BOOL GetCursorPos ( LPPOINT lpPoint )
+FUNCTION: HDC GetDC ( HWND hWnd )
+FUNCTION: HDC GetDCEx ( HWND hWnd, HRGN hrgnClip, DWORD flags )
+FUNCTION: HWND GetDesktopWindow ( )
 ! FUNCTION: GetDialogBaseUnits
 ! FUNCTION: GetDlgCtrlID
-! FUNCTION: GetDlgItem
+FUNCTION: HWND GetDlgItem ( HWND hDlg, int nIDDlgItem )
 ! FUNCTION: GetDlgItemInt
 ! FUNCTION: GetDlgItemTextA
-! FUNCTION: GetDlgItemTextW
-FUNCTION: uint GetDoubleClickTime ( ) ;
-FUNCTION: HWND GetFocus ( ) ;
-! FUNCTION: GetForegroundWindow
+FUNCTION: UINT GetDlgItemTextW ( HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMaxCount )
+ALIAS: GetDlgItemText GetDlgItemTextW
+FUNCTION: uint GetDoubleClickTime ( )
+FUNCTION: HWND GetFocus ( )
+FUNCTION: HWND GetForegroundWindow ( )
 ! FUNCTION: GetGuiResources
 ! FUNCTION: GetGUIThreadInfo
 ! FUNCTION: GetIconInfo
@@ -934,15 +1660,15 @@ FUNCTION: HWND GetFocus ( ) ;
 ! FUNCTION: GetInputState
 ! FUNCTION: GetInternalWindowPos
 ! FUNCTION: GetKBCodePage
-! FUNCTION: GetKeyboardLayout
+FUNCTION: HKL GetKeyboardLayout ( DWORD idThread )
 ! FUNCTION: GetKeyboardLayoutList
 ! FUNCTION: GetKeyboardLayoutNameA
 ! FUNCTION: GetKeyboardLayoutNameW
-! FUNCTION: GetKeyboardState
-! FUNCTION: GetKeyboardType
+FUNCTION: BOOL GetKeyboardState ( BYTE *lpKeyState )
+FUNCTION: int GetKeyboardType ( int nTypeFlag )
 ! FUNCTION: GetKeyNameTextA
 ! FUNCTION: GetKeyNameTextW
-FUNCTION: SHORT GetKeyState ( int nVirtKey ) ;
+FUNCTION: SHORT GetKeyState ( int nVirtKey )
 ! FUNCTION: GetLastActivePopup
 ! FUNCTION: GetLastInputInfo
 ! FUNCTION: GetLayeredWindowAttributes
@@ -962,81 +1688,86 @@ FUNCTION: SHORT GetKeyState ( int nVirtKey ) ;
 ! FUNCTION: GetMenuStringA
 ! FUNCTION: GetMenuStringW
 
-FUNCTION: BOOL GetMessageW ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ) ;
+FUNCTION: BOOL GetMessageW ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax )
 ALIAS: GetMessage GetMessageW
 
-! FUNCTION: GetMessageExtraInfo
+FUNCTION: LPARAM GetMessageExtraInfo ( )
 ! FUNCTION: GetMessagePos
 ! FUNCTION: GetMessageTime
-! FUNCTION: GetMonitorInfoA
-
-FUNCTION: BOOL GetMonitorInfoW ( HMONITOR hMonitor, LPMONITORINFO lpmi ) ;
+! FUNCTION: BOOL GetMonitorInfoA ( HMONITOR hMonitor, LPMONITORINFO lpmi )
+FUNCTION: BOOL GetMonitorInfoW ( HMONITOR hMonitor, LPMONITORINFO lpmi )
 ALIAS: GetMonitorInfo GetMonitorInfoW
 
 ! FUNCTION: GetMouseMovePointsEx
 ! FUNCTION: GetNextDlgGroupItem
 ! FUNCTION: GetNextDlgTabItem
 ! FUNCTION: GetOpenClipboardWindow
-FUNCTION: HWND GetParent ( HWND hWnd ) ;
-FUNCTION: int GetPriorityClipboardFormat ( UINT* paFormatPriorityList, int cFormats ) ;
+FUNCTION: HWND GetParent ( HWND hWnd )
+FUNCTION: int GetPriorityClipboardFormat ( UINT* paFormatPriorityList, int cFormats )
 ! FUNCTION: GetProcessDefaultLayout
-! FUNCTION: GetProcessWindowStation
+FUNCTION: HWINSTA GetProcessWindowStation ( )
 ! FUNCTION: GetProgmanWindow
 ! FUNCTION: GetPropA
 ! FUNCTION: GetPropW
 ! FUNCTION: GetQueueStatus
-! FUNCTION: GetRawInputBuffer
-! FUNCTION: GetRawInputData
-! FUNCTION: GetRawInputDeviceInfoA
-! FUNCTION: GetRawInputDeviceInfoW
-! FUNCTION: GetRawInputDeviceList
+FUNCTION: UINT GetRawInputBuffer ( PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader )
+FUNCTION: UINT GetRawInputData ( HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader )
+FUNCTION: UINT GetRawInputDeviceInfoA ( HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize )
+FUNCTION: UINT GetRawInputDeviceInfoW ( HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize )
+ALIAS: GetRawInputDeviceInfo GetRawInputDeviceInfoW
+FUNCTION: UINT GetRawInputDeviceList ( PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize )
+FUNCTION: UINT GetRegisteredRawInputDevices ( PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize )
 ! FUNCTION: GetReasonTitleFromReasonCode
-! FUNCTION: GetRegisteredRawInputDevices
 ! FUNCTION: GetScrollBarInfo
 ! FUNCTION: GetScrollInfo
 ! FUNCTION: GetScrollPos
 ! FUNCTION: GetScrollRange
 ! FUNCTION: GetShellWindow
 ! FUNCTION: GetSubMenu
-! FUNCTION: GetSysColor
-FUNCTION: HBRUSH GetSysColorBrush ( int nIndex ) ;
-FUNCTION: HMENU GetSystemMenu ( HWND hWnd, BOOL bRevert ) ;
+FUNCTION: COLORREF GetSysColor ( int nIndex )
+FUNCTION: HBRUSH GetSysColorBrush ( int nIndex )
+FUNCTION: HMENU GetSystemMenu ( HWND hWnd, BOOL bRevert )
 ! FUNCTION: GetSystemMetrics
 ! FUNCTION: GetTabbedTextExtentA
 ! FUNCTION: GetTabbedTextExtentW
 ! FUNCTION: GetTaskmanWindow
-! FUNCTION: GetThreadDesktop
+FUNCTION: HDESK GetThreadDesktop ( DWORD dwThreadId )
 ! FUNCTION: GetTitleBarInfo
 
 
-FUNCTION: HWND GetTopWindow ( HWND hWnd ) ;
-! FUNCTION: BOOL GetUpdateRect ( HWND hWnd, LPRECT lpRect, BOOL bErase ) ;
-FUNCTION: int GetUpdateRgn ( HWND hWnd, HRGN hRgn, BOOL bErase ) ;
+FUNCTION: HWND GetTopWindow ( HWND hWnd )
+! FUNCTION: BOOL GetUpdateRect ( HWND hWnd, LPRECT lpRect, BOOL bErase )
+FUNCTION: int GetUpdateRgn ( HWND hWnd, HRGN hRgn, BOOL bErase )
 
 
 ! FUNCTION: GetUserObjectInformationA
 ! FUNCTION: GetUserObjectInformationW
 ! FUNCTION: GetUserObjectSecurity
-FUNCTION: HWND GetWindow ( HWND hWnd, UINT uCmd ) ;
+FUNCTION: HWND GetWindow ( HWND hWnd, UINT uCmd )
 ! FUNCTION: GetWindowContextHelpId
 ! FUNCTION: GetWindowDC
 ! FUNCTION: GetWindowInfo
 ! FUNCTION: GetWindowLongA
 ! FUNCTION: GetWindowLongW
-FUNCTION: LONG_PTR GetWindowLongW ( HANDLE hWnd, int index ) ;
+FUNCTION: LONG_PTR GetWindowLongW ( HANDLE hWnd, int index )
 ALIAS: GetWindowLong GetWindowLongW
+
+FUNCTION: LONG_PTR GetWindowLongPtrW ( HWND hWnd, int nIndex )
+ALIAS: GetWindowLongPtr GetWindowLongPtrW
 ! FUNCTION: GetWindowModuleFileName
 ! FUNCTION: GetWindowModuleFileNameA
 ! FUNCTION: GetWindowModuleFileNameW
 ! FUNCTION: GetWindowPlacement
-FUNCTION: BOOL GetWindowRect ( HWND hWnd, LPRECT lpRect ) ;
+FUNCTION: BOOL GetWindowRect ( HWND hWnd, LPRECT lpRect )
 ! FUNCTION: GetWindowRgn
 ! FUNCTION: GetWindowRgnBox
-FUNCTION: int GetWindowTextA ( HWND hWnd, char* lpString, int nMaxCount ) ;
+! FUNCTION: int GetWindowTextA ( HWND hWnd, char* lpString, int nMaxCount )
+FUNCTION: int GetWindowTextW ( HWND hWnd, LPTSTR lpString, int nMaxCount )
+ALIAS: GetWindowText GetWindowTextW
 ! FUNCTION: GetWindowTextLengthA
 ! FUNCTION: GetWindowTextLengthW
 ! FUNCTION: GetWindowTextW
-FUNCTION: DWORD GetWindowThreadProcessId ( HWND hWnd, void* lpdwProcessId ) ;
+FUNCTION: DWORD GetWindowThreadProcessId ( HWND hWnd, void* lpdwProcessId )
 ! FUNCTION: GetWindowWord
 ! FUNCTION: GetWinStationInfo
 ! FUNCTION: GrayStringA
@@ -1072,46 +1803,45 @@ FUNCTION: DWORD GetWindowThreadProcessId ( HWND hWnd, void* lpdwProcessId ) ;
 ! FUNCTION: IsCharLowerW
 ! FUNCTION: IsCharUpperA
 ! FUNCTION: IsCharUpperW
-FUNCTION: BOOL IsChild ( HWND hWndParent, HWND hWnd ) ;
-FUNCTION: BOOL IsClipboardFormatAvailable ( UINT format ) ;
+FUNCTION: BOOL IsChild ( HWND hWndParent, HWND hWnd )
+FUNCTION: BOOL IsClipboardFormatAvailable ( UINT format )
 ! FUNCTION: IsDialogMessage
 ! FUNCTION: IsDialogMessageA
 ! FUNCTION: IsDialogMessageW
 ! FUNCTION: IsDlgButtonChecked
-FUNCTION: BOOL IsGUIThread ( BOOL bConvert ) ;
-FUNCTION: BOOL IsHungAppWindow ( HWND hWnd ) ;
-FUNCTION: BOOL IsIconic ( HWND hWnd ) ;
-FUNCTION: BOOL IsMenu ( HMENU hMenu ) ;
+FUNCTION: BOOL IsGUIThread ( BOOL bConvert )
+FUNCTION: BOOL IsHungAppWindow ( HWND hWnd )
+FUNCTION: BOOL IsIconic ( HWND hWnd )
+FUNCTION: BOOL IsMenu ( HMENU hMenu )
 ! FUNCTION: BOOL IsRectEmpty
 ! FUNCTION: BOOL IsServerSideWindow
-FUNCTION: BOOL IsWindow ( HWND hWnd ) ;
+FUNCTION: BOOL IsWindow ( HWND hWnd )
 ! FUNCTION: BOOL IsWindowEnabled
 ! FUNCTION: BOOL IsWindowInDestroy
-FUNCTION: BOOL IsWindowUnicode ( HWND hWnd ) ;
-FUNCTION: BOOL IsWindowVisible ( HWND hWnd ) ;
+FUNCTION: BOOL IsWindowUnicode ( HWND hWnd )
+FUNCTION: BOOL IsWindowVisible ( HWND hWnd )
 ! FUNCTION: BOOL IsWinEventHookInstalled
-FUNCTION: BOOL IsZoomed ( HWND hWnd ) ;
+FUNCTION: BOOL IsZoomed ( HWND hWnd )
 ! FUNCTION: keybd_event
 ! FUNCTION: KillSystemTimer
 ! FUNCTION: KillTimer
 ! FUNCTION: LoadAcceleratorsA
-FUNCTION: HACCEL LoadAcceleratorsW ( HINSTANCE hInstance, LPCTSTR lpTableName ) ;
+FUNCTION: HACCEL LoadAcceleratorsW ( HINSTANCE hInstance, LPCTSTR lpTableName )
 ! FUNCTION: LoadBitmapA
 ! FUNCTION: LoadBitmapW
 ! FUNCTION: LoadCursorFromFileA
 ! FUNCTION: LoadCursorFromFileW
 
 
-! FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, LPCWSTR lpCursorName ) ;
-FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, ushort lpCursorName ) ;
+FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, LPCWSTR lpCursorName )
 ALIAS: LoadCursor LoadCursorW
 
-! FUNCTION: HICON LoadIconA ( HINSTANCE hInstance, LPCTSTR lpIconName ) ;
-FUNCTION: HICON LoadIconW ( HINSTANCE hInstance, LPCTSTR lpIconName ) ;
+FUNCTION: HICON LoadIconW ( HINSTANCE hInstance, LPCWSTR lpIconName )
 ALIAS: LoadIcon LoadIconW
 
 ! FUNCTION: LoadImageA
-! FUNCTION: LoadImageW
+FUNCTION: HANDLE LoadImageW ( HINSTANCE hinst, LPCWSTR lpszName, UINT uType, int cxDesired, int cyDesired, UINT fuLoad )
+ALIAS: LoadImage LoadImageW
 ! FUNCTION: LoadKeyboardLayoutA
 ! FUNCTION: LoadKeyboardLayoutEx
 ! FUNCTION: LoadKeyboardLayoutW
@@ -1131,13 +1861,13 @@ ALIAS: LoadIcon LoadIconW
 ! FUNCTION: LookupIconIdFromDirectoryEx
 ! FUNCTION: MapDialogRect
 
-FUNCTION: UINT MapVirtualKeyW ( UINT uCode, UINT uMapType ) ;
+FUNCTION: UINT MapVirtualKeyW ( UINT uCode, UINT uMapType )
 ALIAS: MapVirtualKey MapVirtualKeyW
 
-FUNCTION: UINT MapVirtualKeyExW ( UINT uCode, UINT uMapType, HKL dwhkl ) ;
+FUNCTION: UINT MapVirtualKeyExW ( UINT uCode, UINT uMapType, HKL dwhkl )
 ALIAS: MapVirtualKeyEx MapVirtualKeyExW
 
-! FUNCTION: MapWindowPoints
+FUNCTION: int MapWindowPoints ( HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints )
 ! FUNCTION: MB_GetString
 ! FUNCTION: MBToWCSEx
 ! FUNCTION: MenuItemFromPoint
@@ -1145,36 +1875,35 @@ ALIAS: MapVirtualKeyEx MapVirtualKeyExW
 ! FUNCTION: MenuWindowProcW
 
 ! -1 is Simple beep
-FUNCTION: BOOL MessageBeep ( UINT uType ) ;
+FUNCTION: BOOL MessageBeep ( UINT uType )
 
-FUNCTION: int MessageBoxA ( 
+FUNCTION: int MessageBoxA (
                 HWND hWnd,
                 LPCSTR lpText,
                 LPCSTR lpCaption,
-                UINT uType ) ;
+                UINT uType )
 
 FUNCTION: int MessageBoxW (
                 HWND hWnd,
                 LPCWSTR lpText,
                 LPCWSTR lpCaption,
-                UINT uType) ;
+                UINT uType )
 
 FUNCTION: int MessageBoxExA ( HWND hWnd,
                 LPCSTR lpText,
                 LPCSTR lpCaption,
                 UINT uType,
-                WORD wLanguageId
-                ) ;
+                WORD wLanguageId )
 
 FUNCTION: int MessageBoxExW (
                 HWND hWnd,
                 LPCWSTR lpText,
                 LPCWSTR lpCaption,
                 UINT uType,
-                WORD wLanguageId ) ;
+                WORD wLanguageId )
 
-! FUNCTION: int MessageBoxIndirectA ( MSGBOXPARAMSA* params ) ;
-! FUNCTION: int MessageBoxIndirectW ( MSGBOXPARAMSW* params ) ;
+! FUNCTION: int MessageBoxIndirectA ( MSGBOXPARAMSA* params )
+! FUNCTION: int MessageBoxIndirectW ( MSGBOXPARAMSW* params )
 
 
 ALIAS: MessageBox MessageBoxW
@@ -1189,9 +1918,9 @@ ALIAS: MessageBoxEx MessageBoxExW
 
 ! FUNCTION: ModifyMenuA
 ! FUNCTION: ModifyMenuW
-! FUNCTION: MonitorFromPoint
+FUNCTION: HMONITOR MonitorFromPoint ( POINT pt, DWORD dwFlags )
 ! FUNCTION: MonitorFromRect
-FUNCTION: HMONITOR MonitorFromWindow ( HWND hWnd, DWORD dwFlags ) ;
+FUNCTION: HMONITOR MonitorFromWindow ( HWND hWnd, DWORD dwFlags )
 ! FUNCTION: mouse_event
 
 
@@ -1201,7 +1930,7 @@ FUNCTION: BOOL MoveWindow (
     int Y,
     int nWidth,
     int nHeight,
-    BOOL bRepaint ) ;
+    BOOL bRepaint )
 
 ! FUNCTION: MsgWaitForMultipleObjects
 ! FUNCTION: MsgWaitForMultipleObjectsEx
@@ -1212,23 +1941,24 @@ FUNCTION: BOOL MoveWindow (
 ! FUNCTION: OemToCharBuffW
 ! FUNCTION: OemToCharW
 ! FUNCTION: OffsetRect
-FUNCTION: BOOL OpenClipboard ( HWND hWndNewOwner ) ;
+FUNCTION: BOOL OpenClipboard ( HWND hWndNewOwner )
 ! FUNCTION: OpenDesktopA
-! FUNCTION: OpenDesktopW
+FUNCTION: HDESK OpenDesktopW ( LPTSTR lpsazDesktop, DWORD dwFlags, BOOL fInherit, ACCESS_MASK dwDesiredAccess )
+ALIAS: OpenDesktop OpenDesktopW
 ! FUNCTION: OpenIcon
-! FUNCTION: OpenInputDesktop
+FUNCTION: HDESK OpenInputDesktop ( DWORD dwFlags, BOOL fInherit, ACCESS_MASK dwDesiredAccess )
 ! FUNCTION: OpenWindowStationA
 ! FUNCTION: OpenWindowStationW
 ! FUNCTION: PackDDElParam
 ! FUNCTION: PaintDesktop
 ! FUNCTION: PaintMenuBar
-FUNCTION: BOOL PeekMessageA ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg ) ;
-FUNCTION: BOOL PeekMessageW ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg ) ;
+FUNCTION: BOOL PeekMessageA ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg )
+FUNCTION: BOOL PeekMessageW ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg )
 ALIAS: PeekMessage PeekMessageW
 
 ! FUNCTION: PostMessageA
 ! FUNCTION: PostMessageW
-FUNCTION: void PostQuitMessage ( int nExitCode ) ;
+FUNCTION: void PostQuitMessage ( int nExitCode )
 ! FUNCTION: PostThreadMessageA
 ! FUNCTION: PostThreadMessageW
 ! FUNCTION: PrintWindow
@@ -1250,23 +1980,23 @@ FUNCTION: void PostQuitMessage ( int nExitCode ) ;
 ! FUNCTION: RecordShutdownReason
 ! FUNCTION: RedrawWindow
 
-FUNCTION: ATOM RegisterClassA ( WNDCLASS* lpWndClass ) ;
-FUNCTION: ATOM RegisterClassW ( WNDCLASS* lpWndClass ) ;
-FUNCTION: ATOM RegisterClassExA ( WNDCLASSEX* lpwcx ) ;
-FUNCTION: ATOM RegisterClassExW ( WNDCLASSEX* lpwcx ) ;
+FUNCTION: ATOM RegisterClassA ( WNDCLASS* lpWndClass )
+FUNCTION: ATOM RegisterClassW ( WNDCLASS* lpWndClass )
+FUNCTION: ATOM RegisterClassExA ( WNDCLASSEX* lpwcx )
+FUNCTION: ATOM RegisterClassExW ( WNDCLASSEX* lpwcx )
 
 ALIAS: RegisterClass RegisterClassW
 ALIAS: RegisterClassEx RegisterClassExW
 
 ! FUNCTION: RegisterClipboardFormatA
 ! FUNCTION: RegisterClipboardFormatW
-FUNCTION: HANDLE RegisterDeviceNotificationA ( HANDLE hRecipient, LPVOID NotificationFilter, DWORD Flags ) ;
-FUNCTION: HANDLE RegisterDeviceNotificationW ( HANDLE hRecipient, LPVOID NotificationFilter, DWORD Flags ) ;
+FUNCTION: HANDLE RegisterDeviceNotificationA ( HANDLE hRecipient, LPVOID NotificationFilter, DWORD Flags )
+FUNCTION: HANDLE RegisterDeviceNotificationW ( HANDLE hRecipient, LPVOID NotificationFilter, DWORD Flags )
 ALIAS: RegisterDeviceNotification RegisterDeviceNotificationW
 ! FUNCTION: RegisterHotKey
 ! FUNCTION: RegisterLogonProcess
 ! FUNCTION: RegisterMessagePumpHook
-! FUNCTION: RegisterRawInputDevices
+FUNCTION: BOOL RegisterRawInputDevices ( PCRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize )
 ! FUNCTION: RegisterServicesProcess
 ! FUNCTION: RegisterShellHookWindow
 ! FUNCTION: RegisterSystemThread
@@ -1274,15 +2004,15 @@ ALIAS: RegisterDeviceNotification RegisterDeviceNotificationW
 ! FUNCTION: RegisterUserApiHook
 ! FUNCTION: RegisterWindowMessageA
 ! FUNCTION: RegisterWindowMessageW
-FUNCTION: BOOL ReleaseCapture ( ) ;
-FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC ) ;
+FUNCTION: BOOL ReleaseCapture ( )
+FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC )
 ! FUNCTION: RemoveMenu
 ! FUNCTION: RemovePropA
 ! FUNCTION: RemovePropW
 ! FUNCTION: ReplyMessage
 ! FUNCTION: ResolveDesktopForWOW
 ! FUNCTION: ReuseDDElParam
-! FUNCTION: ScreenToClient
+FUNCTION: BOOL ScreenToClient ( HWND hWnd, LPPOINT lpPoint )
 ! FUNCTION: ScrollChildren
 ! FUNCTION: ScrollDC
 ! FUNCTION: ScrollWindow
@@ -1291,8 +2021,8 @@ FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC ) ;
 ! FUNCTION: SendDlgItemMessageW
 ! FUNCTION: SendIMEMessageExA
 ! FUNCTION: SendIMEMessageExW
-! FUNCTION: UINT SendInput ( UINT nInputs, LPINPUT pInputs, int cbSize ) ;
-FUNCTION: LRESULT SendMessageW ( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) ;
+FUNCTION: UINT SendInput ( UINT nInputs, LPINPUT pInputs, int cbSize )
+FUNCTION: LRESULT SendMessageW ( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
 ALIAS: SendMessage SendMessageW
 ! FUNCTION: SendMessageCallbackA
 ! FUNCTION: SendMessageCallbackW
@@ -1301,16 +2031,16 @@ ALIAS: SendMessage SendMessageW
 ! FUNCTION: SendNotifyMessageA
 ! FUNCTION: SendNotifyMessageW
 ! FUNCTION: SetActiveWindow
-FUNCTION: HWND SetCapture ( HWND hWnd ) ;
+FUNCTION: HWND SetCapture ( HWND hWnd )
 ! FUNCTION: SetCaretBlinkTime
 ! FUNCTION: SetCaretPos
 
-FUNCTION: ULONG_PTR SetClassLongW ( HWND hWnd, int nIndex, LONG_PTR dwNewLong ) ;
+FUNCTION: ULONG_PTR SetClassLongW ( HWND hWnd, int nIndex, LONG_PTR dwNewLong )
 ALIAS: SetClassLongPtr SetClassLongW
 ALIAS: SetClassLong SetClassLongW
 
 ! FUNCTION: SetClassWord
-FUNCTION: HANDLE SetClipboardData ( UINT uFormat, HANDLE hMem ) ;
+FUNCTION: HANDLE SetClipboardData ( UINT uFormat, HANDLE hMem )
 ! FUNCTION: SetClipboardViewer
 ! FUNCTION: SetConsoleReserveKeys
 ! FUNCTION: SetCursor
@@ -1322,12 +2052,12 @@ FUNCTION: HANDLE SetClipboardData ( UINT uFormat, HANDLE hMem ) ;
 ! FUNCTION: SetDlgItemTextA
 ! FUNCTION: SetDlgItemTextW
 ! FUNCTION: SetDoubleClickTime
-FUNCTION: HWND SetFocus ( HWND hWnd ) ;
-FUNCTION: BOOL SetForegroundWindow ( HWND hWnd ) ;
+FUNCTION: HWND SetFocus ( HWND hWnd )
+FUNCTION: BOOL SetForegroundWindow ( HWND hWnd )
 ! FUNCTION: SetInternalWindowPos
 ! FUNCTION: SetKeyboardState
 ! type is ignored
-FUNCTION: void SetLastErrorEx ( DWORD dwErrCode, DWORD dwType ) ; 
+FUNCTION: void SetLastErrorEx ( DWORD dwErrCode, DWORD dwType )
 : SetLastError ( errcode -- ) 0 SetLastErrorEx ; inline
 ! FUNCTION: SetLayeredWindowAttributes
 ! FUNCTION: SetLogonNotifyWindow
@@ -1367,20 +2097,27 @@ FUNCTION: void SetLastErrorEx ( DWORD dwErrCode, DWORD dwType ) ;
 ! FUNCTION: SetWindowContextHelpId
 ! FUNCTION: SetWindowLongA
 ! FUNCTION: SetWindowLongW
-FUNCTION: LONG_PTR SetWindowLongW ( HANDLE hWnd, int index, LONG_PTR dwNewLong ) ;
+FUNCTION: LONG_PTR SetWindowLongW ( HANDLE hWnd, int index, LONG_PTR dwNewLong )
 ALIAS: SetWindowLong SetWindowLongW
 ! FUNCTION: SetWindowPlacement
-FUNCTION: BOOL SetWindowPos ( HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags ) ;
+FUNCTION: BOOL SetWindowPos ( HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags )
+
+FUNCTION: LONG_PTR SetWindowLongPtrW ( HWND hWnd, int nIndex, LONG_PTR dwNewLong )
+ALIAS: SetWindowLongPtr SetWindowLongPtrW
 
 : HWND_BOTTOM ( -- alien ) 1 <alien> ;
+: HWND_MESSAGE ( -- alien ) -3 <alien> ;
 : HWND_NOTOPMOST ( -- alien ) -2 <alien> ;
 CONSTANT: HWND_TOP f
 : HWND_TOPMOST ( -- alien ) -1 <alien> ;
+: HWND_DESKTOP ( -- alien ) 0 <alien> ;
+: HWND_BROADCAST ( -- alien ) 65535 <alien> ;
 
 ! FUNCTION: SetWindowRgn
 ! FUNCTION: SetWindowsHookA
 ! FUNCTION: SetWindowsHookExA
-! FUNCTION: SetWindowsHookExW
+FUNCTION: HHOOK SetWindowsHookExW ( int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId )
+ALIAS: SetWindowsHookEx SetWindowsHookExW
 ! FUNCTION: SetWindowsHookW
 ! FUNCTION: SetWindowStationUser
 ! FUNCTION: SetWindowTextA
@@ -1388,12 +2125,12 @@ CONSTANT: HWND_TOP f
 ! FUNCTION: SetWindowWord
 ! FUNCTION: SetWinEventHook
 ! FUNCTION: ShowCaret
-FUNCTION: int ShowCursor ( BOOL show ) ;
+FUNCTION: int ShowCursor ( BOOL show )
 ! FUNCTION: ShowOwnedPopups
 ! FUNCTION: ShowScrollBar
 ! FUNCTION: ShowStartGlass
 
-FUNCTION: BOOL ShowWindow ( HWND hWnd, int nCmdShow ) ;
+FUNCTION: BOOL ShowWindow ( HWND hWnd, int nCmdShow )
 
 ! FUNCTION: ShowWindowAsync
 ! FUNCTION: SoftModalMessageBox
@@ -1402,43 +2139,46 @@ FUNCTION: BOOL ShowWindow ( HWND hWnd, int nCmdShow ) ;
 ! FUNCTION: SwitchDesktop
 ! FUNCTION: SwitchToThisWindow
 ! FUNCTION: SystemParametersInfoA
-! FUNCTION: SystemParametersInfoW
+
+FUNCTION: BOOL SystemParametersInfoW ( UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni )
+ALIAS: SystemParametersInfo SystemParametersInfoW
+
 ! FUNCTION: TabbedTextOutA
 ! FUNCTION: TabbedTextOutW
 ! FUNCTION: TileChildWindows
 ! FUNCTION: TileWindows
 ! FUNCTION: ToAscii
 ! FUNCTION: ToAsciiEx
-! FUNCTION: ToUnicode
+FUNCTION: int ToUnicode ( UINT wVirtKey, UINT wScanCode, BYTE *lpKeyState, LPWSTR pwszBuff, int cchBuff, UINT wFlags )
 ! FUNCTION: ToUnicodeEx
-FUNCTION: BOOL TrackMouseEvent ( LPTRACKMOUSEEVENT lpEventTrack ) ;
+FUNCTION: BOOL TrackMouseEvent ( LPTRACKMOUSEEVENT lpEventTrack )
 ! FUNCTION: TrackPopupMenu
 ! FUNCTION: TrackPopupMenuEx
 ! FUNCTION: TranslateAccelerator
 ! FUNCTION: TranslateAcceleratorA
-FUNCTION: int TranslateAcceleratorW ( HWND hWnd, HACCEL hAccTable, LPMSG lpMsg ) ;
+FUNCTION: int TranslateAcceleratorW ( HWND hWnd, HACCEL hAccTable, LPMSG lpMsg )
 ALIAS: TranslateAccelerator TranslateAcceleratorW
 
 ! FUNCTION: TranslateMDISysAccel
-FUNCTION: BOOL TranslateMessage ( MSG* lpMsg ) ;
+FUNCTION: BOOL TranslateMessage ( MSG* lpMsg )
 
 ! FUNCTION: UnhookWindowsHook
-! FUNCTION: UnhookWindowsHookEx
+FUNCTION: BOOL UnhookWindowsHookEx ( HHOOK hhk )
 ! FUNCTION: UnhookWinEvent
 ! FUNCTION: UnionRect
 ! FUNCTION: UnloadKeyboardLayout
 ! FUNCTION: UnlockWindowStation
 ! FUNCTION: UnpackDDElParam
-FUNCTION: BOOL UnregisterClassW ( LPCWSTR lpClassName, HINSTANCE hInstance ) ;
+FUNCTION: BOOL UnregisterClassW ( LPCWSTR lpClassName, HINSTANCE hInstance )
 ALIAS: UnregisterClass UnregisterClassW
-FUNCTION: BOOL UnregisterDeviceNotification ( HANDLE hDevNotify ) ;
+FUNCTION: BOOL UnregisterDeviceNotification ( HANDLE hDevNotify )
 ! FUNCTION: UnregisterHotKey
 ! FUNCTION: UnregisterMessagePumpHook
 ! FUNCTION: UnregisterUserApiHook
 ! FUNCTION: UpdateLayeredWindow
 ! FUNCTION: UpdatePerUserSystemParameters
 
-FUNCTION: BOOL UpdateWindow ( HWND hWnd ) ;
+FUNCTION: BOOL UpdateWindow ( HWND hWnd )
 
 ! FUNCTION: User32InitializeImmEntryTable
 ! FUNCTION: UserClientDllInitialize
@@ -1451,8 +2191,10 @@ FUNCTION: BOOL UpdateWindow ( HWND hWnd ) ;
 ! FUNCTION: ValidateRgn
 ! FUNCTION: VkKeyScanA
 ! FUNCTION: VkKeyScanExA
-! FUNCTION: VkKeyScanExW
-! FUNCTION: VkKeyScanW
+FUNCTION: SHORT VkKeyScanExW ( TCHAR ch, HKL dwhkl )
+ALIAS: VkKeyScanEx VkKeyScanExW
+FUNCTION: SHORT VkKeyScanW ( TCHAR ch )
+ALIAS: VkKeyScan VkKeyScanW
 ! FUNCTION: VRipOutput
 ! FUNCTION: VTagOutput
 ! FUNCTION: WaitForInputIdle
@@ -1471,5 +2213,211 @@ FUNCTION: BOOL UpdateWindow ( HWND hWnd ) ;
 ! FUNCTION: wvsprintfA
 ! FUNCTION: wvsprintfW
 
+TYPEDEF: HANDLE HPOWERNOTIFY
+
+FUNCTION: HPOWERNOTIFY RegisterPowerSettingNotification ( HANDLE  hRecipient, LPCGUID PowerSettingGuid, DWORD Flags )
+FUNCTION: BOOL UnregisterPowerSettingNotification ( HPOWERNOTIFY Handle )
+
+CONSTANT: GUID_ACDC_POWER_SOURCE
+    GUID: {5d3e9a59-e9D5-4b00-a6bd-ff34ff516548}
+
+CONSTANT: GUID_BATTERY_PERCENTAGE_REMAINING
+    GUID: {a7ad8041-b45a-4cae-87a3-eecbb468a9e1}
+
+CONSTANT: GUID_CONSOLE_DISPLAY_STATE
+    GUID: {6fe69556-704a-47a0-8f24-c28d936fda47}
+
+CONSTANT: GUID_GLOBAL_USER_PRESENCE
+    GUID: {786e8a1d-b427-4344-9207-09e70bdcbea9}
+
+CONSTANT: GUID_IDLE_BACKGROUND_TASK
+    GUID: {515c31d8-f734-163d-a0fd-11a0-8c91e8f1}
+
+CONSTANT: GUID_MONITOR_POWER_ON
+    GUID: {02731015-4510-4526-99e6-e5a17ebd1aea}
+
+CONSTANT: GUID_POWER_SAVING_STATUS
+    GUID: {e00958c0-c213-4ace-ac77-fecced2eeea5}
+
+CONSTANT: GUID_POWERSCHEME_PERSONALITY
+    GUID: {245d8541-3943-4422-b025-13a7-84f679b7}
+
+CONSTANT: GUID_MIN_POWER_SAVINGS
+    GUID: {8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c}
+
+CONSTANT: GUID_MAX_POWER_SAVINGS
+    GUID: {a1841308-3541-4fab-bc81-f71556f20b4a}
+
+CONSTANT: GUID_TYPICAL_POWER_SAVINGS
+    GUID: {381b4222-f694-41f0-9685-ff5bb260df2e}
+
+CONSTANT: GUID_SESSION_DISPLAY_STATUS
+    GUID: {2b84c20e-ad23-4ddf-93db-05ffbd7efca5}
+
+CONSTANT: GUID_SESSION_USER_PRESENCE
+    GUID: {3c0f4548-c03f-4c4d-b9f2-237ede686376}
+
+CONSTANT: GUID_SYSTEM_AWAYMODE
+    GUID: {98a7f580-01f7-48aa-9c0f-44352c29e5C0}
+
+! This notification fires when the Lid Close Action is
+! changed by user in the Power Manager (Control Panel).
+CONSTANT: GUID_LIDCLOSE_ACTION
+    GUID: {5ca83367-6e45-459f-a27b-476b1d01c936}
+
+! This notifies when the laptop lid is physically opened or closed.
+CONSTANT: GUID_LIDSWITCH_STATE_CHANGE
+    GUID: {ba3e0f4d-b817-4094-a2d1-d56379e6a0f3}
+
+CONSTANT: PBT_POWERSETTINGCHANGE 0x8013
+
+STRUCT: POWERBROADCAST_SETTING
+    { PowerSetting GUID  }
+    { DataLength   DWORD }
+    { Data         UCHAR }
+;
+
 : msgbox ( str -- )
     f swap "DebugMsg" MB_OK MessageBox drop ;
+
+! HighDPI
+TYPEDEF: HANDLE DPI_AWARENESS_CONTEXT
+
+ENUM: DPI_AWARENESS
+    { DPI_AWARENESS_INVALID -1 }
+    { DPI_AWARENESS_UNAWARE 0 }
+    { DPI_AWARENESS_SYSTEM_AWARE 1 }
+    { DPI_AWARENESS_PER_MONITOR_AWARE 2 } ;
+
+FUNCTION: BOOL AdjustWindowRectExForDpi (
+    LPRECT lpRect,
+    DWORD  dwStyle,
+    BOOL   bMenu,
+    DWORD  dwExStyle,
+    UINT   dpi
+)
+
+FUNCTION: BOOL EnableNonClientDpiScaling (
+    HWND hwnd
+)
+
+FUNCTION: BOOL AreDpiAwarenessContextsEqual (
+    DPI_AWARENESS_CONTEXT dpiContextA,
+    DPI_AWARENESS_CONTEXT dpiContextB
+)
+
+ENUM: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS
+    DCDC_DEFAULT
+    DCDC_DISABLE_FONT_UPDATE
+    DCDC_DISABLE_RELAYOUT ;
+
+FUNCTION: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS GetDialogControlDpiChangeBehavior (
+    HWND hWnd
+)
+
+ENUM: DIALOG_DPI_CHANGE_BEHAVIORS
+    DDC_DEFAULT
+    DDC_DISABLE_ALL
+    DDC_DISABLE_RESIZE
+    DDC_DISABLE_CONTROL_RELAYOUT ;
+
+FUNCTION: DIALOG_DPI_CHANGE_BEHAVIORS GetDialogDpiChangeBehavior (
+    HWND hDlg
+)
+
+FUNCTION: UINT GetDpiForSystem ( )
+
+FUNCTION: UINT GetDpiForWindow ( HWND hwnd )
+
+FUNCTION: UINT GetSystemDpiForProcess (
+    HANDLE hProcess
+)
+
+FUNCTION: int GetSystemMetricsForDpi (
+    int  nIndex,
+    UINT dpi
+)
+
+FUNCTION: DPI_AWARENESS_CONTEXT GetThreadDpiAwarenessContext ( )
+FUNCTION: DPI_AWARENESS_CONTEXT SetThreadDpiAwarenessContext ( DPI_AWARENESS_CONTEXT dpiContext )
+
+ENUM: DPI_HOSTING_BEHAVIOR
+    DPI_HOSTING_BEHAVIOR_INVALID
+    DPI_HOSTING_BEHAVIOR_DEFAULT
+    DPI_HOSTING_BEHAVIOR_MIXED ;
+
+FUNCTION: DPI_HOSTING_BEHAVIOR GetThreadDpiHostingBehavior ( )
+
+FUNCTION: DPI_HOSTING_BEHAVIOR GetWindowDpiHostingBehavior (
+    HWND hwnd
+)
+
+FUNCTION: BOOL SetProcessDPIAware ( )
+FUNCTION: BOOL SetProcessDpiAwarenessContext ( DPI_AWARENESS_CONTEXT value )
+
+FUNCTION: DPI_AWARENESS_CONTEXT GetWindowDpiAwarenessContext ( HWND hwnd )
+FUNCTION: DPI_AWARENESS GetAwarenessFromDpiAwarenessContext ( DPI_AWARENESS_CONTEXT value )
+
+: get-thread-dpi-awareness ( -- enum )
+    GetThreadDpiAwarenessContext GetAwarenessFromDpiAwarenessContext ;
+
+FUNCTION: BOOL IsValidDpiAwarenessContext (
+    DPI_AWARENESS_CONTEXT value
+)
+
+! DPI_AWARENESS_CONTEXT experimentally:
+! USE: ranges -100 1000 [a..b] [ <alien> IsValidDpiAwarenessContext ] zip-with
+! [ 0 > ] filter-values keys .
+! { -5 -4 -3 -2 -1 17 18 34 273 529 785 }
+
+! -4 <alien> 34 <alien> AreDpiAwarenessContextsEqual . ! t
+! -5 <alien> -5 <alien> AreDpiAwarenessContextsEqual . ! t
+! -6 <alien> -6 <alien> AreDpiAwarenessContextsEqual . ! f
+: DPI_AWARENESS_CONTEXT_UNAWARE ( -- DPI_AWARENESS_CONTEXT )
+    -1 <alien> ;
+
+: DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ( -- DPI_AWARENESS_CONTEXT )
+    -2 <alien> ;
+
+: DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ( -- DPI_AWARENESS_CONTEXT )
+    -3 <alien> ;
+
+: DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ( -- DPI_AWARENESS_CONTEXT )
+    -4 <alien> ;
+
+: DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ( -- DPI_AWARENESS_CONTEXT )
+    -5 <alien> ;
+
+FUNCTION: BOOL LogicalToPhysicalPointForPerMonitorDPI (
+    HWND    hWnd,
+    LPPOINT lpPoint
+)
+
+FUNCTION: BOOL PhysicalToLogicalPointForPerMonitorDPI (
+    HWND    hWnd,
+    LPPOINT lpPoint
+)
+
+FUNCTION: BOOL SetDialogControlDpiChangeBehavior (
+    HWND                                hWnd,
+    DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS mask,
+    DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS values
+)
+
+FUNCTION: BOOL SetDialogDpiChangeBehavior (
+    HWND                        hDlg,
+    DIALOG_DPI_CHANGE_BEHAVIORS mask,
+    DIALOG_DPI_CHANGE_BEHAVIORS values
+)
+
+FUNCTION: DPI_HOSTING_BEHAVIOR SetThreadDpiHostingBehavior (
+    DPI_HOSTING_BEHAVIOR value
+)
+
+FUNCTION: BOOL SystemParametersInfoForDpi (
+    UINT  uiAction,
+    UINT  uiParam,
+    PVOID pvParam,
+    UINT  fWinIni,
+    UINT  dpi
+)