' api_window.sbp - Window Control API


#ifndef _INC_WINDOW
#define _INC_WINDOW

'-------------
' Window API Function Names
#ifdef UNICODE
Const _FuncName_CallWindowProc = "CallWindowProcW"
Const _FuncName_CharLower = "CharLowerW"
Const _FuncName_CharNext = "CharNextW"
Const _FuncName_CharPrev = "CharPrevW"
Const _FuncName_CharUpper = "CharUpperW"
Const _FuncName_CreateAcceleratorTable = "CreateAcceleratorTableW"
Const _FuncName_CreateWindowEx = "CreateWindowExW"
Const _FuncName_DefDlgProc = "DefDlgProcW"
Const _FuncName_DefWindowProc = "DefWindowProcW"
Const _FuncName_DialogBoxIndirectParam = "DialogBoxIndirectParamW"
Const _FuncName_DispatchMessage = "DispatchMessageW"
Const _FuncName_DlgDirList = "DlgDirListW"
Const _FuncName_DlgDirListComboBox = "DlgDirListComboBoxW"
Const _FuncName_DlgDirSelectComboBoxEx = "DlgDirSelectComboBoxExW"
Const _FuncName_DlgDirSelectEx = "DlgDirSelectExW"
Const _FuncName_DrawText = "DrawTextW"
Const _FuncName_DrawTextEx = "DrawTextExW"
Const _FuncName_FindWindow = "FindWindowW"
Const _FuncName_FindWindowEx = "FindWindowExW"
Const _FuncName_GetClassInfoEx = "GetClassInfoExW"
Const _FuncName_GetClassLong = "GetClassLongW"
Const _FuncName_GetClassLongPtr = "GetClassLongPtrW"
Const _FuncName_GetClassName = "GetClassNameW"
Const _FuncName_GetClipboardFormatName = "GetClipboardFormatNameW"
Const _FuncName_GetDlgItemText = "GetDlgItemTextW"
Const _FuncName_GetMonitorInfo = "GetMonitorInfoW"
Const _FuncName_GetMenuItemInfo = "GetMenuItemInfoW"
Const _FuncName_GetMessage = "GetMessageW"
Const _FuncName_GetProp = "GetPropW"
Const _FuncName_GetWindowLong = "GetWindowLongW"
Const _FuncName_GetWindowLongPtr = "GetWindowLongPtrW"
Const _FuncName_GetWindowText = "GetWindowTextW"
Const _FuncName_GetWindowTextLength = "GetWindowTextLengthW"
Const _FuncName_GetWindowModuleFileName = "GetWindowModuleFileNameW"
Const _FuncName_InsertMenuItem = "InsertMenuItemW"
Const _FuncName_IsCharAlpha = "IsCharAlphaW"
Const _FuncName_IsCharAlphaNumeric = "IsCharAlphaNumericW"
Const _FuncName_IsCharLower = "IsCharLowerW"
Const _FuncName_IsCharUpper = "IsCharUpperW"
Const _FuncName_IsDialogMessage = "IsDialogMessageW"
Const _FuncName_LoadBitmap = "LoadBitmapW"
Const _FuncName_LoadCursor = "LoadCursorW"
Const _FuncName_LoadCursorFromFile = "LoadCursorFromFileW"
Const _FuncName_LoadIcon = "LoadIconW"
Const _FuncName_LoadImage = "LoadImageW"
Const _FuncName_LoadString = "LoadStringW"
Const _FuncName_MapVirtualKey = "MapVirtualKeyW"
Const _FuncName_PeekMessage = "PeekMessageW"
Const _FuncName_PostMessage = "PostMessageW"
Const _FuncName_PostThreadMessage = "PostThreadMessageW"
Const _FuncName_RegisterClassEx = "RegisterClassExW"
Const _FuncName_RegisterClipboardFormat = "RegisterClipboardFormatW"
Const _FuncName_RegisterWindowMessage = "RegisterWindowMessageW"
Const _FuncName_RemoveProp = "RemovePropW"
Const _FuncName_SendDlgItemMessage = "SendDlgItemMessageW"
Const _FuncName_SendMessage = "SendMessageW"
Const _FuncName_SendNotifyMessage = "SendNotifyMessageW"
Const _FuncName_SetDlgItemText = "SetDlgItemTextW"
Const _FuncName_SetClassLong = "SetClassLongW"
Const _FuncName_SetClassLongPtr = "SetClassLongPtrW"
Const _FuncName_SetMenuItemInfo = "SetMenuItemInfoW"
Const _FuncName_SetProp = "SetPropW"
Const _FuncName_SetWindowLong = "SetWindowLongW"
Const _FuncName_SetWindowLongPtr = "SetWindowLongPtrW"
Const _FuncName_SetWindowText = "SetWindowTextW"
Const _FuncName_SetWindowsHookEx = "SetWindowsHookExW"
Const _FuncName_SystemParametersInfo = "SystemParametersInfoW"
Const _FuncName_TranslateAccelerator = "TranslateAcceleratorW"
Const _FuncName_UnregisterClass = "UnregisterClassW"
Const _FuncName_wsprintf = "wsprintfW"
Const _FuncName_wvsprintf = "wvsprintfW"
Const _FuncName_ChangeDisplaySettings = "ChangeDisplaySettingsW"
Const _FuncName_ChangeDisplaySettingsEx= "ChangeDisplaySettingsExW"
Const _FuncName_EnumDisplaySettings= "EnumDisplaySettingsW"
Const _FuncName_EnumDisplaySettingsEx= "EnumDisplaySettingsExW"
Const _FuncName_EnumDisplayDevices= "EnumDisplayDevicesW"
#else
Const _FuncName_CallWindowProc = "CallWindowProcA"
Const _FuncName_CharLower = "CharLowerA"
Const _FuncName_CharNext = "CharNextA"
Const _FuncName_CharPrev = "CharPrevA"
Const _FuncName_CharUpper = "CharUpperA"
Const _FuncName_CreateAcceleratorTable = "CreateAcceleratorTableA"
Const _FuncName_CreateWindowEx = "CreateWindowExA"
Const _FuncName_DefDlgProc = "DefDlgProcA"
Const _FuncName_DefWindowProc = "DefWindowProcA"
Const _FuncName_DialogBoxIndirectParam = "DialogBoxIndirectParamA"
Const _FuncName_DispatchMessage = "DispatchMessageA"
Const _FuncName_DlgDirList = "DlgDirListA"
Const _FuncName_DlgDirListComboBox = "DlgDirListComboBoxA"
Const _FuncName_DlgDirSelectComboBoxEx = "DlgDirSelectComboBoxExA"
Const _FuncName_DlgDirSelectEx = "DlgDirSelectExA"
Const _FuncName_DrawText = "DrawTextA"
Const _FuncName_DrawTextEx = "DrawTextExA"
Const _FuncName_FindWindow = "FindWindowA"
Const _FuncName_FindWindowEx = "FindWindowExA"
Const _FuncName_GetClassInfoEx = "GetClassInfoExA"
Const _FuncName_GetClassLong = "GetClassLongA"
Const _FuncName_GetClassLongPtr = "GetClassLongPtrA"
Const _FuncName_GetClassName = "GetClassNameA"
Const _FuncName_GetClipboardFormatName = "GetClipboardFormatNameA"
Const _FuncName_GetDlgItemText = "GetDlgItemTextA"
Const _FuncName_GetMenuItemInfo = "GetMenuItemInfoA"
Const _FuncName_GetMessage = "GetMessageA"
Const _FuncName_GetMonitorInfo = "GetMonitorInfoA"
Const _FuncName_GetProp = "GetPropA"
Const _FuncName_GetWindowLong = "GetWindowLongA"
Const _FuncName_GetWindowLongPtr = "GetWindowLongPtrA"
Const _FuncName_GetWindowText = "GetWindowTextA"
Const _FuncName_GetWindowTextLength = "GetWindowTextLengthA"
Const _FuncName_GetWindowModuleFileName = "GetWindowModuleFileNameA"
Const _FuncName_InsertMenuItem = "InsertMenuItemA"
Const _FuncName_IsCharAlpha = "IsCharAlphaA"
Const _FuncName_IsCharAlphaNumeric = "IsCharAlphaNumericA"
Const _FuncName_IsCharLower = "IsCharLowerA"
Const _FuncName_IsCharUpper = "IsCharUpperA"
Const _FuncName_IsDialogMessage = "IsDialogMessageA"
Const _FuncName_LoadBitmap = "LoadBitmapA"
Const _FuncName_LoadCursor = "LoadCursorA"
Const _FuncName_LoadCursorFromFile = "LoadCursorFromFileA"
Const _FuncName_LoadIcon = "LoadIconA"
Const _FuncName_LoadImage = "LoadImageA"
Const _FuncName_LoadString = "LoadStringA"
Const _FuncName_MapVirtualKey = "MapVirtualKeyA"
Const _FuncName_PeekMessage = "PeekMessageA"
Const _FuncName_PostMessage = "PostMessageA"
Const _FuncName_PostThreadMessage = "PostThreadMessageA"
Const _FuncName_RegisterClassEx = "RegisterClassExA"
Const _FuncName_RegisterClipboardFormat = "RegisterClipboardFormatA"
Const _FuncName_RegisterWindowMessage = "RegisterWindowMessageA"
Const _FuncName_RemoveProp = "RemovePropA"
Const _FuncName_SendDlgItemMessage = "SendDlgItemMessageA"
Const _FuncName_SendMessage = "SendMessageA"
Const _FuncName_SendNotifyMessage = "SendNotifyMessageA"
Const _FuncName_SetDlgItemText = "SetDlgItemTextA"
Const _FuncName_SetClassLong = "SetClassLongA"
Const _FuncName_SetClassLongPtr = "SetClassLongPtrA"
Const _FuncName_SetMenuItemInfo = "SetMenuItemInfoA"
Const _FuncName_SetProp = "SetPropA"
Const _FuncName_SetWindowLong = "SetWindowLongA"
Const _FuncName_SetWindowLongPtr = "SetWindowLongPtrA"
Const _FuncName_SetWindowsHookEx = "SetWindowsHookExA"
Const _FuncName_SetWindowText = "SetWindowTextA"
Const _FuncName_SystemParametersInfo = "SystemParametersInfoA"
Const _FuncName_TranslateAccelerator = "TranslateAcceleratorA"
Const _FuncName_UnregisterClass = "UnregisterClassA"
Const _FuncName_wsprintf = "wsprintfA"
Const _FuncName_wvsprintf = "wvsprintfA"
Const _FuncName_ChangeDisplaySettings = "ChangeDisplaySettingsA"
Const _FuncName_ChangeDisplaySettingsEx= "ChangeDisplaySettingsExA"
Const _FuncName_EnumDisplaySettings= "EnumDisplaySettingsA"
Const _FuncName_EnumDisplaySettingsEx= "EnumDisplaySettingsExA"
Const _FuncName_EnumDisplayDevices= "EnumDisplayDevicesA"
#endif

Type _System_DeclareHandle_HDWP:unused As DWord:End Type
TypeDef HDWP = *_System_DeclareHandle_HDWP

