]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/windows/user32/user32.factor
Fix MacOSX can't handle LTO
[factor.git] / basis / windows / user32 / user32.factor
index f87e46efa6028eeec68f13db33d3e1c527b47219..2b713aff3e5bb0a1b891baba5bdfa108d8857630 100644 (file)
@@ -1,8 +1,9 @@
 ! Copyright (C) 2005, 2006 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.syntax parser namespaces
-kernel math windows.types generalizations math.bitwise
-classes.struct literals windows.kernel32 system accessors ;
+! 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
@@ -115,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
@@ -189,11 +183,11 @@ CONSTANT: CF_LOCALE           16
 CONSTANT: CF_DIBV5            17
 CONSTANT: CF_MAX              18
 
-CONSTANT: CF_OWNERDISPLAY 0x0080
-CONSTANT: CF_DSPTEXT 0x0081
-CONSTANT: CF_DSPBITMAP 0x0082
-CONSTANT: CF_DSPMETAFILEPICT 0x0083
-CONSTANT: CF_DSPENHMETAFILE 0x008E
+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 0x200
@@ -754,6 +748,45 @@ 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
 
@@ -945,31 +978,41 @@ 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 TCHAR[CCHDEVICENAME] }
+    { dmDeviceName WCHAR[CCHDEVICENAME] }
     { dmSpecVersion WORD }
     { dmDriverVersion WORD }
     { dmSize WORD }
     { dmDriverExtra WORD }
     { dmFields DWORD }
 
-    { dmOrientation short }
-    { dmPaperSize short }
-    { dmPaperLength short }
-    { dmPaperWidth short }
-    { dmScale short }
-    { dmCopies short }
-    { dmDefaultSource short }
-    { dmPrintQuality short }
+    { props DEVMODE_UNION_1 }
 
     { dmColor short }
     { dmDuplex short }
     { dmYResolution short }
     { dmTTOption short }
     { dmCollate short }
-    { dmFormName TCHAR[CCHFORMNAME] }
+    { dmFormName WCHAR[CCHFORMNAME] }
     { dmLogPixels WORD }
     { dmBitsPerPel DWORD }
     { dmPelsWidth DWORD }
@@ -978,35 +1021,286 @@ STRUCT: DEVMODE
     { dmDisplayFrequency DWORD }
     { dmiCMMethod DWORD }
     { dmICMIntent DWORD }
-
     { dmMediaType DWORD }
     { dmDitherType DWORD }
     { dmReserved1 DWORD }
     { dmReserved2 DWORD }
-    { dmPanningWidth DWORD } ;
-
-! union { DWORD dmDisplayFlags; DWORD dmNup; } ;
-  ! union {
-    ! struct {
-      ! short dmOrientation;
-      ! short dmPaperSize;
-      ! short dmPaperLength;
-      ! short dmPaperWidth;
-      ! short dmScale;
-      ! short dmCopies;
-      ! short dmDefaultSource;
-      ! short dmPrintQuality;
-    ! } ;
-    ! struct {
-      ! POINTL dmPosition;
-      ! DWORD dmDisplayOrientation;
-      ! DWORD dmDisplayFixedOutput;
-    ! } ;
-  ! } ;
+    { 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 )
@@ -1039,7 +1333,7 @@ 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
@@ -1051,6 +1345,16 @@ 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
@@ -1096,7 +1400,8 @@ 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
@@ -1238,21 +1543,38 @@ FUNCTION: BOOL EnableMenuItem ( HMENU hMenu, UINT uIDEnableItem, UINT uEnable )
 ! 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: 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: BOOL EnumDisplayMonitors ( HDC hdc, LPCRECT lprcClip, MONITORENUMPROC lpfnEnum, LPARAM dwData )
+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: BOOL EnumDisplaySettingsExW ( LPCWSTR  lpszDeviceName,
+  DWORD    iModeNum,
+  DEVMODEW *lpDevMode,
+  DWORD    dwFlags
+)
+
 FUNCTION: BOOL EnumDisplaySettingsW ( LPCTSTR lpszDeviceName, DWORD iModeNum, DEVMODE *lpDevMode )
 ALIAS: EnumDisplaySettings EnumDisplaySettingsW
 ! FUNCTION: EnumPropsA
@@ -1260,7 +1582,7 @@ ALIAS: EnumDisplaySettings EnumDisplaySettingsW
 ! FUNCTION: EnumPropsExW
 ! FUNCTION: EnumPropsW
 ! FUNCTION: EnumThreadWindows
-! FUNCTION: EnumWindows
+FUNCTION: BOOL EnumWindows ( WNDENUMPROC lpEnumFunc, LPARAM lParam )
 ! FUNCTION: EnumWindowStationsA
 ! FUNCTION: EnumWindowStationsW
 ! FUNCTION: EqualRect