TypeDef WNDPROC = *Function(hwnd As HWND, msg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
TypeDef DLGPROC = *Function(hwnd As HWND, msg As DWord, wParam As WPARAM, lParam As LPARAM) As LONG_PTR

Type MSG
	hwnd As HWND
	message As DWord
	wParam As WPARAM
	lParam As LPARAM
	time As DWord
	pt As POINTAPI
End Type

Const IS_INTRESOURCE(_r) = ((((_r) As ULONG_PTR) >> 16) = 0)
Const MAKEINTRESOURCEW(i) = ((((i) As Word) As ULONG_PTR) As PCWSTR)
Const MAKEINTRESOURCEA(i) = ((((i) As Word) As ULONG_PTR) As PCSTR)
Const MAKEINTRESOURCE(i) = ((((i) As Word) As ULONG_PTR) As PCTSTR)

Const RT_CURSOR = MAKEINTRESOURCE(1)
Const RT_BITMAP = MAKEINTRESOURCE(2)
Const RT_ICON = MAKEINTRESOURCE(3)
Const RT_MENU = MAKEINTRESOURCE(4)
Const RT_DIALOG = MAKEINTRESOURCE(5)
Const RT_STRING = MAKEINTRESOURCE(6)
Const RT_FONTDIR = MAKEINTRESOURCE(7)
Const RT_FONT = MAKEINTRESOURCE(8)
Const RT_ACCELERATOR = MAKEINTRESOURCE(9)
Const RT_RCDATA = MAKEINTRESOURCE(10)
Const RT_MESSAGETABLE = MAKEINTRESOURCE(11)

Const DIFFERENCE = 11
Const RT_GROUP_CURSOR = MAKEINTRESOURCE((RT_CURSOR) As ULONG_PTR + DIFFERENCE)
Const RT_GROUP_ICON = MAKEINTRESOURCE((RT_ICON) As ULONG_PTR + DIFFERENCE)
Const RT_VERSION = MAKEINTRESOURCE(16)
Const RT_DLGINCLUDE = MAKEINTRESOURCE(17)
Const RT_PLUGPLAY = MAKEINTRESOURCE(19)
Const RT_VXD = MAKEINTRESOURCE(20)
Const RT_ANICURSOR = MAKEINTRESOURCE(21)
Const RT_ANIICON = MAKEINTRESOURCE(22)
Const RT_HTML = MAKEINTRESOURCE(23)
Const RT_MANIFEST = MAKEINTRESOURCE(24)
Const CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1)
Const ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(2)
Const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(3)
Const MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1)
Const MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(16)

TypeDef WNDENUMPROC = *Function(hwnd As HWND, lParam As LPARAM) As BOOL
TypeDef HOOKPROC = *Function(code As Long, wParam As WPARAM, lParam As LPARAM) As LRESULT
TypeDef MONITORENUMPROC = *Function(hm As HMONITOR, hdc As HDC, ByRef rc As RECT, dwData As LPARAM) As BOOL

Const CS_VREDRAW =         &H0001
Const CS_HREDRAW =         &H0002
Const CS_DBLCLKS =         &H0008
Const CS_OWNDC =           &H0020
Const CS_CLASSDC =         &H0040
Const CS_PARENTDC =        &H0080
Const CS_NOCLOSE =         &H0200
Const CS_SAVEBITS =        &H0800
Const CS_BYTEALIGNCLIENT = &H1000
Const CS_BYTEALIGNWINDOW = &H2000
Const CS_GLOBALCLASS =     &H4000
Type WNDCLASSEXA
	cbSize        As DWord
	style         As DWord
	lpfnWndProc   As WNDPROC
	cbClsExtra    As Long
	cbWndExtra    As Long
	hInstance     As HINSTANCE
	hIcon         As HICON
	hCursor       As HCURSOR
	hbrBackground As HBRUSH
	lpszMenuName  As LPCSTR
	lpszClassName As LPCSTR
	hIconSm       As HICON
End Type
Type WNDCLASSEXW
	cbSize        As DWord
	style         As DWord
	lpfnWndProc   As WNDPROC
	cbClsExtra    As Long
	cbWndExtra    As Long
	hInstance     As HINSTANCE
	hIcon         As HICON
	hCursor       As HCURSOR
	hbrBackground As HBRUSH
	lpszMenuName  As LPCWSTR
	lpszClassName As LPCWSTR
	hIconSm       As HICON
End Type
#ifdef UNICODE
TypeDef WNDCLASSEX = WNDCLASSEXW
#else
TypeDef WNDCLASSEX = WNDCLASSEXA
#endif

'------------------------
' Dialog Box Command IDs
Const IDOK =              1
Const IDCANCEL =          2
Const IDABORT =           3
Const IDRETRY =           4
Const IDIGNORE =          5
Const IDYES =             6
Const IDNO =              7
Const IDCLOSE =           8
Const IDHELP =            9


'------------------------
' Menu flags and structs
Const MF_INSERT =          &H00000000
Const MF_CHANGE =          &H00000080
Const MF_APPEND =          &H00000100
Const MF_DELETE =          &H00000200
Const MF_REMOVE =          &H00001000
Const MF_BYCOMMAND =       &H00000000
Const MF_BYPOSITION =      &H00000400
Const MF_SEPARATOR =       &H00000800
Const MF_ENABLED =         &H00000000
Const MF_GRAYED =          &H00000001
Const MF_DISABLED =        &H00000002
Const MF_UNCHECKED =       &H00000000
Const MF_CHECKED =         &H00000008
Const MF_USECHECKBITMAPS = &H00000200
Const MF_STRING =          &H00000000
Const MF_BITMAP =          &H00000004
Const MF_OWNERDRAW =       &H00000100
Const MF_POPUP =           &H00000010
Const MF_MENUBARBREAK =    &H00000020
Const MF_MENUBREAK =       &H00000040
Const MF_UNHILITE =        &H00000000
Const MF_HILITE =          &H00000080
Const MF_DEFAULT =         &H00001000
Const MF_SYSMENU =         &H00002000
Const MF_HELP =            &H00004000
Const MF_RIGHTJUSTIFY =    &H00004000
Const MF_MOUSESELECT =     &H00008000

Const MFS_GRAYED =        &H00000003
Const MFS_DISABLED =      MFS_GRAYED
Const MFS_CHECKED =       MF_CHECKED
Const MFS_HILITE =        MF_HILITE
Const MFS_ENABLED =       MF_ENABLED
Const MFS_UNCHECKED =     MF_UNCHECKED
Const MFS_UNHILITE =      MF_UNHILITE
Const MFS_DEFAULT =       MF_DEFAULT
Const MFS_MASK =          &H0000108B
Const MFS_HOTTRACKDRAWN = &H10000000
Const MFS_CACHEDBMP =     &H20000000
Const MFS_BOTTOMGAPDROP = &H40000000
Const MFS_TOPGAPDROP =    &H80000000
Const MFS_GAPDROP =       &HC0000000

Const MIIM_STATE =      &H00000001
Const MIIM_ID =         &H00000002
Const MIIM_SUBMENU =    &H00000004
Const MIIM_CHECKMARKS = &H00000008
Const MIIM_TYPE =       &H00000010
Const MIIM_DATA =       &H00000020
Const MIIM_STRING =     &H00000040
Const MIIM_BITMAP =     &H00000080
Const MIIM_FTYPE =      &H00000100
Const MFT_STRING =        MF_STRING
Const MFT_BITMAP =        MF_BITMAP
Const MFT_MENUBARBREAK =  MF_MENUBARBREAK
Const MFT_MENUBREAK =     MF_MENUBREAK
Const MFT_OWNERDRAW =     MF_OWNERDRAW
Const MFT_RADIOCHECK =    &H00000200
Const MFT_SEPARATOR =     MF_SEPARATOR
Const MFT_RIGHTORDER =    &H00002000
Const MFT_RIGHTJUSTIFY =  MF_RIGHTJUSTIFY

Type MENUITEMINFOW
	cbSize        As DWord
	fMask         As DWord
	fType         As DWord
	fState        As DWord
	wID           As DWord
	hSubMenu      As HMENU
	hbmpChecked   As HBITMAP
	hbmpUnchecked As HBITMAP
	dwItemData    As ULONG_PTR
	dwTypeData    As LPWSTR
	cch           As DWord
End Type
Type MENUITEMINFOA
	cbSize        As DWord
	fMask         As DWord
	fType         As DWord
	fState        As DWord
	wID           As DWord
	hSubMenu      As HMENU
	hbmpChecked   As HBITMAP
	hbmpUnchecked As HBITMAP
	dwItemData    As ULONG_PTR
	dwTypeData    As LPSTR
	cch           As DWord
End Type
#ifdef UNICODE
TypeDef MENUITEMINFO = MENUITEMINFOW
#else
TypeDef MENUITEMINFO = MENUITEMINFOA
#endif

'------------
' Scroll Bar
Const SB_HORZ = 0
Const SB_VERT = 1
Const SB_CTL =  2
Const SB_BOTH = 3

' SCROLLINFO struct
Const SIF_RANGE =           &H0001
Const SIF_PAGE =            &H0002
Const SIF_POS =             &H0004
Const SIF_DISABLENOSCROLL = &H0008
Const SIF_TRACKPOS =        &H0010
Const SIF_ALL =             SIF_RANGE or SIF_PAGE or SIF_POS or SIF_TRACKPOS
Type SCROLLINFO
	cbSize As DWord
	fMask As DWord
	nMin As Long
	nMax As Long
	nPage As DWord
	nPos As Long
	nTrackPos As Long
End Type


' combo box
Const CB_ERR =      -1
Const CB_ERRSPACE = -2


' Clipboard Formats
Const CF_TEXT =         1
Const CF_BITMAP =       2
Const CF_METAFILEPICT = 3
Const CF_SYLK =         4
Const CF_DIF =          5
Const CF_TIFF =         6
Const CF_OEMTEXT =      7
Const CF_DIB =          8
Const CF_PALETTE =      9
Const CF_PENDATA =      10
Const CF_RIFF =         11
Const CF_WAVE =         12
Const CF_UNICODETEXT =  13
Const CF_ENHMETAFILE =  14
Const CF_HDROP =        15
Const CF_LOCALE =       16
Const CF_MAX =          17
Const CF_OWNERDISPLAY =    &H0080
Const CF_DSPTEXT =         &H0081
Const CF_DSPBITMAP =       &H0082
Const CF_DSPMETAFILEPICT = &H0083
Const CF_DSPENHMETAFILE =  &H008E
Const CF_PRIVATEFIRST =    &H0200
Const CF_PRIVATELAST =     &H02FF
Const CF_GDIOBJFIRST =     &H0300
Const CF_GDIOBJLAST =      &H03FF

'-------------
' Window API

Declare Function AdjustWindowRect Lib "user32" (ByRef Rect As RECT, dwStyle As DWord, bMenu As BOOL) As BOOL
Declare Function AdjustWindowRectEx Lib "user32" (ByRef Rect As RECT, dwStyle As DWord, bMenu As BOOL, dwExStyle As DWord) As BOOL
Declare Function AnyPopup Lib "user32" () As BOOL
Declare Function ArrangeIconicWindows Lib "user32" (hWnd As HWND) As DWord

Type PAINTSTRUCT
	hdc As HDC
	fErase As BOOL
	rcPaint As RECT
	fRestore As BOOL
	fIncUpdate As BOOL
	rgbReserved[ELM(32)] As Byte