@@ -1268,8 +1590,11 @@ ALIAS: EnumDisplaySettings EnumDisplaySettingsW
 ! FUNCTION: ExitWindowsEx
 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: FindWindowExW
+FUNCTION: HWND FindWindowExW ( HWND hwndParent, HWND hwndChildAfter, c-string lpszClass, c-string lpszWindow )
+ALIAS: FindWindowEx FindWindowExW
 ! FUNCTION: FindWindowW
 ! FUNCTION: FlashWindow
 ! FUNCTION: FlashWindowEx
@@ -1314,16 +1639,17 @@ FUNCTION: DWORD GetClipboardSequenceNumber ( )
 ! FUNCTION: GetCursor
 ! FUNCTION: GetCursorFrameInfo
 ! FUNCTION: GetCursorInfo
-! FUNCTION: GetCursorPos
+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 GetDlgItemTextW ( HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMaxCount )
+ALIAS: GetDlgItemText GetDlgItemTextW
 FUNCTION: uint GetDoubleClickTime ( )
 FUNCTION: HWND GetFocus ( )
 FUNCTION: HWND GetForegroundWindow ( )
@@ -1334,12 +1660,12 @@ FUNCTION: HWND GetForegroundWindow ( )
 ! 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 )
@@ -1365,11 +1691,10 @@ FUNCTION: SHORT GetKeyState ( int nVirtKey )
 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 GetMonitorInfoA ( HMONITOR hMonitor, LPMONITORINFO lpmi )
 FUNCTION: BOOL GetMonitorInfoW ( HMONITOR hMonitor, LPMONITORINFO lpmi )
 ALIAS: GetMonitorInfo GetMonitorInfoW
 
@@ -1380,7 +1705,7 @@ ALIAS: GetMonitorInfo GetMonitorInfoW
 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
@@ -1406,7 +1731,7 @@ FUNCTION: HMENU GetSystemMenu ( HWND hWnd, BOOL bRevert )
 ! FUNCTION: GetTabbedTextExtentA
 ! FUNCTION: GetTabbedTextExtentW
 ! FUNCTION: GetTaskmanWindow
-! FUNCTION: GetThreadDesktop
+FUNCTION: HDESK GetThreadDesktop ( DWORD dwThreadId )
 ! FUNCTION: GetTitleBarInfo
 
 
@@ -1436,7 +1761,9 @@ ALIAS: GetWindowLongPtr GetWindowLongPtrW
 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
@@ -1506,16 +1833,15 @@ FUNCTION: HACCEL LoadAcceleratorsW ( HINSTANCE hInstance, LPCTSTR lpTableName )
 ! 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
@@ -1541,7 +1867,7 @@ ALIAS: MapVirtualKey MapVirtualKeyW
 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
@@ -1561,14 +1887,13 @@ 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,
@@ -1593,7 +1918,7 @@ 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: mouse_event
@@ -1618,9 +1943,10 @@ FUNCTION: BOOL MoveWindow (
 ! FUNCTION: OffsetRect
 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
@@ -1686,7 +2012,7 @@ FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC )
 ! FUNCTION: ReplyMessage
 ! FUNCTION: ResolveDesktopForWOW
 ! FUNCTION: ReuseDDElParam
-! FUNCTION: ScreenToClient
+FUNCTION: BOOL ScreenToClient ( HWND hWnd, LPPOINT lpPoint )
 ! FUNCTION: ScrollChildren
 ! FUNCTION: ScrollDC
 ! FUNCTION: ScrollWindow
@@ -1695,7 +2021,7 @@ FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC )
 ! FUNCTION: SendDlgItemMessageW
 ! FUNCTION: SendIMEMessageExA
 ! FUNCTION: SendIMEMessageExW
-FUNCTION: UINT SendInput ( UINT nInputs, LPINPUT pInputs, int cbSize )
+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
@@ -1780,14 +2106,18 @@ 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
@@ -1819,7 +2149,7 @@ ALIAS: SystemParametersInfo SystemParametersInfoW
 ! 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: TrackPopupMenu
@@ -1833,7 +2163,7 @@ ALIAS: TranslateAccelerator TranslateAcceleratorW
 FUNCTION: BOOL TranslateMessage ( MSG* lpMsg )
 
 ! FUNCTION: UnhookWindowsHook
-! FUNCTION: UnhookWindowsHookEx
+FUNCTION: BOOL UnhookWindowsHookEx ( HHOOK hhk )
 ! FUNCTION: UnhookWinEvent
 ! FUNCTION: UnionRect
 ! FUNCTION: UnloadKeyboardLayout
@@ -1861,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
@@ -1881,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
+)