End Type
Declare Function BeginPaint Lib "user32" (hWnd As HWND, ByRef Paint As PAINTSTRUCT) As HDC
Declare Function BringWindowToTop Lib "user32" (hWnd As HWND) As Long
Declare Function CallNextHookEx Lib "user32" (hHook As HHOOK, nCode As Long, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function CallWindowProc Lib "user32" Alias _FuncName_CallWindowProc (lpPrevWndFunc As WNDPROC, hWnd As HWND, Msg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function ChangeClipboardChain Lib "user32" (hwndRemove As HWND, hwndNewNext As HWND) As BOOL
Declare Function CharLower Lib "user32" Alias _FuncName_CharLower (psz As PTSTR) As DWord
Declare Function CharNext Lib "user32" Alias _FuncName_CharNext (lpszCurrent As LPCTSTR) As LPTSTR
Declare Function CharNextExA Lib "user32" (CodePage As Word, lpCurrentChar As LPCSTR, dwFlags As DWord) As LPSTR
Declare Function CharPrev Lib "user32" Alias _FuncName_CharPrev (lpszStart As LPCTSTR, lpszCurrent As LPCTSTR) As LPTSTR
Declare Function CharPrevExA Lib "user32" (CodePage As Word, lpStart As LPCSTR, lpCurrentChar As LPCSTR, dwFlags As DWord) As LPSTR
Declare Function CharUpper Lib "user32" Alias _FuncName_CharUpper (psz As PTSTR) As DWord
Declare Function CheckMenuItem Lib "user32" (hMenu As HMENU, uIDCheckItem As DWord, uCheck As DWord) As DWord
Declare Function CheckMenuRadioItem Lib "user32" (hMenu As HMENU, idFirst As DWord, idLast As DWord, idCheck As DWord, uFlags As DWord) As BOOL
Declare Function CheckDlgButton Lib "user32" (hDlg As HWND, nIDButton As Long, uCheck As DWord) As BOOL
Declare Function CheckRadioButton Lib "user32" (hDlg As HWND, nIDFirstButton As Long, nIDLastButton As Long, nIDCheckButton As Long) As BOOL
Declare Function ChildWindowFromPoint Lib "user32" (hWndParent As HWND, x As Long, y As Long) As HWND
Const CWP_ALL =             &H0000
Const CWP_SKIPINVISIBLE =   &H0001
Const CWP_SKIPDISABLED =    &H0002
Const CWP_SKIPTRANSPARENT = &H0004
Declare Function ChildWindowFromPointEx Lib "user32" (hWndParent As HWND, x As Long, y As Long, uFlags As DWord) As HWND

Declare Function ClientToScreen Lib "user32" (hWnd As HWND, ByRef lpPoint As POINTAPI) As BOOL
Declare Function ClipCursor Lib "user32" (ByRef lpRect As RECT) As BOOL
Declare Function CloseClipboard Lib "user32" () As BOOL
Declare Function CloseWindow Lib "user32" (hWnd As HWND) As BOOL
Declare Function CopyImage Lib "user32" (hImage As HANDLE, uType As DWord, cxDesired As Long, cyDesired As Long, fuFlags As DWord) As HANDLE
Declare Function CountClipboardFormats Lib "user32" () As Long
Const FVIRTKEY = &H01
Const FNOINVERT = &H02
Const FSHIFT = &H04
Const FCONTROL = &H08
Const FALT = &H10
Type ACCEL
	fVirt As Byte
	key As Word
	cmd As Word
End Type
Declare Function CreateAcceleratorTable Lib "user32" Alias _FuncName_CreateAcceleratorTable (ByRef acl As ACCEL, i As Long) As HACCEL
Declare Function CreateCaret Lib "user32" (hWnd As HWND, hBitmap As HBITMAP, nWidth As Long, nHeight As Long) As BOOL
Declare Function CreateCursor Lib "user32" (hInst As HINSTANCE, xHotSpot As Long, yHotSpot As Long, nWidth As Long, nHeight As Long, pvANDPlane As VoidPtr, pvXORPlane As VoidPtr) As HCURSOR
Declare Function CreateIcon Lib "user32" (hInst As HINSTANCE, nWidth As Long, nHeight As Long, cPlanes As Byte, cBitsPixel As Byte, lpbANDbits As VoidPtr, lpbXORbits As VoidPtr) As HICON

Type ICONINFO
	fIcon As BOOL
	xHotspot As DWord
	yHotspot As DWord
	hbmMask As HBITMAP
	hbmColor As HBITMAP
End Type
Declare Function CreateIconIndirect Lib "user32" (ByRef pIconInfo As ICONINFO) As HICON

Declare Function CreateMenu Lib "user32" () As HMENU
Declare Function CreatePopupMenu Lib "user32" () As HMENU

Const CW_USEDEFAULT = &H80000000
Declare Function CreateWindowEx Lib "user32" Alias _FuncName_CreateWindowEx (dwExStyle As DWord, pClassName As PCTSTR, lpWindowName As PCTSTR, dwStyle As DWord, x As Long, y As Long, nWidth As Long, nHeight As Long, hwndParent As HWND, hmenu As HMENU, hInstance As HINSTANCE, pParm As VoidPtr) As HWND

Declare Function DefDlgProc Lib "user32" Alias _FuncName_DefWindowProc (hDlg As HWND, Msg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function DefWindowProc Lib "user32" Alias _FuncName_DefWindowProc (hWnd As HWND, wMsg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function DeleteMenu Lib "user32" (hMenu As HMENU, uPosition As DWord, uFlags As DWord) As BOOL
Declare Function DestroyAcceleratorTable Lib "user32" (hAccel As HACCEL) As BOOL
Declare Function DestroyCaret Lib "user32" () As BOOL
Declare Function DestroyCursor Lib "user32" (hCursor As HCURSOR) As BOOL
Declare Function DestroyIcon Lib "user32" (hIcon As HICON) As BOOL
Declare Function DestroyMenu Lib "user32" (hMenu As HMENU) As BOOL
Declare Function DestroyWindow Lib "user32" (hWnd As HWND) As BOOL
Type DLGITEMTEMPLATE
	style As DWord
	dwExtendedStyle As DWord
	x As Integer
	y As Integer
	cx As Integer
	cy As Integer
	id As Word
End Type
Type DLGTEMPLATE
	style As DWord
	dwExtendedStyle As DWord
	cdit As Word
	x As Integer
	y As Integer
	cx As Integer
	cy As Integer
End Type
Declare Function DialogBoxIndirectParam Lib "user32" Alias _FuncName_DialogBoxIndirectParam (hInstance As HINSTANCE, DialogTemplate As *DLGTEMPLATE, hwndParent As HWND, pDialogFunc As DLGPROC, InitParam As LPARAM) As LONG_PTR
Declare Function DispatchMessage Lib "user32" Alias _FuncName_DispatchMessage (ByRef Msg As MSG) As LRESULT
Declare Function DlgDirList Lib "user32" Alias _FuncName_DlgDirList (hDlg As HWND, lpPathSpec As LPTSTR, nIDListBox As Long, nIDStaticPath As Long, uFileType As DWord) As Long
Declare Function DlgDirListComboBox Lib "user32" Alias _FuncName_DlgDirListComboBox (hDlg As HWND, lpPathSpec As LPTSTR, nIDComboBox As Long, nIDStaticPath As Long,uFileType As DWord) As Long
Declare Function DlgDirSelectComboBoxEx Lib "user32" Alias _FuncName_DlgDirSelectComboBoxEx (hDlg As HWND, lpString As LPTSTR, nCount As Long, nIDComboBox As Long) As BOOL
Declare Function DlgDirSelectEx Lib "user32" Alias _FuncName_DlgDirSelectEx (hDlg As HWND, lpString As LPTSTR, nCount As Long, nIDListBox As Long) As BOOL
Const BDR_RAISEDOUTER = &H0001
Const BDR_SUNKENOUTER = &H0002
Const BDR_RAISEDINNER = &H0004
Const BDR_SUNKENINNER = &H0008
Const BDR_OUTER =       &H0003
Const BDR_INNER =       &H000c
Const EDGE_RAISED =     BDR_RAISEDOUTER or BDR_RAISEDINNER
Const EDGE_SUNKEN =     BDR_SUNKENOUTER or BDR_SUNKENINNER
Const EDGE_ETCHED =     BDR_SUNKENOUTER or BDR_RAISEDINNER
Const EDGE_BUMP =       BDR_RAISEDOUTER or BDR_SUNKENINNER
Const BF_LEFT =        &H0001
Const BF_TOP =         &H0002
Const BF_RIGHT =       &H0004
Const BF_BOTTOM =      &H0008
Const BF_TOPLEFT =     BF_TOP or BF_LEFT
Const BF_TOPRIGHT =    BF_TOP or BF_RIGHT
Const BF_BOTTOMLEFT =  BF_BOTTOM or BF_LEFT
Const BF_BOTTOMRIGHT = BF_BOTTOM or BF_RIGHT
Const BF_RECT =        BF_LEFT or BF_TOP or BF_RIGHT or BF_BOTTOM
Const BF_DIAGONAL =    &H0010
Const BF_DIAGONAL_ENDTOPRIGHT =    BF_DIAGONAL or BF_TOP or BF_RIGHT
Const BF_DIAGONAL_ENDTOPLEFT =     BF_DIAGONAL or BF_TOP or BF_LEFT
Const BF_DIAGONAL_ENDBOTTOMLEFT =  BF_DIAGONAL or BF_BOTTOM or BF_LEFT
Const BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL or BF_BOTTOM or BF_RIGHT
Const BF_MIDDLE =     &H0800
Const BF_SOFT =       &H1000
Const BF_ADJUST =     &H2000
Const BF_FLAT =       &H4000
Const BF_MONO =       &H8000
Declare Function DrawEdge Lib "user32" (hdc As HDC, ByRef lpRect As RECT, edge As DWord, grfFlags As DWord) As BOOL

Const DFC_CAPTION =   1
Const DFC_MENU =      2
Const DFC_SCROLL =    3
Const DFC_BUTTON =    4
Const DFC_POPUPMENU = 5
Const DFCS_CAPTIONCLOSE =        &H0000
Const DFCS_CAPTIONMIN =          &H0001
Const DFCS_CAPTIONMAX =          &H0002
Const DFCS_CAPTIONRESTORE =      &H0003
Const DFCS_CAPTIONHELP =         &H0004
Const DFCS_MENUARROW =           &H0000
Const DFCS_MENUCHECK =           &H0001
Const DFCS_MENUBULLET =          &H0002
Const DFCS_MENUARROWRIGHT =      &H0004
Const DFCS_SCROLLUP =            &H0000
Const DFCS_SCROLLDOWN =          &H0001
Const DFCS_SCROLLLEFT =          &H0002
Const DFCS_SCROLLRIGHT =         &H0003
Const DFCS_SCROLLCOMBOBOX =      &H0005
Const DFCS_SCROLLSIZEGRIP =      &H0008
Const DFCS_SCROLLSIZEGRIPRIGHT = &H0010
Const DFCS_BUTTONCHECK =         &H0000
Const DFCS_BUTTONRADIOIMAGE =    &H0001
Const DFCS_BUTTONRADIOMASK =     &H0002
Const DFCS_BUTTONRADIO =         &H0004
Const DFCS_BUTTON3STATE =        &H0008
Const DFCS_BUTTONPUSH =          &H0010
Const DFCS_INACTIVE =            &H0100
Const DFCS_PUSHED =              &H0200
Const DFCS_CHECKED =             &H0400
Const DFCS_TRANSPARENT =         &H0800
Const DFCS_HOT =                 &H1000
Const DFCS_ADJUSTRECT =          &H2000
Const DFCS_FLAT =                &H4000
Const DFCS_MONO =                &H8000
Declare Function DrawFrameControl Lib "user32" (hdc As HDC, ByRef lpRect As RECT, uType As DWord, uState As DWord) As BOOL

Declare Function DrawIcon Lib "user32" (hdc As HDC, x As Long, y As Long, hIcon As HICON) As BOOL

Const DI_MASK =        &H0001
Const DI_IMAGE =       &H0002
Const DI_NORMAL =      &H0003
Const DI_COMPAT =      &H0004
Const DI_DEFAULTSIZE = &H0008
Declare Function DrawIconEx Lib "user32" (hdc As HDC, xLeft As Long, yTop As Long, hIcon As HICON, cxWidth As Long, cyWidth As Long, istepIfAniCur As DWord, hbrFlickerFreeDraw As HBRUSH, diFlags As DWord) As BOOL

Declare Function DrawMenuBar Lib "user32" (hwnd As HWND) As BOOL

Const DT_TOP =            &H00000000
Const DT_LEFT =           &H00000000
Const DT_CENTER =         &H00000001
Const DT_RIGHT =          &H00000002
Const DT_VCENTER =        &H00000004
Const DT_BOTTOM =         &H00000008
Const DT_WORDBREAK =      &H00000010
Const DT_SINGLELINE =     &H00000020
Const DT_EXPANDTABS =     &H00000040
Const DT_TABSTOP =        &H00000080
Const DT_NOCLIP =         &H00000100
Const DT_EXTERNALLEADING =&H00000200
Const DT_CALCRECT =       &H00000400
Const DT_NOPREFIX =       &H00000800
Const DT_INTERNAL =       &H00001000
Const DT_EDITCONTROL =    &H00002000
Const DT_PATH_ELLIPSIS =  &H00004000
Const DT_END_ELLIPSIS =   &H00008000
Const DT_MODIFYSTRING =   &H00010000
Const DT_RTLREADING =     &H00020000
Const DT_WORD_ELLIPSIS =  &H00040000
Declare Function DrawText Lib "user32" Alias _FuncName_DrawText (hdc As HDC, lpStr As PCTSTR, nCount As Long, ByRef Rect As RECT, dwFormat As DWord) As BOOL

Type DRAWTEXTPARAMS
	cbSize As DWord
	iTabLength As Long
	iLeftMargin As Long
	iRightMargin As Long
	uiLengthDrawn As DWord
End Type
Declare Function DrawTextEx Lib "user32" Alias _FuncName_DrawTextEx (hdc As HDC, pchText As PCTSTR, cchText As Long, ByRef Rect As RECT, dwDTFormat As DWord, ByRef DTParams As DRAWTEXTPARAMS) As BOOL

Declare Function EmptyClipboard Lib "user32" () As BOOL
Declare Function EnableMenuItem Lib "user32" (hMenu As HMENU, uIDEnableItem As DWord, uEnable As DWord) As BOOL

Const ESB_ENABLE_BOTH =   &H0000
Const ESB_DISABLE_BOTH =  &H0003
Const ESB_DISABLE_LEFT =  &H0001
Const ESB_DISABLE_RIGHT = &H0002
Const ESB_DISABLE_UP =    &H0001
Const ESB_DISABLE_DOWN =  &H0002
Const ESB_DISABLE_LTUP =  ESB_DISABLE_LEFT
Const ESB_DISABLE_RTDN =  ESB_DISABLE_RIGHT
Declare Function EnableScrollBar Lib "user32" (hWnd As HWND, dwSBflags As DWord, dwArrows As DWord) As BOOL

Declare Function EnableWindow Lib "user32" (hWnd As HWND, bEnable As BOOL) As BOOL
Declare Function EndDialogAPI Lib "user32" Alias "EndDialog" (hwndDlg As HWND, nRet As Long) As BOOL
Declare Function EndPaint Lib "user32" (hWnd As HWND, ByRef lpPaint As PAINTSTRUCT) As BOOL
Declare Function EnumClipboardFormats Lib "user32" (uFormat As DWord) As DWord
Declare Function EnumChildWindows Lib "user32" (hwndParent As HWND, pEnumFunc As WNDENUMPROC, lParam As LPARAM) As BOOL
Declare Function EnumDisplayMonitors Lib "user32.dll" (ByVal hdc As HDC, lprcClip As *RECT, ByVal lpfnEnum As MONITORENUMPROC, dwData As LPARAM) As BOOL
Declare Function EnumThreadWindows Lib "user32" (dwThreadId As DWord, pEnumFunc As WNDENUMPROC, lParam As LPARAM) As BOOL
Declare Function EnumWindows Lib "user32" (pEnumFunc As WNDENUMPROC, lParam As LPARAM) As BOOL
Declare Function ExitWindowsEx Lib "user32" (uFlags As DWord, dwReserved As DWord) As BOOL
Declare Function FillRect Lib "user32" (hdc As HDC, ByRef lpRect As RECT, hBrush As HBRUSH) As BOOL
Declare Function FindWindow Lib "user32" Alias _FuncName_FindWindow (pClassName As PCTSTR, lpWindowName As PCTSTR) As HWND
Declare Function FindWindowEx Lib "user32" Alias _FuncName_FindWindowEx (hwndParent As HWND, hwndChildAfter As HWND, pszClass As PCTSTR, pszWindow As PCTSTR) As HWND
Declare Function FlashWindow Lib "user32" (hWnd As HWND, bInvert As BOOL) As BOOL
Const FLASHW_STOP = 0
Const FLASHW_CAPTION = 1
Const FLASHW_TRAY = 2
Const FLASHW_ALL = (FLASHW_CAPTION Or FLASHW_TRAY)
Const FLASHW_TIMER = 4
Const FLASHW_TIMERNOFG = 12
Type FLASHWINFO
	cbSize As DWord
	hWnd As HWND
	dwFlags As DWord
	uCount As DWord
	dwTimeout As DWord
End Type
Declare Function FlashWindowEx Lib "user32" (ByRef fwi As FLASHWINFO) As Long
Declare Function FrameRect Lib "user32" (hdc As HDC, ByRef lpRect As RECT, hBrush As HBRUSH) As Long
Declare Function GetActiveWindow Lib "user32" () As HWND
Declare Function GetAsyncKeyState Lib "user32" (vKey As Long) As Integer
Declare Function GetCapture Lib "user32" () As HWND
Declare Function GetCaretPos Lib "user32" (ByRef lpPoint As POINTAPI) As BOOL
Declare Function GetClassInfoEx Lib "user32" Alias _FuncName_GetClassInfoEx (hInst As HINSTANCE, pszClass As PCTSTR, ByRef lpwcx As WNDCLASSEX) As BOOL

Const GCL_MENUNAME =      -8
Const GCL_HBRBACKGROUND = -10
Const GCL_HCURSOR =       -12
Const GCL_HICON =         -14
Const GCL_HMODULE =       -16
Const GCL_CBWNDEXTRA =    -18
Const GCL_CBCLSEXTRA =    -20
Const GCL_WNDPROC =       -24
Const GCL_STYLE =         -26
Const GCW_ATOM =          -32
Const GCL_HICONSM =       -34
#ifdef _WIN64
Declare Function GetClassLong Lib "user32" Alias _FuncName_GetClassLongPtr (hWnd As HWND, nIndex As Long) As LONG_PTR
Declare Function GetClassLongPtr Lib "user32" Alias _FuncName_GetClassLongPtr (hWnd As HWND, nIndex As Long) As LONG_PTR
#else
Declare Function GetClassLong Lib "user32" Alias _FuncName_GetClassLong (hWnd As HWND, nIndex As Long) As LONG_PTR
Declare Function GetClassLongPtr Lib "user32" Alias _FuncName_GetClassLong (hWnd As HWND, nIndex As Long) As LONG_PTR
#endif

Declare Function GetClassName Lib "user32" Alias _FuncName_GetClassName (hWnd As HWND, lpClassName As PTSTR, nMaxCount As Long) As Long
Declare Function GetClientRect Lib "user32" (hWnd As HWND, ByRef lpRect As RECT) As BOOL
Declare Function GetClipboardData Lib "user32" (uFormat As DWord) As HANDLE
Declare Function GetClipboardFormatName Lib "user32" Alias _FuncName_GetClipboardFormatName (uFormat As DWord, pszFormatName As PTSTR, cchMaxCount As Long) As BOOL
Declare Function GetClipboardOwner Lib "user32" () As HWND
Declare Function GetClipboardViewer Lib "user32" () As HWND
Declare Function GetClipCursor Lib "user32" (ByRef lpRect As RECT) As BOOL
Declare Function GetCursor Lib "user32" () As HCURSOR
Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As BOOL
Declare Function GetDC Lib "user32" (hWnd As HWND) As HDC

Const DCX_WINDOW =           &H00000001
Const DCX_CACHE =            &H00000002
Const DCX_NORESETATTRS =     &H00000004
Const DCX_CLIPCHILDREN =     &H00000008
Const DCX_CLIPSIBLINGS =     &H00000010
Const DCX_PARENTCLIP =       &H00000020
Const DCX_EXCLUDERGN =       &H00000040
Const DCX_INTERSECTRGN =     &H00000080
Const DCX_EXCLUDEUPDATE =    &H00000100
Const DCX_INTERSECTUPDATE =  &H00000200
Const DCX_LOCKWINDOWUPDATE = &H00000400
Const DCX_VALIDATE =         &H00200000
Declare Function GetDCEx Lib "user32" (hWnd As HWND, hrgnClip As HRGN, dwFlags As DWord) As HDC

Declare Function GetDesktopWindow Lib "user32" () As HWND
Declare Function GetDialogBaseUnits Lib "user32" () As Long
Declare Function GetDlgCtrlID Lib "user32" (hWnd As HWND) As Long
Declare Function GetDlgItem Lib "user32" (hDlg As HWND, nIDDlgItem As Long) As HWND
Declare Function GetDlgItemInt Lib "user32" (hDlg As HWND, nIDDlgItem As Long, lpTranslated As *BOOL, bSigned As BOOL) As DWord
Declare Function GetDlgItemText Lib "user32" Alias _FuncName_GetDlgItemText (hDlg As HWND, nIDDlgItem As Long, pString As PTSTR, nMaxCount As Long) As Long
Declare Function GetDoubleClickTime Lib "user32" () As DWord
Declare Function GetFocus Lib "user32" () As HWND
Declare Function GetForegroundWindow Lib "user32" () As HWND
Declare Function GetIconInfo Lib "user32" (hIcon As HICON, ByRef pIconInfo As ICONINFO) As Long
Declare Function GetKeyboardState Lib "user32" (lpKeyState As *Byte) As BOOL
Declare Function GetKeyState Lib "user32" (nVirtKey As Long) As Integer
Declare Function GetListBoxInfo Lib "user32" (ByVal hwnd As HWND) As DWord
Declare Function GetMenu Lib "user32" (hWnd As HWND) As HMENU

Declare Function GetMenuContextHelpId Lib "user32" (hmenu As HMENU) As DWord
Const GMDI_USEDISABLED  = &H0001
Const GMDI_GOINTOPOPUPS = &H0002
Declare Function GetMenuDefaultItem Lib "user32" (hMenu As HMENU, fByPos As DWord, gmdiFlags As DWord) As DWord

Declare Function GetMenuItemID Lib "user32" (hMenu As HMENU, nPos As Long) As DWord
Declare Function GetMenuItemCount Lib "user32" (hMenu As HMENU) As Long
Declare Function GetMenuItemInfo Lib "user32" Alias _FuncName_GetMenuItemInfo (hMenu As HMENU, uItem As DWord, fByPosition As DWord, ByRef mii As MENUITEMINFO) As BOOL
Declare Function GetMessage Lib "user32" Alias _FuncName_GetMessage (ByRef Msg As MSG, hWnd As HWND, wMsgFilterMin As DWord, wMsgFilterMax As DWord) As Long
Const CCHDEVICENAME = 32
Type MONITORINFO
	cbSize As DWord
	rcMonitor As RECT
	rcWork As RECT
	dwFlags As DWord
End Type
Type MONITORINFOEXA
	cbSize As DWord
	rcMonitor As RECT
	rcWork As RECT
	dwFlags As DWord
	szDevice[ELM(CCHDEVICENAME)] As SByte
End Type
Type MONITORINFOEXW
	cbSize As DWord
	rcMonitor As RECT
	rcWork As RECT
	dwFlags As DWord
	szDevice[ELM(CCHDEVICENAME)] As WCHAR
End Type
Declare Function GetMonitorInfo Lib "user32.dll" Alias _FuncName_GetMonitorInfo (hMonitor As HMONITOR, ByRef mi As Any /*MONITORINFO*/) As BOOL
Declare Function GetNextDlgGroupItem Lib "user32" (hDlg As HWND, hCtl As HWND, bPrevious As BOOL) As HWND
Declare Function GetNextDlgTabItem Lib "user32" (hDlg As HWND, hCtl As HWND, bPrevious As BOOL) As HWND
Declare Function GetOpenClipboardWindow Lib "user32" () As HWND
Declare Function GetParent Lib "user32" (hWnd As HWND) As HWND
Declare Function GetPriorityClipboardFormat Lib "user32" (lpFormatList As *DWord, FormatNum As Long) As Long
Declare Function GetProp Lib "user32" Alias _FuncName_GetProp (hWnd As HWND, pString As PCTSTR) As HANDLE
Declare Function GetScrollInfo Lib "user32" (hWnd As HWND, fnBar As Long, ByRef lpsi As SCROLLINFO) As BOOL
Declare Function GetSubMenu Lib "user32" (hMenu As HMENU, nPos As Long) As HMENU

Const COLOR_SCROLLBAR =               0
Const COLOR_BACKGROUND =              1
Const COLOR_ACTIVECAPTION =           2
Const COLOR_INACTIVECAPTION =         3
Const COLOR_MENU =                    4
Const COLOR_WINDOW =                  5
Const COLOR_WINDOWFRAME =             6
Const COLOR_MENUTEXT =                7
Const COLOR_WINDOWTEXT =              8
Const COLOR_CAPTIONTEXT =             9
Const COLOR_ACTIVEBORDER =            10
Const COLOR_INACTIVEBORDER =          11
Const COLOR_APPWORKSPACE =            12
Const COLOR_HIGHLIGHT =               13
Const COLOR_HIGHLIGHTTEXT =           14
Const COLOR_BTNFACE =                 15
Const COLOR_BTNSHADOW =               16
Const COLOR_GRAYTEXT =                17
Const COLOR_BTNTEXT =                 18
Const COLOR_INACTIVECAPTIONTEXT =     19
Const COLOR_BTNHIGHLIGHT =            20
Const COLOR_3DDKSHADOW =              21
Const COLOR_3DLIGHT =                 22
Const COLOR_INFOTEXT =                23
Const COLOR_INFOBK =                  24
Const COLOR_HOTLIGHT =                26
Const COLOR_GRADIENTACTIVECAPTION =   27
Const COLOR_GRADIENTINACTIVECAPTION = 28
Const COLOR_DESKTOP =                 COLOR_BACKGROUND
Const COLOR_3DFACE =                  COLOR_BTNFACE
Const COLOR_3DSHADOW =                COLOR_BTNSHADOW
Const COLOR_3DHIGHLIGHT =             COLOR_BTNHIGHLIGHT
Const COLOR_3DHILIGHT =               COLOR_BTNHIGHLIGHT
Const COLOR_BTNHILIGHT =              COLOR_BTNHIGHLIGHT
Declare Function GetSysColor Lib "user32" (nIndex As Long) As DWord
Declare Function GetSysColorBrush Lib "user32" (nIndex As Long) As HBRUSH

Declare Function GetSystemMenu Lib "user32" (hWnd As HWND, bRevert As BOOL) As HMENU

Const SM_CXSCREEN =           0
Const SM_CYSCREEN =           1
Const SM_CXVSCROLL =          2
Const SM_CYHSCROLL =          3
Const SM_CYCAPTION =          4
Const SM_CXBORDER =           5
Const SM_CYBORDER =           6
Const SM_CXDLGFRAME =         7
Const SM_CYDLGFRAME =         8
Const SM_CYVTHUMB =           9
Const SM_CXHTHUMB =           10
Const SM_CXICON =             11
Const SM_CYICON =             12
Const SM_CXCURSOR =           13
Const SM_CYCURSOR =           14
Const SM_CYMENU =             15
Const SM_CXFULLSCREEN =       16
Const SM_CYFULLSCREEN =       17
Const SM_CYKANJIWINDOW =      18
Const SM_MOUSEPRESENT =       19
Const SM_CYVSCROLL =          20
Const SM_CXHSCROLL =          21
Const SM_DEBUG =              22
Const SM_SWAPBUTTON =         23
Const SM_RESERVED1 =          24
Const SM_RESERVED2 =          25
Const SM_RESERVED3 =          26
Const SM_RESERVED4 =          27
Const SM_CXMIN =              28
Const SM_CYMIN =              29
Const SM_CXSIZE =             30
Const SM_CYSIZE =             31
Const SM_CXFRAME =            32
Const SM_CYFRAME =            33
Const SM_CXMINTRACK =         34
Const SM_CYMINTRACK =         35
Const SM_CXDOUBLECLK =        36
Const SM_CYDOUBLECLK =        37
Const SM_CXICONSPACING =      38
Const SM_CYICONSPACING =      39
Const SM_MENUDROPALIGNMENT =  40
Const SM_PENWINDOWS =         41
Const SM_DBCSENABLED =        42
Const SM_CMOUSEBUTTONS =      43
Const SM_CXFIXEDFRAME =       SM_CXDLGFRAME
Const SM_CYFIXEDFRAME =       SM_CYDLGFRAME
Const SM_CXSIZEFRAME =        SM_CXFRAME
Const SM_CYSIZEFRAME =        SM_CYFRAME
Const SM_SECURE =             44
Const SM_CXEDGE =             45
Const SM_CYEDGE =             46
Const SM_CXMINSPACING =       47
Const SM_CYMINSPACING =       48
Const SM_CXSMICON =           49
Const SM_CYSMICON =           50
Const SM_CYSMCAPTION =        51
Const SM_CXSMSIZE =           52
Const SM_CYSMSIZE =           53
Const SM_CXMENUSIZE =         54
Const SM_CYMENUSIZE =         55
Const SM_ARRANGE =            56
Const SM_CXMINIMIZED =        57
Const SM_CYMINIMIZED =        58
Const SM_CXMAXTRACK =         59
Const SM_CYMAXTRACK =         60
Const SM_CXMAXIMIZED =        61
Const SM_CYMAXIMIZED =        62
Const SM_NETWORK =            63
Const SM_CLEANBOOT =          67
Const SM_CXDRAG =             68
Const SM_CYDRAG =             69
Const SM_SHOWSOUNDS =         70
Const SM_CXMENUCHECK =        71
Const SM_CYMENUCHECK =        72
Const SM_SLOWMACHINE =        73
Const SM_MIDEASTENABLED =     74
Const SM_MOUSEWHEELPRESENT =  75
Declare Function GetSystemMetrics Lib "user32" (nIndex As Long) As Long

Declare Function GetUpdateRect Lib "user32" (hWnd As HWND, ByRef lpRect As RECT, bErase As BOOL) As BOOL
Declare Function GetUpdateRgn Lib "user32" (hWnd As HWND, hRgn As HRGN, bErase As BOOL) As BOOL

Const GW_HWNDFIRST =      0
Const GW_HWNDLAST =       1
Const GW_HWNDNEXT =       2
Const GW_HWNDPREV =       3
Const GW_OWNER =          4
Const GW_CHILD =          5
Declare Function GetWindow Lib "user32" (hWnd As HWND, uCmd As DWord) As HWND

Declare Function GetWindowContextHelpId Lib "user32" (hwnd As HWND) As DWord

Declare Function GetWindowDC Lib "user32" (hWnd As HWND) As HDC

#ifndef _WIN64
Const GWL_WNDPROC =       -4
Const GWL_HINSTANCE =     -6
Const GWL_HWNDPARENT =    -8
Const GWL_USERDATA =      -21
Const GWL_ID =            -12
#endif

Const GWL_STYLE =         -16
Const GWL_EXSTYLE =       -20

Const GWLP_WNDPROC =      -4
Const GWLP_HINSTANCE =    -6
Const GWLP_HWNDPARENT =   -8
Const GWLP_USERDATA =     -21
Const GWLP_ID =           -12


#ifdef _WIN64
Declare Function GetWindowLong Lib "user32" Alias _FuncName_GetWindowLongPtr (hWnd As HWND, nIndex As Long) As LONG_PTR
Declare Function GetWindowLongPtr Lib "user32" Alias _FuncName_GetWindowLongPtr (hWnd As HWND, nIndex As Long) As LONG_PTR
#else
Declare Function GetWindowLong Lib "user32" Alias _FuncName_GetWindowLong (hWnd As HWND, nIndex As Long) As LONG_PTR
Declare Function GetWindowLongPtr Lib "user32" Alias _FuncName_GetWindowLong (hWnd As HWND, nIndex As Long) As LONG_PTR
#endif
Declare Function GetWindowModuleFileName Lib "user32" Alias _FuncName_GetWindowModuleFileName (hwnd As HWND, pszFileName As LPTSTR, cchFileNameMax As DWord) As DWord

Const WPF_SETMINPOSITION =     &H0001
Const WPF_RESTORETOMAXIMIZED = &H0002
Type WINDOWPLACEMENT
	length As DWord
	flags As DWord
	showCmd As DWord
	ptMinPosition As POINTAPI
	ptMaxPosition As POINTAPI
	rcNormalPosition As RECT
End Type
Declare Function GetWindowPlacement Lib "user32" (hWnd As HWND, ByRef lpwndpl As WINDOWPLACEMENT) As BOOL

Declare Function GetWindowRect Lib "user32" (hWnd As HWND, ByRef lpRect As RECT) As BOOL
Declare Function GetWindowRgn Lib "user32" (hWnd As HWND, hRgn As HRGN) As Long
Declare Function GetWindowText Lib "user32" Alias _FuncName_GetWindowText (hWnd As HWND, lpString As PTSTR, nMaxCount As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias _FuncName_GetWindowTextLength (hWnd As HWND) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (hWnd As HWND, pdwProcessId As *DWord) As DWord
Declare Function HideCaret Lib "user32" (hWnd As HWND) As BOOL
Declare Function InsertMenuItem Lib "user32" Alias _FuncName_InsertMenuItem (hMenu As HMENU, uItem As DWord, fByPosition As BOOL, ByRef mii As MENUITEMINFO) As BOOL
Declare Function InvalidateRect Lib "user32" (hWnd As HWND, ByRef Rect As RECT, bErase As BOOL) As BOOL
Declare Function InvalidateRgn Lib "user32" (hWnd As HWND, hRgn As HRGN, bErase As BOOL) As BOOL
Declare Function InvertRect Lib "user32" (hdc As HDC, ByRef lpRect As RECT) As BOOL
Declare Function IsCharAlpha Lib "user32" Alias _FuncName_IsCharAlpha (ch As TCHAR) As BOOL
Declare Function IsCharAlphaNumeric Lib "user32" Alias _FuncName_IsCharAlphaNumeric (ch As TCHAR) As BOOL
Declare Function IsCharLower Lib "user32" Alias _FuncName_IsCharLower (ch As TCHAR) As BOOL
Declare Function IsCharUpper Lib "user32" Alias _FuncName_IsCharUpper (ch As TCHAR) As BOOL
Declare Function IsChild Lib "user32" (hWndParent As HWND, hWnd As HWND) As BOOL
Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As DWord) As BOOL
Declare Function IsDialogMessage Lib "user32" Alias _FuncName_IsDialogMessage (hDlg As HWND, ByRef msg As MSG) As BOOL
Declare Function IsDlgButtonChecked Lib "user32" (hDlg As HWND, nIDButton As Long) As DWord
Declare Function IsIconic Lib "user32" (hWnd As HWND) As BOOL
Declare Function IsWindow Lib "user32" (hWnd As HWND) As BOOL
Declare Function IsWindowEnabled Lib "user32" (hWnd As HWND) As BOOL
Declare Function IsWindowUnicode Lib "user32" (hWnd As HWND) As BOOL
Declare Function IsWindowVisible Lib "user32" (hWnd As HWND) As BOOL
Declare Function IsZoomed Lib "user32" (hWnd As HWND) As BOOL

Const KEYEVENTF_EXTENDEDKEY = &H0001
Const KEYEVENTF_KEYUP       = &H0002
Declare Sub keybd_event Lib "user32" (bVk As Byte, bScan As Byte, dwFlags As DWord, dwExtraInfo As DWord)

Declare Function KillTimer Lib "user32" (hWnd As HWND, nIDEvent As ULONG_PTR) As BOOL
Declare Function LoadBitmap Lib "user32" Alias _FuncName_LoadBitmap (hInst As HINSTANCE, pBitmapName As PCTSTR) As HBITMAP

Const IDC_ARROW =         32512
Const IDC_IBEAM =         32513
Const IDC_WAIT =          32514
Const IDC_CROSS =         32515
Const IDC_UPARROW =       32516
Const IDC_SIZE =          32640
Const IDC_ICON =          32641
Const IDC_SIZENWSE =      32642
Const IDC_SIZENESW =      32643
Const IDC_SIZEWE =        32644
Const IDC_SIZENS =        32645
Const IDC_SIZEALL =       32646
Const IDC_NO =            32648
Const IDC_HAND =          32649
Const IDC_APPSTARTING =   32650
Const IDC_HELP =          32651
Declare Function LoadCursor Lib "user32" Alias _FuncName_LoadCursor (hInst As HINSTANCE, pCursorName As PCTSTR) As HCURSOR

Declare Function LoadCursorFromFile Lib "user32" Alias _FuncName_LoadCursorFromFile (pFileName As PCTSTR) As HCURSOR

Const IDI_APPLICATION =   32512
Const IDI_HAND =          32513
Const IDI_QUESTION =      32514
Const IDI_EXCLAMATION =   32515
Const IDI_ASTERISK =      32516
Const IDI_WINLOGO =       32517
Declare Function LoadIcon Lib "user32" Alias _FuncName_LoadIcon (hInst As HINSTANCE, pIconName As PCTSTR) As HICON

Const IMAGE_BITMAP =      0
Const IMAGE_ICON =        1
Const IMAGE_CURSOR =      2
Const IMAGE_ENHMETAFILE = 3
Const LR_DEFAULTCOLOR =     &H0000
Const LR_MONOCHROME =       &H0001
Const LR_COLOR =            &H0002
Const LR_COPYRETURNORG =    &H0004
Const LR_COPYDELETEORG =    &H0008
Const LR_LOADFROMFILE =     &H0010
Const LR_LOADTRANSPARENT =  &H0020
Const LR_DEFAULTSIZE =      &H0040
Const LR_VGACOLOR =         &H0080
Const LR_LOADMAP3DCOLORS =  &H1000
Const LR_CREATEDIBSECTION = &H2000
Const LR_COPYFROMRESOURCE = &H4000
Const LR_SHARED =           &H8000
Declare Function LoadImage Lib "user32" Alias _FuncName_LoadImage (hinst As HINSTANCE, pszName As PCTSTR, dwImageType As DWord, cxDesired As Long, cyDesired As Long, dwFlags As DWord) As HANDLE
Declare Function LoadString Lib "user32" Alias _FuncName_LoadString (hInstance As HINSTANCE, uID As DWord, lpBuffer As LPTSTR, nBufferMax As Long) As Long
Declare Function LockWindowUpdate Lib "user32" (hWnd As HWND) As BOOL
Declare Function MapVirtualKey Lib "user32" Alias _FuncName_MapVirtualKey (wCode As DWord, wMapType As DWord) As DWord
Declare Function MapWindowPoints Lib "user32" (
	hWndFrom As HWND,
	hWndTo As HWND,
	pPoints As *POINTAPI,
	cPoints As DWord) As Long
Declare Function MessageBeep Lib "user32" (uType As DWord) As BOOL

Const MB_OK =                     &H00000000
Const MB_OKCANCEL =               &H00000001
Const MB_ABORTRETRYIGNORE =       &H00000002
Const MB_YESNOCANCEL =            &H00000003
Const MB_YESNO =                  &H00000004
Const MB_RETRYCANCEL =            &H00000005
Const MB_ICONHAND =               &H00000010
Const MB_ICONQUESTION =           &H00000020
Const MB_ICONEXCLAMATION =        &H00000030
Const MB_ICONASTERISK =           &H00000040
Const MB_USERICON =               &H00000080
Const MB_ICONWARNING =            MB_ICONEXCLAMATION
Const MB_ICONERROR =              MB_ICONHAND
Const MB_ICONINFORMATION =        MB_ICONASTERISK
Const MB_ICONSTOP =               MB_ICONHAND
Const MB_DEFBUTTON1 =             &H00000000
Const MB_DEFBUTTON2 =             &H00000100
Const MB_DEFBUTTON3 =             &H00000200
Const MB_DEFBUTTON4 =             &H00000300
Const MB_APPLMODAL =              &H00000000
Const MB_SYSTEMMODAL =            &H00001000
Const MB_TASKMODAL =              &H00002000
Const MB_HELP =                   &H00004000
Const MB_NOFOCUS =                &H00008000
Const MB_SETFOREGROUND =          &H00010000
Const MB_DEFAULT_DESKTOP_ONLY =   &H00020000
Const MB_TOPMOST =                &H00040000
Const MB_RIGHT =                  &H00080000
Const MB_RTLREADING =             &H00100000
Const MB_SERVICE_NOTIFICATION =   &H00200000
#ifdef UNICODE
Declare Function MessageBox Lib "user32" Alias "MessageBoxW" (hwnd As HWND, pText As PCWSTR, pCaption As PCWSTR, uType As DWord) As Long
#else
Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (hwnd As HWND, pText As PCSTR, pCaption As PCSTR, uType As DWord) As Long
#endif
Declare Function MessageBoxW Lib "user32" (hWnd As HWND, pText As PCWSTR, pCaption As PCWSTR, uType As DWord) As Long
Declare Function MessageBoxA Lib "user32" (hWnd As HWND, pText As PCSTR, pCaption As PCSTR, uType As DWord) As Long
Const MOUSEEVENTF_MOVE =       &H0001
Const MOUSEEVENTF_LEFTDOWN =   &H0002
Const MOUSEEVENTF_LEFTUP =     &H0004
Const MOUSEEVENTF_RIGHTDOWN =  &H0008
Const MOUSEEVENTF_RIGHTUP =    &H0010
Const MOUSEEVENTF_MIDDLEDOWN = &H0020
Const MOUSEEVENTF_MIDDLEUP =   &H0040
Const MOUSEEVENTF_WHEEL =      &H0800
Const MOUSEEVENTF_ABSOLUTE =   &H8000
Declare Sub mouse_event Lib "user32" (dwFlags As DWord, dx As DWord, dy As DWord, dwData As DWord, dwExtraInfo As DWord)

Declare Function MoveWindow Lib "user32" (hWnd As HWND, x As Long, y As Long, nWidth As Long, nHight As Long, bRepaint As BOOL) As BOOL
Declare Function OpenClipboard Lib "user32" (hWndNewOwner As HWND) As BOOL
Declare Function OpenIcon Lib "user32" (hWnd As HWND) As BOOL

Const PM_NOREMOVE = &H0000
Const PM_REMOVE =   &H0001
Declare Function PeekMessage Lib "user32" Alias _FuncName_PeekMessage (ByRef Msg As MSG, hWnd As HWND, wMsgFilterMin As DWord, wMsgFilterMax As DWord, wRemoveMsg As DWord) As BOOL

Const HWND_BROADCAST = &HFFFF
Declare Function PostMessage Lib "user32" Alias _FuncName_PostMessage (hWnd As HWND, wMsg As DWord, wParam As WPARAM, lParam As LPARAM) As BOOL

Declare Sub PostQuitMessage Lib "user32" (nExitCode As Long)
Declare Function PostThreadMessage Lib "user32" Alias _FuncName_PostThreadMessage (idThread As DWord, Msg As DWord, wParam As WPARAM, lParam As LPARAM) As BOOL
Declare Function RealChildWindowFromPoint Lib "user32" (hwndParent As HWND, xPoint As Long, yPoint As Long) As HWND

Const RDW_INVALIDATE =        &H0001
Const RDW_INTERNALPAINT =     &H0002
Const RDW_ERASE =             &H0004
Const RDW_VALIDATE =          &H0008
Const RDW_NOINTERNALPAINT =   &H0010
Const RDW_NOERASE =           &H0020
Const RDW_NOCHILDREN =        &H0040
Const RDW_ALLCHILDREN =       &H0080
Const RDW_UPDATENOW =         &H0100
Const RDW_ERASENOW =          &H0200
Const RDW_FRAME =             &H0400
Const RDW_NOFRAME =           &H0800
Declare Function RedrawWindow Lib "user32" (hWnd As HWND, ByRef lprcUpdate As RECT, hrgnUpdate As HRGN, flags As DWord) As BOOL

Declare Function RegisterClassEx Lib "user32" Alias _FuncName_RegisterClassEx (ByRef wcx As WNDCLASSEX) As ATOM
Declare Function RegisterClipboardFormat Lib "user32" Alias _FuncName_RegisterClipboardFormat (pszFormat As PCTSTR) As DWord
Declare Function RegisterHotKey lib "user32.dll" (hwnd As HWND, id As Long, dwModufuers As DWord, vk As DWord) As BOOL
Declare Function RegisterWindowMessage Lib "user32" Alias _FuncName_RegisterWindowMessage (pString As PCTSTR) As DWord
Declare Function ReleaseCapture Lib "user32" () As BOOL
Declare Function ReleaseDC Lib "user32" (hWnd As HWND, hdc As HDC) As BOOL
Declare Function RemoveMenu Lib "user32" (hMenu As HMENU, uPosition As DWord, uFlags As DWord) As BOOL
Declare Function RemoveProp Lib "user32" Alias _FuncName_RemoveProp (hWnd As HWND, pString As PCTSTR) As HANDLE
Declare Function TranslateAccelerator Lib "user32" Alias _FuncName_TranslateAccelerator (hwnd As HWND, hAccTable As HACCEL, ByRef msg As MSG) As Long
Declare Function TranslateMessage Lib "user32" (ByRef msg As MSG) As Long
Declare Function ScreenToClient Lib "user32" (hWnd As HWND, ByRef Point As POINTAPI) As BOOL
Declare Function ScrollDC Lib "user32" (hdc As HDC, dx As Long, dy As Long, ByRef rcScroll As RECT, ByRef rcClip As RECT, hrgnUpdate As HRGN, ByRef rcUpdate As RECT) As BOOL

Const SW_SCROLLCHILDREN = &H0001
Const SW_INVALIDATE =     &H0002
Const SW_ERASE =          &H0004
Declare Function ScrollWindowEx Lib "user32" (hWnd As HWND, dx As Long, dy As Long, ByRef rcScroll As RECT, ByRef rcClip As RECT, hrgnUpdate As HRGN, ByRef rcUpdate As RECT, flags As DWord) As BOOL

Declare Function SendDlgItemMessage Lib "user32" Alias _FuncName_SendDlgItemMessage (hDlg As HWND, nIDDlgItem As Long, Msg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function SendMessage Lib "user32" Alias _FuncName_SendMessage (hWnd As HWND, wMsg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function SendNotifyMessage Lib "user32" Alias _FuncName_SendNotifyMessage (hWnd As HWND, wMsg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function SetActiveWindow Lib "user32" (hWnd As HWND) As HWND
Declare Function SetDlgItemInt Lib "user32" (hDlg As HWND, nIDDlgItem As Long, uValue As DWord, bSigned As BOOL) As BOOL
Declare Function SetDlgItemText Lib "user32" Alias _FuncName_SetDlgItemText (hDlg As HWND, nIDDlgItem As Long, lpString As PCTSTR) As BOOL
Declare Function SetCapture Lib "user32" (hWnd As HWND) As HWND
Declare Function SetCaretPos Lib "user32" (x As Long, y As Long) As BOOL

#ifdef _WIN64
Declare Function SetClassLong Lib "user32" Alias _FuncName_SetClassLongPtr (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
Declare Function SetClassLongPtr Lib "user32" Alias _FuncName_SetClassLongPtr (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
#else
Declare Function SetClassLong Lib "user32" Alias _FuncName_SetClassLong (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
Declare Function SetClassLongPtr Lib "user32" Alias _FuncName_SetClassLong (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
#endif

Declare Function SetClipboardData Lib "user32" (uFormat As DWord, hMem As HANDLE) As HANDLE
Declare Function SetClipboardViewer Lib "user32" (ByVal hWndNewViewer As HWND) As HWND
Declare Function SetCursor Lib "user32" (hCursor As HCURSOR) As HCURSOR
Declare Function SetCursorPos Lib "user32" (x As Long, y As Long) As BOOL
Declare Function SetDoubleClickTime Lib "user32" (uInterval As DWord) As BOOL
Declare Function SetFocus Lib "user32" (hWnd As HWND) As HWND
Declare Function SetForegroundWindow Lib "user32" (hWnd As HWND) As BOOL
Declare Function SetKeyboardState Lib "user32" (lpKeyState As *Byte) As BOOL
Declare Function SetMenu Lib "user32" (hWnd As HWND, hMenu As HMENU) As BOOL
Declare Function SetMenuContextHelpId Lib "user32" (hmenu As HMENU, dwContextHelpId As DWord) As BOOL
Declare Function SetMenuDefaultItem Lib "user32" (hMenu As HMENU, uItem As DWord, fByPos As DWord) As BOOL
Declare Function SetMenuItemInfo Lib "user32" Alias _FuncName_SetMenuItemInfo (hMenu As HMENU, uItem As DWord, fByPosition As BOOL, ByRef mii As MENUITEMINFO) As BOOL
Declare Function SetParent Lib "user32" (hWndChild As HWND, hWndNewParent As HWND) As HWND
Declare Function SetProp Lib "user32" Alias _FuncName_SetProp (hWnd As HWND, pString As PCTSTR, hData As HANDLE) As BOOL
Declare Function SetRect Lib "User32" (ByRef rc As RECT, xLeft As Long, yTop As Long, xRight As Long, yBottom As Long) As Long
Declare Function SetScrollInfo Lib "user32" (hWnd As HWND, fnBar As Long, ByRef lpsi As SCROLLINFO, bRedraw As Long) As BOOL
Declare Function SetSysColors Lib "user32" (cElements As Long, lpaElements As *DWord, lpaRgbValues As *DWord) As BOOL

TypeDef TIMERPROC = *Sub(hwnd As HWND, msg As DWord, idEvent As ULONG_PTR, dwTime As DWord)
Declare Function SetTimer Lib "user32" (hWnd As HWND, nIDEvent As ULONG_PTR, nElapse As DWord, lpTimerFunc As TIMERPROC) As ULONG_PTR

Declare Function SetWindowContextHelpId Lib "user32"(hwnd As HWND, dwContextHelpId As DWord) As BOOL
#ifdef _WIN64
Declare Function SetWindowLong Lib "user32" Alias _FuncName_SetWindowLongPtr (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
Declare Function SetWindowLongPtr Lib "user32" Alias _FuncName_SetWindowLongPtr (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
#else
Declare Function SetWindowLong Lib "user32" Alias _FuncName_SetWindowLong (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
Declare Function SetWindowLongPtr Lib "user32" Alias _FuncName_SetWindowLong (hWnd As HWND, nIndex As Long, NewLong As LONG_PTR) As LONG_PTR
#endif

Declare Function SetWindowPlacement Lib "user32" (hWnd As HWND, ByRef lpwndpl As WINDOWPLACEMENT) As BOOL

Const HWND_TOP =       0  As HWND
Const HWND_BOTTOM =    1  As HWND
Const HWND_TOPMOST =   -1 As HWND
Const HWND_NOTOPMOST = -2 As HWND
Const SWP_NOSIZE =         &H0001
Const SWP_NOMOVE =         &H0002
Const SWP_NOZORDER =       &H0004
Const SWP_NOREDRAW =       &H0008
Const SWP_NOACTIVATE =     &H0010
Const SWP_FRAMECHANGED =   &H0020
Const SWP_SHOWWINDOW =     &H0040
Const SWP_HIDEWINDOW =     &H0080
Const SWP_NOCOPYBITS =     &H0100
Const SWP_NOOWNERZORDER =  &H0200
Const SWP_NOSENDCHANGING = &H0400
Const SWP_DRAWFRAME =      SWP_FRAMECHANGED
Const SWP_NOREPOSITION =   SWP_NOOWNERZORDER
Const SWP_DEFERERASE =     &H2000
Const SWP_ASYNCWINDOWPOS = &H4000
Declare Function SetWindowPos Lib "user32" (hWnd As HWND, hWndInsertAfter As HWND, X As Long, Y As Long, cx As Long, cy As Long, uFlags As DWord) As BOOL

Declare Function SetWindowRgn Lib "user32" (hWnd As HWND, hRgn As HRGN, bRedraw As BOOL) As BOOL
Declare Function SetWindowsHookEx Lib "user32" Alias _FuncName_SetWindowsHookEx (idHook As Long, lpfn As HOOKPROC, hMod As HINSTANCE, dwThreadId As DWord) As HHOOK
Declare Function SetWindowText Lib "user32" Alias _FuncName_SetWindowText (hWnd As HWND, pString As PCTSTR) As BOOL
Declare Function ShowCaret Lib "user32" (hWnd As HWND) As BOOL
Declare Function ShowCursor Lib "user32" (bShow As Long) As BOOL
Declare Function ShowScrollBar Lib "user32" (hWnd As HWND, wBar As DWord, bShow As BOOL) As BOOL

Const SW_HIDE =            0
Const SW_SHOWNORMAL =      1
Const SW_NORMAL =          1
Const SW_SHOWMINIMIZED =   2
Const SW_SHOWMAXIMIZED =   3
Const SW_MAXIMIZE =        3
Const SW_SHOWNOACTIVATE =  4
Const SW_SHOW =            5
Const SW_MINIMIZE =        6
Const SW_SHOWMINNOACTIVE = 7
Const SW_SHOWNA =          8
Const SW_RESTORE =         9
Const SW_SHOWDEFAULT =     10
Const SW_FORCEMINIMIZE =   11
Const SW_MAX =             11
Declare Function ShowWindow Lib "user32" (hWnd As HWND, nCmdShow As Long) As BOOL
Declare Function ShowWindowAsync Lib "user32" (hWnd As HWND, nCmdShow As Long) As BOOL

Type NONCLIENTMETRICSW
	cbSize As DWord
	iBorderWidth As Long
	iScrollWidth As Long
	iScrollHeight As Long
	iCaptionWidth As Long
	iCaptionHeight As Long
	lfCaptionFont As LOGFONTW
	iSmCaptionWidth As Long
	iSmCaptionHeight As Long
	lfSmCaptionFont As LOGFONTW
	iMenuWidth As Long
	iMenuHeight As Long
	lfMenuFont As LOGFONTW
	lfStatusFont As LOGFONTW
	lfMessageFont As LOGFONTW
End Type
Type NONCLIENTMETRICSA
	cbSize As DWord
	iBorderWidth As Long
	iScrollWidth As Long
	iScrollHeight As Long
	iCaptionWidth As Long
	iCaptionHeight As Long
	lfCaptionFont As LOGFONTA
	iSmCaptionWidth As Long
	iSmCaptionHeight As Long
	lfSmCaptionFont As LOGFONTA
	iMenuWidth As Long
	iMenuHeight As Long
	lfMenuFont As LOGFONTA
	lfStatusFont As LOGFONTA
	lfMessageFont As LOGFONTA
End Type
#ifdef
TypeDef NONCLIENTMETRICS = NONCLIENTMETRICSW
#else
TypeDef NONCLIENTMETRICS = NONCLIENTMETRICSA
#endif
Const SPI_GETBEEP =               1
Const SPI_SETBEEP =               2
Const SPI_GETMOUSE =              3
Const SPI_SETMOUSE =              4
Const SPI_GETBORDER =             5
Const SPI_SETBORDER =             6
Const SPI_GETKEYBOARDSPEED =      10
Const SPI_SETKEYBOARDSPEED =      11
Const SPI_LANGDRIVER =            12
Const SPI_ICONHORIZONTALSPACING = 13
Const SPI_GETSCREENSAVETIMEOUT =  14
Const SPI_SETSCREENSAVETIMEOUT =  15
Const SPI_GETSCREENSAVEACTIVE =   16
Const SPI_SETSCREENSAVEACTIVE =   17
Const SPI_GETGRIDGRANULARITY =    18
Const SPI_SETGRIDGRANULARITY =    19
Const SPI_SETDESKWALLPAPER =      20
Const SPI_SETDESKPATTERN =        21
Const SPI_GETKEYBOARDDELAY =      22
Const SPI_SETKEYBOARDDELAY =      23
Const SPI_ICONVERTICALSPACING =   24
Const SPI_GETICONTITLEWRAP =      25
Const SPI_SETICONTITLEWRAP =      26
Const SPI_GETMENUDROPALIGNMENT =  27
Const SPI_SETMENUDROPALIGNMENT =  28
Const SPI_SETDOUBLECLKWIDTH =     29
Const SPI_SETDOUBLECLKHEIGHT =    30
Const SPI_GETICONTITLELOGFONT =   31
Const SPI_SETDOUBLECLICKTIME =    32
Const SPI_SETMOUSEBUTTONSWAP =    33
Const SPI_SETICONTITLELOGFONT =   34
Const SPI_GETFASTTASKSWITCH =     35
Const SPI_SETFASTTASKSWITCH =     36
Const SPI_SETDRAGFULLWINDOWS =    37
Const SPI_GETDRAGFULLWINDOWS =    38
Const SPI_GETNONCLIENTMETRICS =   41
Const SPI_SETNONCLIENTMETRICS =   42
Const SPI_GETMINIMIZEDMETRICS =   43
Const SPI_SETMINIMIZEDMETRICS =   44
Const SPI_GETICONMETRICS =        45
Const SPI_SETICONMETRICS =        46
Const SPI_SETWORKAREA =           47
Const SPI_GETWORKAREA =           48
Const SPI_SETPENWINDOWS =         49
Const SPI_GETHIGHCONTRAST =       66
Const SPI_SETHIGHCONTRAST =       67
Const SPI_GETKEYBOARDPREF =       68
Const SPI_SETKEYBOARDPREF =       69
Const SPI_GETSCREENREADER =       70
Const SPI_SETSCREENREADER =       71
Const SPI_GETANIMATION =          72
Const SPI_SETANIMATION =          73
Const SPI_GETFONTSMOOTHING =      74
Const SPI_SETFONTSMOOTHING =      75
Const SPI_SETDRAGWIDTH =          76
Const SPI_SETDRAGHEIGHT =         77
Const SPI_SETHANDHELD =           78
Const SPI_GETLOWPOWERTIMEOUT =    79
Const SPI_GETPOWEROFFTIMEOUT =    80
Const SPI_SETLOWPOWERTIMEOUT =    81
Const SPI_SETPOWEROFFTIMEOUT =    82
Const SPI_GETLOWPOWERACTIVE =     83
Const SPI_GETPOWEROFFACTIVE =     84
Const SPI_SETLOWPOWERACTIVE =     85
Const SPI_SETPOWEROFFACTIVE =     86
Const SPI_SETCURSORS =            87
Const SPI_SETICONS =              88
Const SPI_GETDEFAULTINPUTLANG =   89
Const SPI_SETDEFAULTINPUTLANG =   90
Const SPI_SETLANGTOGGLE =         91
Const SPI_GETWINDOWSEXTENSION =   92
Const SPI_SETMOUSETRAILS =        93
Const SPI_GETMOUSETRAILS =        94
Const SPI_SETSCREENSAVERRUNNING = 97
Const SPI_SCREENSAVERRUNNING =    SPI_SETSCREENSAVERRUNNING
Const SPI_GETFILTERKEYS =         50
Const SPI_SETFILTERKEYS =         51
Const SPI_GETTOGGLEKEYS =         52
Const SPI_SETTOGGLEKEYS =         53
Const SPI_GETMOUSEKEYS =          54
Const SPI_SETMOUSEKEYS =          55
Const SPI_GETSHOWSOUNDS =         56
Const SPI_SETSHOWSOUNDS =         57
Const SPI_GETSTICKYKEYS =         58
Const SPI_SETSTICKYKEYS =         59
Const SPI_GETACCESSTIMEOUT =      60
Const SPI_SETACCESSTIMEOUT =      61
Const SPI_GETSERIALKEYS =         62
Const SPI_SETSERIALKEYS =         63
Const SPI_GETSOUNDSENTRY =        64
Const SPI_SETSOUNDSENTRY =        65
Const SPI_GETMOUSEHOVERWIDTH =    98
Const SPI_SETMOUSEHOVERWIDTH =    99
Const SPI_GETMOUSEHOVERHEIGHT =   100
Const SPI_SETMOUSEHOVERHEIGHT =   101
Const SPI_GETMOUSEHOVERTIME =     102
Const SPI_SETMOUSEHOVERTIME =     103
Const SPI_GETWHEELSCROLLLINES =   104
Const SPI_SETWHEELSCROLLLINES =   105
Const SPI_GETSHOWIMEUI =          110
Const SPI_SETSHOWIMEUI =          111
Const SPI_GETMOUSESPEED =         112
Const SPI_SETMOUSESPEED =         113
Const SPI_GETSCREENSAVERRUNNING = 114
Const SPI_GETACTIVEWINDOWTRACKING =       &H1000	'Windows 2000 or later
Const SPI_SETACTIVEWINDOWTRACKING =       &H1001
Const SPI_GETMENUANIMATION =              &H1002
Const SPI_SETMENUANIMATION =              &H1003
Const SPI_GETCOMBOBOXANIMATION =          &H1004
Const SPI_SETCOMBOBOXANIMATION =          &H1005
Const SPI_GETLISTBOXSMOOTHSCROLLING =     &H1006
Const SPI_SETLISTBOXSMOOTHSCROLLING =     &H1007
Const SPI_GETGRADIENTCAPTIONS =           &H1008
Const SPI_SETGRADIENTCAPTIONS =           &H1009
Const SPI_GETMENUUNDERLINES =             &H100A
Const SPI_SETMENUUNDERLINES =             &H100B
Const SPI_GETACTIVEWNDTRKZORDER =         &H100C
Const SPI_SETACTIVEWNDTRKZORDER =         &H100D
Const SPI_GETHOTTRACKING =                &H100E
Const SPI_SETHOTTRACKING =                &H100F
Const SPI_GETFOREGROUNDLOCKTIMEOUT =      &H2000
Const SPI_SETFOREGROUNDLOCKTIMEOUT =      &H2001
Const SPI_GETACTIVEWNDTRKTIMEOUT =        &H2002
Const SPI_SETACTIVEWNDTRKTIMEOUT =        &H2003
Const SPI_GETFOREGROUNDFLASHCOUNT =       &H2004
Const SPI_SETFOREGROUNDFLASHCOUNT =       &H2005
Const SPIF_UPDATEINIFILE =    &H0001
Const SPIF_SENDWININICHANGE = &H0002
Const SPIF_SENDCHANGE =       SPIF_SENDWININICHANGE
Declare Function SystemParametersInfo Lib "user32" Alias _FuncName_SystemParametersInfo (uiAction As DWord, uiParam As DWord, pvParam As VoidPtr, fWinIni As DWord) As BOOL

Const CDS_UPDATEREGISTRY = &H00000001
Const CDS_TEST            = &H00000002
Const CDS_FULLSCREEN      = &H00000004
Const CDS_GLOBAL          = &H00000008
Const CDS_SET_PRIMARY     = &H00000010
Const CDS_VIDEOPARAMETERS = &H00000020
Const CDS_RESET           = &H40000000
Const CDS_NORESET         = &H10000000

Const DISP_CHANGE_SUCCESSFUL    =   0
Const DISP_CHANGE_RESTART       =   1
Const DISP_CHANGE_FAILED        =  -1
Const DISP_CHANGE_BADMODE       =  -2
Const DISP_CHANGE_NOTUPDATED    =  -3
Const DISP_CHANGE_BADFLAGS      =  -4
Const DISP_CHANGE_BADPARAM      =  -5
Const DISP_CHANGE_BADDUALVIEW   =  -6

#ifdef _INC_GDI
Declare Function ChangeDisplaySettingsA Lib "user32" (ByVal lpDevMode As *DEVMODEA, ByVal dwFlags As DWord) As Long
Declare Function ChangeDisplaySettingsW Lib "user32" (ByVal lpDevMode As *DEVMODEW, ByVal dwFlags As DWord) As Long
#ifdef UNICODE
Declare Function ChangeDisplaySettings Lib "user32" Alias _FuncName_ChangeDisplaySettings (ByVal lpDevMode As *DEVMODEW, ByVal dwFlags As DWord) As Long
#else
Declare Function ChangeDisplaySettings Lib "user32" Alias _FuncName_ChangeDisplaySettings (ByVal lpDevMode As *DEVMODEA, ByVal dwFlags As DWord) As Long
#endif

Declare Function ChangeDisplaySettingsExA Lib "user32" (ByVal lpszDeviceName As LPCSTR, ByVal lpDevMode As *DEVMODEA, ByVal hwnd As HWND, ByVal dwFlags As DWord, ByVal lParam As VoidPtr) As Long
Declare Function ChangeDisplaySettingsExW Lib "user32" (ByVal lpszDeviceName As LPCWSTR, ByVal lpDevMode As *DEVMODEW, ByVal hwnd As HWND, ByVal dwFlags As DWord, ByVal lParam As VoidPtr) As Long
#ifdef UNICODE
Declare Function ChangeDisplaySettingsEx Lib "user32" Alias _FuncName_ChangeDisplaySettingsEx (ByVal lpszDeviceName As LPCWSTR, ByVal lpDevMode As *DEVMODEW, ByVal hwnd As HWND, ByVal dwFlags As DWord, ByVal lParam As VoidPtr) As Long
#else
Declare Function ChangeDisplaySettingsEx Lib "user32" Alias _FuncName_ChangeDisplaySettingsEx (ByVal lpszDeviceName As LPCSTR, ByVal lpDevMode As *DEVMODEA, ByVal hwnd As HWND, ByVal dwFlags As DWord, ByVal lParam As VoidPtr) As Long
#endif

Const ENUM_CURRENT_SETTINGS       = ((-1) As DWord)
Const ENUM_REGISTRY_SETTINGS      = ((-2) As DWord)

Declare Function EnumDisplaySettingsA Lib "user32" (ByVal lpszDeviceName As LPCSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEA) As BOOL
Declare Function EnumDisplaySettingsW Lib "user32" (ByVal lpszDeviceName As LPCWSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEW) As BOOL
#ifdef UNICODE
Declare Function EnumDisplaySettings Lib "user32" Alias _FuncName_EnumDisplaySettings (ByVal lpszDeviceName As LPCWSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEW) As BOOL
#else
Declare Function EnumDisplaySettings Lib "user32" Alias _FuncName_EnumDisplaySettings (ByVal lpszDeviceName As LPCSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEA) As BOOL
#endif

/*#ifdef(WINVER >= 0x0500)
Declare Function EnumDisplaySettingsExA Lib "user32" (ByVal lpszDeviceName As LPCSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEA, ByVal dwFlags As DWord) As BOOL
Declare Function EnumDisplaySettingsExW Lib "user32" (ByVal lpszDeviceName As LPCWSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEW, ByVal dwFlags As DWord) As BOOL
#ifdef UNICODE
Declare Function EnumDisplaySettingsEx Lib "user32" Alias _FuncName_EnumDisplaySettingsEx (ByVal lpszDeviceName As LPCWSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEW, ByVal dwFlags As DWord) As BOOL
#else
Declare Function EnumDisplaySettingsEx Lib "user32" Alias _FuncName_EnumDisplaySettingsEx (ByVal lpszDeviceName As LPCSTR, ByVal iModeNum As DWord, ByVal lpDevMode As *DEVMODEA, ByVal dwFlags As DWord) As BOOL
#endif

Const EDS_RAWMODE  = &H00000002

Declare Function EnumDisplayDevicesA Lib "user32" (ByVal lpDevice As LPCSTR, ByVal iDevNum As DWord, ByVal lpDisplayDevice As *DISPLAY_DEVICEA, ByVal dwFlags As DWord) As BOOL
Declare Function EnumDisplayDevicesW Lib "user32" (ByVal lpDevice As LPCWSTR, ByVal iDevNum As DWord, ByVal lpDisplayDevice As *DISPLAY_DEVICEW, ByVal dwFlags As DWord)As BOOL
#ifdef UNICODE
Declare Function EnumDisplayDevices Lib "user32" Alias _FuncName_EnumDisplayDevices (ByVal lpDevice As LPCWSTR, ByVal iDevNum As DWord, ByVal lpDisplayDevice As *DISPLAY_DEVICEW, ByVal dwFlags As DWord)As BOOL
#else
Declare Function EnumDisplayDevices Lib "user32" Alias _FuncName_EnumDisplayDevices (ByVal lpDevice As LPCSTR, ByVal iDevNum As DWord, ByVal lpDisplayDevice As *DISPLAY_DEVICEA, ByVal dwFlags As DWord) As BOOL
#endif
#endif */ /* WINVER >= 0x0500 */
#endif ' _INC_GDI

Const TME_HOVER       = &H00000001
Const TME_LEAVE       = &H00000002
Const TME_NONCLIENT   = &H00000010
Const TME_QUERY       = &H40000000
Const TME_CANCEL      = &H80000000
Const HOVER_DEFAULT   = &HFFFFFFFF
Type TRACKMOUSEEVENT
	cbSize As DWord
	dwFlags As DWord
	hwndTrack As HWND
	dwHoverTime As DWord
End Type
Declare Function TrackMouseEvent Lib "user32" (ByRef EventTrack As TRACKMOUSEEVENT) As BOOL

Const TPM_LEFTBUTTON =   &H0000
Const TPM_RIGHTBUTTON =  &H0002
Const TPM_LEFTALIGN =    &H0000
Const TPM_CENTERALIGN =  &H0004
Const TPM_RIGHTALIGN =   &H0008
Const TPM_TOPALIGN =     &H0000
Const TPM_VCENTERALIGN = &H0010
Const TPM_BOTTOMALIGN =  &H0020
Const TPM_HORIZONTAL =   &H0000
Const TPM_VERTICAL =     &H0040
Const TPM_NONOTIFY =     &H0080
Const TPM_RETURNCMD =    &H0100
Const TPM_RECURSE =      &H0001
Declare Function TrackPopupMenu Lib "user32" (hMenu As HMENU, uFlags As DWord, x As Long, y As Long, nReserved As Long, ByVal hWnd As HWND, ByRef prcRect As RECT) As BOOL

declare function UnhookWindowsHookEx lib "user32" (ByVal hhk As HHOOK) As BOOL
Declare Function UnregisterClass Lib "user32" Alias _FuncName_UnregisterClass (pClassName As PCTSTR, hinst As HINSTANCE) As BOOL
Declare Function UnregisterHotKey Lib "user32" (hwnd As HWND, id As Long) As BOOL
Declare Function UpdateWindow Lib "user32" (hWnd As HWND) As BOOL
Declare Function ValidateRect Lib "user32" (hWnd As HWND, ByRef lpRect As RECT) As BOOL
Declare Function ValidateRgn Lib "user32" (hWnd As HWND, hRgn As HRGN) As BOOL
Declare Function WaitForInputIdle Lib "user32" (hProcess As HANDLE, dwMilliseconds As DWord) As DWord

Declare Function WaitMessage Lib "user32" () As BOOL
Declare Function WindowFromDC Lib "user32" (hDC As HDC) As HWND
Declare Function WindowFromPoint Lib "user32" (ptX As Long, ptY As Long) As HWND
Declare Function wsprintf cdecl Lib "user32" Alias _FuncName_wsprintf (pText As PTSTR, pFormat As PCTSTR, ...) As Long
Declare Function wvsprintf Lib "user32" Alias _FuncName_wvsprintf (pOutput As PTSTR, pFormat As PCTSTR, arglist As DWordPtr) As Long


#endif '_INC_WINDOW
