/// Auto-generated by Deno Win32: Windows.Win32.UI.WindowsAndMessaging.Apis

import * as util from "https://raw.githubusercontent.com/DjDeveloperr/deno_win32/0.4.1/util.ts";

// Enums
export type WNDCLASS_STYLES = number;
export type CWP_FLAGS = number;
export type MESSAGEBOX_STYLE = number;
export type MENU_ITEM_FLAGS = number;
export type SHOW_WINDOW_CMD = number;
export type SYSTEM_PARAMETERS_INFO_ACTION = number;
export type TRACK_POPUP_MENU_FLAGS = number;
export type WINDOW_EX_STYLE = number;
export type WINDOW_STYLE = number;
export type OBJECT_IDENTIFIER = number;
export type MENU_ITEM_TYPE = number;
export type MESSAGEBOX_RESULT = number;
export type MENU_ITEM_STATE = number;
export type SCROLLBAR_CONSTANTS = number;
export type GET_CLASS_LONG_INDEX = number;
export type UPDATE_LAYERED_WINDOW_FLAGS = number;
export type WINDOW_LONG_PTR_INDEX = number;
export type ANIMATE_WINDOW_FLAGS = number;
export type CHANGE_WINDOW_MESSAGE_FILTER_FLAGS = number;
export type GDI_IMAGE_TYPE = number;
export type WINDOWS_HOOK_ID = number;
export type IMAGE_FLAGS = number;
export type SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS = number;
export type SET_WINDOW_POS_FLAGS = number;
export type MSG_WAIT_FOR_MULTIPLE_OBJECTS_EX_FLAGS = number;
export type QUEUE_STATUS_FLAGS = number;
export type SYSTEM_CURSOR_ID = number;
export type LAYERED_WINDOW_ATTRIBUTES_FLAGS = number;
export type SEND_MESSAGE_TIMEOUT_FLAGS = number;
export type PEEK_MESSAGE_REMOVE_TYPE = number;
export type GET_WINDOW_CMD = number;
export type SYSTEM_METRICS_INDEX = number;
export type GET_ANCESTOR_FLAGS = number;
export type TILE_WINDOWS_HOW = number;
export type WINDOW_DISPLAY_AFFINITY = number;
export type FOREGROUND_WINDOW_LOCK_CODE = number;
export type CASCADE_WINDOWS_HOW = number;
export type WINDOW_MESSAGE_FILTER_ACTION = number;
export type GET_MENU_DEFAULT_ITEM_FLAGS = number;
export type MSGFLTINFO_STATUS = number;
export type MOUSEHOOKSTRUCTEX_MOUSE_DATA = number;
export type MENU_ITEM_MASK = number;
export type FLASHWINFO_FLAGS = number;
export type CURSORINFO_FLAGS = number;
export type MENUINFO_STYLE = number;
export type WINDOWPLACEMENT_FLAGS = number;
export type MENUINFO_MASK = number;
export type MINIMIZEDMETRICS_ARRANGE = number;
export type SCROLLINFO_MASK = number;
export type MENUGETOBJECTINFO_FLAGS = number;
export type GUITHREADINFO_FLAGS = number;
export type KBDLLHOOKSTRUCT_FLAGS = number;
export type ACCEL_VIRT_FLAGS = number;
export type SCROLLBAR_COMMAND = number;
export type DI_FLAGS = number;
export type POINTER_INPUT_TYPE = number;
export type EDIT_CONTROL_FEATURE = number;
export type HANDEDNESS = number;
export type FONT_CHARSET = number;
export type FONT_OUTPUT_PRECISION = number;
export type FONT_CLIP_PRECISION = number;
export type FONT_QUALITY = number;
export type MrmPlatformVersion = number;
export type MrmPackagingMode = number;
export type MrmPackagingOptions = number;
export type MrmDumpType = number;
export type MrmResourceIndexerMessageSeverity = number;
export type MrmIndexerFlags = number;
export type POWER_SETTING_REGISTER_NOTIFICATION_FLAGS = number;

// Constants
export const CS_VREDRAW = 1;
export const CS_HREDRAW = 2;
export const CS_DBLCLKS = 8;
export const CS_OWNDC = 32;
export const CS_CLASSDC = 64;
export const CS_PARENTDC = 128;
export const CS_NOCLOSE = 512;
export const CS_SAVEBITS = 2048;
export const CS_BYTEALIGNCLIENT = 4096;
export const CS_BYTEALIGNWINDOW = 8192;
export const CS_GLOBALCLASS = 16384;
export const CS_IME = 65536;
export const CS_DROPSHADOW = 131072;
export const CWP_ALL = 0;
export const CWP_SKIPINVISIBLE = 1;
export const CWP_SKIPDISABLED = 2;
export const CWP_SKIPTRANSPARENT = 4;
export const MB_ABORTRETRYIGNORE = 2;
export const MB_CANCELTRYCONTINUE = 6;
export const MB_HELP = 16384;
export const MB_OK = 0;
export const MB_OKCANCEL = 1;
export const MB_RETRYCANCEL = 5;
export const MB_YESNO = 4;
export const MB_YESNOCANCEL = 3;
export const MB_ICONHAND = 16;
export const MB_ICONQUESTION = 32;
export const MB_ICONEXCLAMATION = 48;
export const MB_ICONASTERISK = 64;
export const MB_USERICON = 128;
export const MB_ICONWARNING = 48;
export const MB_ICONERROR = 16;
export const MB_ICONINFORMATION = 64;
export const MB_ICONSTOP = 16;
export const MB_DEFBUTTON1 = 0;
export const MB_DEFBUTTON2 = 256;
export const MB_DEFBUTTON3 = 512;
export const MB_DEFBUTTON4 = 768;
export const MB_APPLMODAL = 0;
export const MB_SYSTEMMODAL = 4096;
export const MB_TASKMODAL = 8192;
export const MB_NOFOCUS = 32768;
export const MB_SETFOREGROUND = 65536;
export const MB_DEFAULT_DESKTOP_ONLY = 131072;
export const MB_TOPMOST = 262144;
export const MB_RIGHT = 524288;
export const MB_RTLREADING = 1048576;
export const MB_SERVICE_NOTIFICATION = 2097152;
export const MB_SERVICE_NOTIFICATION_NT3X = 262144;
export const MB_TYPEMASK = 15;
export const MB_ICONMASK = 240;
export const MB_DEFMASK = 3840;
export const MB_MODEMASK = 12288;
export const MB_MISCMASK = 49152;
export const MF_BYCOMMAND = 0;
export const MF_BYPOSITION = 1024;
export const MF_BITMAP = 4;
export const MF_CHECKED = 8;
export const MF_DISABLED = 2;
export const MF_ENABLED = 0;
export const MF_GRAYED = 1;
export const MF_MENUBARBREAK = 32;
export const MF_MENUBREAK = 64;
export const MF_OWNERDRAW = 256;
export const MF_POPUP = 16;
export const MF_SEPARATOR = 2048;
export const MF_STRING = 0;
export const MF_UNCHECKED = 0;
export const MF_INSERT = 0;
export const MF_CHANGE = 128;
export const MF_APPEND = 256;
export const MF_DELETE = 512;
export const MF_REMOVE = 4096;
export const MF_USECHECKBITMAPS = 512;
export const MF_UNHILITE = 0;
export const MF_HILITE = 128;
export const MF_DEFAULT = 4096;
export const MF_SYSMENU = 8192;
export const MF_HELP = 16384;
export const MF_RIGHTJUSTIFY = 16384;
export const MF_MOUSESELECT = 32768;
export const MF_END = 128;
export const SW_FORCEMINIMIZE = 11;
export const SW_HIDE = 0;
export const SW_MAXIMIZE = 3;
export const SW_MINIMIZE = 6;
export const SW_RESTORE = 9;
export const SW_SHOW = 5;
export const SW_SHOWDEFAULT = 10;
export const SW_SHOWMAXIMIZED = 3;
export const SW_SHOWMINIMIZED = 2;
export const SW_SHOWMINNOACTIVE = 7;
export const SW_SHOWNA = 8;
export const SW_SHOWNOACTIVATE = 4;
export const SW_SHOWNORMAL = 1;
export const SW_NORMAL = 1;
export const SW_MAX = 11;
export const SW_PARENTCLOSING = 1;
export const SW_OTHERZOOM = 2;
export const SW_PARENTOPENING = 3;
export const SW_OTHERUNZOOM = 4;
export const SW_SCROLLCHILDREN = 1;
export const SW_INVALIDATE = 2;
export const SW_ERASE = 4;
export const SW_SMOOTHSCROLL = 16;
export const SPI_GETBEEP = 1;
export const SPI_SETBEEP = 2;
export const SPI_GETMOUSE = 3;
export const SPI_SETMOUSE = 4;
export const SPI_GETBORDER = 5;
export const SPI_SETBORDER = 6;
export const SPI_GETKEYBOARDSPEED = 10;
export const SPI_SETKEYBOARDSPEED = 11;
export const SPI_LANGDRIVER = 12;
export const SPI_ICONHORIZONTALSPACING = 13;
export const SPI_GETSCREENSAVETIMEOUT = 14;
export const SPI_SETSCREENSAVETIMEOUT = 15;
export const SPI_GETSCREENSAVEACTIVE = 16;
export const SPI_SETSCREENSAVEACTIVE = 17;
export const SPI_GETGRIDGRANULARITY = 18;
export const SPI_SETGRIDGRANULARITY = 19;
export const SPI_SETDESKWALLPAPER = 20;
export const SPI_SETDESKPATTERN = 21;
export const SPI_GETKEYBOARDDELAY = 22;
export const SPI_SETKEYBOARDDELAY = 23;
export const SPI_ICONVERTICALSPACING = 24;
export const SPI_GETICONTITLEWRAP = 25;
export const SPI_SETICONTITLEWRAP = 26;
export const SPI_GETMENUDROPALIGNMENT = 27;
export const SPI_SETMENUDROPALIGNMENT = 28;
export const SPI_SETDOUBLECLKWIDTH = 29;
export const SPI_SETDOUBLECLKHEIGHT = 30;
export const SPI_GETICONTITLELOGFONT = 31;
export const SPI_SETDOUBLECLICKTIME = 32;
export const SPI_SETMOUSEBUTTONSWAP = 33;
export const SPI_SETICONTITLELOGFONT = 34;
export const SPI_GETFASTTASKSWITCH = 35;
export const SPI_SETFASTTASKSWITCH = 36;
export const SPI_SETDRAGFULLWINDOWS = 37;
export const SPI_GETDRAGFULLWINDOWS = 38;
export const SPI_GETNONCLIENTMETRICS = 41;
export const SPI_SETNONCLIENTMETRICS = 42;
export const SPI_GETMINIMIZEDMETRICS = 43;
export const SPI_SETMINIMIZEDMETRICS = 44;
export const SPI_GETICONMETRICS = 45;
export const SPI_SETICONMETRICS = 46;
export const SPI_SETWORKAREA = 47;
export const SPI_GETWORKAREA = 48;
export const SPI_SETPENWINDOWS = 49;
export const SPI_GETHIGHCONTRAST = 66;
export const SPI_SETHIGHCONTRAST = 67;
export const SPI_GETKEYBOARDPREF = 68;
export const SPI_SETKEYBOARDPREF = 69;
export const SPI_GETSCREENREADER = 70;
export const SPI_SETSCREENREADER = 71;
export const SPI_GETANIMATION = 72;
export const SPI_SETANIMATION = 73;
export const SPI_GETFONTSMOOTHING = 74;
export const SPI_SETFONTSMOOTHING = 75;
export const SPI_SETDRAGWIDTH = 76;
export const SPI_SETDRAGHEIGHT = 77;
export const SPI_SETHANDHELD = 78;
export const SPI_GETLOWPOWERTIMEOUT = 79;
export const SPI_GETPOWEROFFTIMEOUT = 80;
export const SPI_SETLOWPOWERTIMEOUT = 81;
export const SPI_SETPOWEROFFTIMEOUT = 82;
export const SPI_GETLOWPOWERACTIVE = 83;
export const SPI_GETPOWEROFFACTIVE = 84;
export const SPI_SETLOWPOWERACTIVE = 85;
export const SPI_SETPOWEROFFACTIVE = 86;
export const SPI_SETCURSORS = 87;
export const SPI_SETICONS = 88;
export const SPI_GETDEFAULTINPUTLANG = 89;
export const SPI_SETDEFAULTINPUTLANG = 90;
export const SPI_SETLANGTOGGLE = 91;
export const SPI_GETWINDOWSEXTENSION = 92;
export const SPI_SETMOUSETRAILS = 93;
export const SPI_GETMOUSETRAILS = 94;
export const SPI_SETSCREENSAVERRUNNING = 97;
export const SPI_SCREENSAVERRUNNING = 97;
export const SPI_GETFILTERKEYS = 50;
export const SPI_SETFILTERKEYS = 51;
export const SPI_GETTOGGLEKEYS = 52;
export const SPI_SETTOGGLEKEYS = 53;
export const SPI_GETMOUSEKEYS = 54;
export const SPI_SETMOUSEKEYS = 55;
export const SPI_GETSHOWSOUNDS = 56;
export const SPI_SETSHOWSOUNDS = 57;
export const SPI_GETSTICKYKEYS = 58;
export const SPI_SETSTICKYKEYS = 59;
export const SPI_GETACCESSTIMEOUT = 60;
export const SPI_SETACCESSTIMEOUT = 61;
export const SPI_GETSERIALKEYS = 62;
export const SPI_SETSERIALKEYS = 63;
export const SPI_GETSOUNDSENTRY = 64;
export const SPI_SETSOUNDSENTRY = 65;
export const SPI_GETSNAPTODEFBUTTON = 95;
export const SPI_SETSNAPTODEFBUTTON = 96;
export const SPI_GETMOUSEHOVERWIDTH = 98;
export const SPI_SETMOUSEHOVERWIDTH = 99;
export const SPI_GETMOUSEHOVERHEIGHT = 100;
export const SPI_SETMOUSEHOVERHEIGHT = 101;
export const SPI_GETMOUSEHOVERTIME = 102;
export const SPI_SETMOUSEHOVERTIME = 103;
export const SPI_GETWHEELSCROLLLINES = 104;
export const SPI_SETWHEELSCROLLLINES = 105;
export const SPI_GETMENUSHOWDELAY = 106;
export const SPI_SETMENUSHOWDELAY = 107;
export const SPI_GETWHEELSCROLLCHARS = 108;
export const SPI_SETWHEELSCROLLCHARS = 109;
export const SPI_GETSHOWIMEUI = 110;
export const SPI_SETSHOWIMEUI = 111;
export const SPI_GETMOUSESPEED = 112;
export const SPI_SETMOUSESPEED = 113;
export const SPI_GETSCREENSAVERRUNNING = 114;
export const SPI_GETDESKWALLPAPER = 115;
export const SPI_GETAUDIODESCRIPTION = 116;
export const SPI_SETAUDIODESCRIPTION = 117;
export const SPI_GETSCREENSAVESECURE = 118;
export const SPI_SETSCREENSAVESECURE = 119;
export const SPI_GETHUNGAPPTIMEOUT = 120;
export const SPI_SETHUNGAPPTIMEOUT = 121;
export const SPI_GETWAITTOKILLTIMEOUT = 122;
export const SPI_SETWAITTOKILLTIMEOUT = 123;
export const SPI_GETWAITTOKILLSERVICETIMEOUT = 124;
export const SPI_SETWAITTOKILLSERVICETIMEOUT = 125;
export const SPI_GETMOUSEDOCKTHRESHOLD = 126;
export const SPI_SETMOUSEDOCKTHRESHOLD = 127;
export const SPI_GETPENDOCKTHRESHOLD = 128;
export const SPI_SETPENDOCKTHRESHOLD = 129;
export const SPI_GETWINARRANGING = 130;
export const SPI_SETWINARRANGING = 131;
export const SPI_GETMOUSEDRAGOUTTHRESHOLD = 132;
export const SPI_SETMOUSEDRAGOUTTHRESHOLD = 133;
export const SPI_GETPENDRAGOUTTHRESHOLD = 134;
export const SPI_SETPENDRAGOUTTHRESHOLD = 135;
export const SPI_GETMOUSESIDEMOVETHRESHOLD = 136;
export const SPI_SETMOUSESIDEMOVETHRESHOLD = 137;
export const SPI_GETPENSIDEMOVETHRESHOLD = 138;
export const SPI_SETPENSIDEMOVETHRESHOLD = 139;
export const SPI_GETDRAGFROMMAXIMIZE = 140;
export const SPI_SETDRAGFROMMAXIMIZE = 141;
export const SPI_GETSNAPSIZING = 142;
export const SPI_SETSNAPSIZING = 143;
export const SPI_GETDOCKMOVING = 144;
export const SPI_SETDOCKMOVING = 145;
export const SPI_GETTOUCHPREDICTIONPARAMETERS = 156;
export const SPI_SETTOUCHPREDICTIONPARAMETERS = 157;
export const SPI_GETLOGICALDPIOVERRIDE = 158;
export const SPI_SETLOGICALDPIOVERRIDE = 159;
export const SPI_GETMENURECT = 162;
export const SPI_SETMENURECT = 163;
export const SPI_GETACTIVEWINDOWTRACKING = 4096;
export const SPI_SETACTIVEWINDOWTRACKING = 4097;
export const SPI_GETMENUANIMATION = 4098;
export const SPI_SETMENUANIMATION = 4099;
export const SPI_GETCOMBOBOXANIMATION = 4100;
export const SPI_SETCOMBOBOXANIMATION = 4101;
export const SPI_GETLISTBOXSMOOTHSCROLLING = 4102;
export const SPI_SETLISTBOXSMOOTHSCROLLING = 4103;
export const SPI_GETGRADIENTCAPTIONS = 4104;
export const SPI_SETGRADIENTCAPTIONS = 4105;
export const SPI_GETKEYBOARDCUES = 4106;
export const SPI_SETKEYBOARDCUES = 4107;
export const SPI_GETMENUUNDERLINES = 4106;
export const SPI_SETMENUUNDERLINES = 4107;
export const SPI_GETACTIVEWNDTRKZORDER = 4108;
export const SPI_SETACTIVEWNDTRKZORDER = 4109;
export const SPI_GETHOTTRACKING = 4110;
export const SPI_SETHOTTRACKING = 4111;
export const SPI_GETMENUFADE = 4114;
export const SPI_SETMENUFADE = 4115;
export const SPI_GETSELECTIONFADE = 4116;
export const SPI_SETSELECTIONFADE = 4117;
export const SPI_GETTOOLTIPANIMATION = 4118;
export const SPI_SETTOOLTIPANIMATION = 4119;
export const SPI_GETTOOLTIPFADE = 4120;
export const SPI_SETTOOLTIPFADE = 4121;
export const SPI_GETCURSORSHADOW = 4122;
export const SPI_SETCURSORSHADOW = 4123;
export const SPI_GETMOUSESONAR = 4124;
export const SPI_SETMOUSESONAR = 4125;
export const SPI_GETMOUSECLICKLOCK = 4126;
export const SPI_SETMOUSECLICKLOCK = 4127;
export const SPI_GETMOUSEVANISH = 4128;
export const SPI_SETMOUSEVANISH = 4129;
export const SPI_GETFLATMENU = 4130;
export const SPI_SETFLATMENU = 4131;
export const SPI_GETDROPSHADOW = 4132;
export const SPI_SETDROPSHADOW = 4133;
export const SPI_GETBLOCKSENDINPUTRESETS = 4134;
export const SPI_SETBLOCKSENDINPUTRESETS = 4135;
export const SPI_GETUIEFFECTS = 4158;
export const SPI_SETUIEFFECTS = 4159;
export const SPI_GETDISABLEOVERLAPPEDCONTENT = 4160;
export const SPI_SETDISABLEOVERLAPPEDCONTENT = 4161;
export const SPI_GETCLIENTAREAANIMATION = 4162;
export const SPI_SETCLIENTAREAANIMATION = 4163;
export const SPI_GETCLEARTYPE = 4168;
export const SPI_SETCLEARTYPE = 4169;
export const SPI_GETSPEECHRECOGNITION = 4170;
export const SPI_SETSPEECHRECOGNITION = 4171;
export const SPI_GETCARETBROWSING = 4172;
export const SPI_SETCARETBROWSING = 4173;
export const SPI_GETTHREADLOCALINPUTSETTINGS = 4174;
export const SPI_SETTHREADLOCALINPUTSETTINGS = 4175;
export const SPI_GETSYSTEMLANGUAGEBAR = 4176;
export const SPI_SETSYSTEMLANGUAGEBAR = 4177;
export const SPI_GETFOREGROUNDLOCKTIMEOUT = 8192;
export const SPI_SETFOREGROUNDLOCKTIMEOUT = 8193;
export const SPI_GETACTIVEWNDTRKTIMEOUT = 8194;
export const SPI_SETACTIVEWNDTRKTIMEOUT = 8195;
export const SPI_GETFOREGROUNDFLASHCOUNT = 8196;
export const SPI_SETFOREGROUNDFLASHCOUNT = 8197;
export const SPI_GETCARETWIDTH = 8198;
export const SPI_SETCARETWIDTH = 8199;
export const SPI_GETMOUSECLICKLOCKTIME = 8200;
export const SPI_SETMOUSECLICKLOCKTIME = 8201;
export const SPI_GETFONTSMOOTHINGTYPE = 8202;
export const SPI_SETFONTSMOOTHINGTYPE = 8203;
export const SPI_GETFONTSMOOTHINGCONTRAST = 8204;
export const SPI_SETFONTSMOOTHINGCONTRAST = 8205;
export const SPI_GETFOCUSBORDERWIDTH = 8206;
export const SPI_SETFOCUSBORDERWIDTH = 8207;
export const SPI_GETFOCUSBORDERHEIGHT = 8208;
export const SPI_SETFOCUSBORDERHEIGHT = 8209;
export const SPI_GETFONTSMOOTHINGORIENTATION = 8210;
export const SPI_SETFONTSMOOTHINGORIENTATION = 8211;
export const SPI_GETMINIMUMHITRADIUS = 8212;
export const SPI_SETMINIMUMHITRADIUS = 8213;
export const SPI_GETMESSAGEDURATION = 8214;
export const SPI_SETMESSAGEDURATION = 8215;
export const SPI_GETCONTACTVISUALIZATION = 8216;
export const SPI_SETCONTACTVISUALIZATION = 8217;
export const SPI_GETGESTUREVISUALIZATION = 8218;
export const SPI_SETGESTUREVISUALIZATION = 8219;
export const SPI_GETMOUSEWHEELROUTING = 8220;
export const SPI_SETMOUSEWHEELROUTING = 8221;
export const SPI_GETPENVISUALIZATION = 8222;
export const SPI_SETPENVISUALIZATION = 8223;
export const SPI_GETPENARBITRATIONTYPE = 8224;
export const SPI_SETPENARBITRATIONTYPE = 8225;
export const SPI_GETCARETTIMEOUT = 8226;
export const SPI_SETCARETTIMEOUT = 8227;
export const SPI_GETHANDEDNESS = 8228;
export const SPI_SETHANDEDNESS = 8229;
export const TPM_LEFTBUTTON = 0;
export const TPM_RIGHTBUTTON = 2;
export const TPM_LEFTALIGN = 0;
export const TPM_CENTERALIGN = 4;
export const TPM_RIGHTALIGN = 8;
export const TPM_TOPALIGN = 0;
export const TPM_VCENTERALIGN = 16;
export const TPM_BOTTOMALIGN = 32;
export const TPM_HORIZONTAL = 0;
export const TPM_VERTICAL = 64;
export const TPM_NONOTIFY = 128;
export const TPM_RETURNCMD = 256;
export const TPM_RECURSE = 1;
export const TPM_HORPOSANIMATION = 1024;
export const TPM_HORNEGANIMATION = 2048;
export const TPM_VERPOSANIMATION = 4096;
export const TPM_VERNEGANIMATION = 8192;
export const TPM_NOANIMATION = 16384;
export const TPM_LAYOUTRTL = 32768;
export const TPM_WORKAREA = 65536;
export const WS_EX_DLGMODALFRAME = 1;
export const WS_EX_NOPARENTNOTIFY = 4;
export const WS_EX_TOPMOST = 8;
export const WS_EX_ACCEPTFILES = 16;
export const WS_EX_TRANSPARENT = 32;
export const WS_EX_MDICHILD = 64;
export const WS_EX_TOOLWINDOW = 128;
export const WS_EX_WINDOWEDGE = 256;
export const WS_EX_CLIENTEDGE = 512;
export const WS_EX_CONTEXTHELP = 1024;
export const WS_EX_RIGHT = 4096;
export const WS_EX_LEFT = 0;
export const WS_EX_RTLREADING = 8192;
export const WS_EX_LTRREADING = 0;
export const WS_EX_LEFTSCROLLBAR = 16384;
export const WS_EX_RIGHTSCROLLBAR = 0;
export const WS_EX_CONTROLPARENT = 65536;
export const WS_EX_STATICEDGE = 131072;
export const WS_EX_APPWINDOW = 262144;
export const WS_EX_OVERLAPPEDWINDOW = 768;
export const WS_EX_PALETTEWINDOW = 392;
export const WS_EX_LAYERED = 524288;
export const WS_EX_NOINHERITLAYOUT = 1048576;
export const WS_EX_NOREDIRECTIONBITMAP = 2097152;
export const WS_EX_LAYOUTRTL = 4194304;
export const WS_EX_COMPOSITED = 33554432;
export const WS_EX_NOACTIVATE = 134217728;
export const WS_OVERLAPPED = 0;
export const WS_POPUP = 2147483648;
export const WS_CHILD = 1073741824;
export const WS_MINIMIZE = 536870912;
export const WS_VISIBLE = 268435456;
export const WS_DISABLED = 134217728;
export const WS_CLIPSIBLINGS = 67108864;
export const WS_CLIPCHILDREN = 33554432;
export const WS_MAXIMIZE = 16777216;
export const WS_CAPTION = 12582912;
export const WS_BORDER = 8388608;
export const WS_DLGFRAME = 4194304;
export const WS_VSCROLL = 2097152;
export const WS_HSCROLL = 1048576;
export const WS_SYSMENU = 524288;
export const WS_THICKFRAME = 262144;
export const WS_GROUP = 131072;
export const WS_TABSTOP = 65536;
export const WS_MINIMIZEBOX = 131072;
export const WS_MAXIMIZEBOX = 65536;
export const WS_TILED = 0;
export const WS_ICONIC = 536870912;
export const WS_SIZEBOX = 262144;
export const WS_TILEDWINDOW = 13565952;
export const WS_OVERLAPPEDWINDOW = 13565952;
export const WS_POPUPWINDOW = 2156396544;
export const WS_CHILDWINDOW = 1073741824;
export const WS_ACTIVECAPTION = 1;
export const OBJID_WINDOW = 0;
export const OBJID_SYSMENU = `-1`;
export const OBJID_TITLEBAR = `-2`;
export const OBJID_MENU = `-3`;
export const OBJID_CLIENT = `-4`;
export const OBJID_VSCROLL = `-5`;
export const OBJID_HSCROLL = `-6`;
export const OBJID_SIZEGRIP = `-7`;
export const OBJID_CARET = `-8`;
export const OBJID_CURSOR = `-9`;
export const OBJID_ALERT = `-10`;
export const OBJID_SOUND = `-11`;
export const OBJID_QUERYCLASSNAMEIDX = `-12`;
export const OBJID_NATIVEOM = `-16`;
export const MFT_BITMAP = 4;
export const MFT_MENUBARBREAK = 32;
export const MFT_MENUBREAK = 64;
export const MFT_OWNERDRAW = 256;
export const MFT_RADIOCHECK = 512;
export const MFT_RIGHTJUSTIFY = 16384;
export const MFT_RIGHTORDER = 8192;
export const MFT_SEPARATOR = 2048;
export const MFT_STRING = 0;
export const IDOK = 1;
export const IDCANCEL = 2;
export const IDABORT = 3;
export const IDRETRY = 4;
export const IDIGNORE = 5;
export const IDYES = 6;
export const IDNO = 7;
export const IDCLOSE = 8;
export const IDHELP = 9;
export const IDTRYAGAIN = 10;
export const IDCONTINUE = 11;
export const IDASYNC = 32001;
export const IDTIMEOUT = 32000;
export const MFS_GRAYED = 3;
export const MFS_DISABLED = 3;
export const MFS_CHECKED = 8;
export const MFS_HILITE = 128;
export const MFS_ENABLED = 0;
export const MFS_UNCHECKED = 0;
export const MFS_UNHILITE = 0;
export const MFS_DEFAULT = 4096;
export const SB_CTL = 2;
export const SB_HORZ = 0;
export const SB_VERT = 1;
export const SB_BOTH = 3;
export const GCW_ATOM = `-32`;
export const GCL_CBCLSEXTRA = `-20`;
export const GCL_CBWNDEXTRA = `-18`;
export const GCL_HBRBACKGROUND = `-10`;
export const GCL_HCURSOR = `-12`;
export const GCL_HICON = `-14`;
export const GCL_HICONSM = `-34`;
export const GCL_HMODULE = `-16`;
export const GCL_MENUNAME = `-8`;
export const GCL_STYLE = `-26`;
export const GCL_WNDPROC = `-24`;
export const GCLP_HBRBACKGROUND = `-10`;
export const GCLP_HCURSOR = `-12`;
export const GCLP_HICON = `-14`;
export const GCLP_HICONSM = `-34`;
export const GCLP_HMODULE = `-16`;
export const GCLP_MENUNAME = `-8`;
export const GCLP_WNDPROC = `-24`;
export const ULW_ALPHA = 2;
export const ULW_COLORKEY = 1;
export const ULW_OPAQUE = 4;
export const ULW_EX_NORESIZE = 8;
export const GWL_EXSTYLE = `-20`;
export const GWLP_HINSTANCE = `-6`;
export const GWLP_HWNDPARENT = `-8`;
export const GWLP_ID = `-12`;
export const GWL_STYLE = `-16`;
export const GWLP_USERDATA = `-21`;
export const GWLP_WNDPROC = `-4`;
export const GWL_HINSTANCE = `-6`;
export const GWL_ID = `-12`;
export const GWL_USERDATA = `-21`;
export const GWL_WNDPROC = `-4`;
export const GWL_HWNDPARENT = `-8`;
export const AW_ACTIVATE = 131072;
export const AW_BLEND = 524288;
export const AW_CENTER = 16;
export const AW_HIDE = 65536;
export const AW_HOR_POSITIVE = 1;
export const AW_HOR_NEGATIVE = 2;
export const AW_SLIDE = 262144;
export const AW_VER_POSITIVE = 4;
export const AW_VER_NEGATIVE = 8;
export const MSGFLT_ADD = 1;
export const MSGFLT_REMOVE = 2;
export const IMAGE_BITMAP = 0;
export const IMAGE_CURSOR = 2;
export const IMAGE_ICON = 1;
export const WH_CALLWNDPROC = 4;
export const WH_CALLWNDPROCRET = 12;
export const WH_CBT = 5;
export const WH_DEBUG = 9;
export const WH_FOREGROUNDIDLE = 11;
export const WH_GETMESSAGE = 3;
export const WH_JOURNALPLAYBACK = 1;
export const WH_JOURNALRECORD = 0;
export const WH_KEYBOARD = 2;
export const WH_KEYBOARD_LL = 13;
export const WH_MOUSE = 7;
export const WH_MOUSE_LL = 14;
export const WH_MSGFILTER = `-1`;
export const WH_SHELL = 10;
export const WH_SYSMSGFILTER = 6;
export const LR_CREATEDIBSECTION = 8192;
export const LR_DEFAULTCOLOR = 0;
export const LR_DEFAULTSIZE = 64;
export const LR_LOADFROMFILE = 16;
export const LR_LOADMAP3DCOLORS = 4096;
export const LR_LOADTRANSPARENT = 32;
export const LR_MONOCHROME = 1;
export const LR_SHARED = 32768;
export const LR_VGACOLOR = 128;
export const LR_COPYDELETEORG = 8;
export const LR_COPYFROMRESOURCE = 16384;
export const LR_COPYRETURNORG = 4;
export const SPIF_UPDATEINIFILE = 1;
export const SPIF_SENDCHANGE = 2;
export const SPIF_SENDWININICHANGE = 2;
export const SWP_ASYNCWINDOWPOS = 16384;
export const SWP_DEFERERASE = 8192;
export const SWP_DRAWFRAME = 32;
export const SWP_FRAMECHANGED = 32;
export const SWP_HIDEWINDOW = 128;
export const SWP_NOACTIVATE = 16;
export const SWP_NOCOPYBITS = 256;
export const SWP_NOMOVE = 2;
export const SWP_NOOWNERZORDER = 512;
export const SWP_NOREDRAW = 8;
export const SWP_NOREPOSITION = 512;
export const SWP_NOSENDCHANGING = 1024;
export const SWP_NOSIZE = 1;
export const SWP_NOZORDER = 4;
export const SWP_SHOWWINDOW = 64;
export const MWMO_NONE = 0;
export const MWMO_ALERTABLE = 2;
export const MWMO_INPUTAVAILABLE = 4;
export const MWMO_WAITALL = 1;
export const QS_ALLEVENTS = 1215;
export const QS_ALLINPUT = 1279;
export const QS_ALLPOSTMESSAGE = 256;
export const QS_HOTKEY = 128;
export const QS_INPUT = 1031;
export const QS_KEY = 1;
export const QS_MOUSE = 6;
export const QS_MOUSEBUTTON = 4;
export const QS_MOUSEMOVE = 2;
export const QS_PAINT = 32;
export const QS_POSTMESSAGE = 8;
export const QS_RAWINPUT = 1024;
export const QS_SENDMESSAGE = 64;
export const QS_TIMER = 16;
export const OCR_APPSTARTING = 32650;
export const OCR_NORMAL = 32512;
export const OCR_CROSS = 32515;
export const OCR_HAND = 32649;
export const OCR_HELP = 32651;
export const OCR_IBEAM = 32513;
export const OCR_NO = 32648;
export const OCR_SIZEALL = 32646;
export const OCR_SIZENESW = 32643;
export const OCR_SIZENS = 32645;
export const OCR_SIZENWSE = 32642;
export const OCR_SIZEWE = 32644;
export const OCR_UP = 32516;
export const OCR_WAIT = 32514;
export const LWA_ALPHA = 2;
export const LWA_COLORKEY = 1;
export const SMTO_ABORTIFHUNG = 2;
export const SMTO_BLOCK = 1;
export const SMTO_NORMAL = 0;
export const SMTO_NOTIMEOUTIFNOTHUNG = 8;
export const SMTO_ERRORONEXIT = 32;
export const PM_NOREMOVE = 0;
export const PM_REMOVE = 1;
export const PM_NOYIELD = 2;
export const PM_QS_INPUT = 67567616;
export const PM_QS_POSTMESSAGE = 9961472;
export const PM_QS_PAINT = 2097152;
export const PM_QS_SENDMESSAGE = 4194304;
export const GW_CHILD = 5;
export const GW_ENABLEDPOPUP = 6;
export const GW_HWNDFIRST = 0;
export const GW_HWNDLAST = 1;
export const GW_HWNDNEXT = 2;
export const GW_HWNDPREV = 3;
export const GW_OWNER = 4;
export const SM_ARRANGE = 56;
export const SM_CLEANBOOT = 67;
export const SM_CMONITORS = 80;
export const SM_CMOUSEBUTTONS = 43;
export const SM_CONVERTIBLESLATEMODE = 8195;
export const SM_CXBORDER = 5;
export const SM_CXCURSOR = 13;
export const SM_CXDLGFRAME = 7;
export const SM_CXDOUBLECLK = 36;
export const SM_CXDRAG = 68;
export const SM_CXEDGE = 45;
export const SM_CXFIXEDFRAME = 7;
export const SM_CXFOCUSBORDER = 83;
export const SM_CXFRAME = 32;
export const SM_CXFULLSCREEN = 16;
export const SM_CXHSCROLL = 21;
export const SM_CXHTHUMB = 10;
export const SM_CXICON = 11;
export const SM_CXICONSPACING = 38;
export const SM_CXMAXIMIZED = 61;
export const SM_CXMAXTRACK = 59;
export const SM_CXMENUCHECK = 71;
export const SM_CXMENUSIZE = 54;
export const SM_CXMIN = 28;
export const SM_CXMINIMIZED = 57;
export const SM_CXMINSPACING = 47;
export const SM_CXMINTRACK = 34;
export const SM_CXPADDEDBORDER = 92;
export const SM_CXSCREEN = 0;
export const SM_CXSIZE = 30;
export const SM_CXSIZEFRAME = 32;
export const SM_CXSMICON = 49;
export const SM_CXSMSIZE = 52;
export const SM_CXVIRTUALSCREEN = 78;
export const SM_CXVSCROLL = 2;
export const SM_CYBORDER = 6;
export const SM_CYCAPTION = 4;
export const SM_CYCURSOR = 14;
export const SM_CYDLGFRAME = 8;
export const SM_CYDOUBLECLK = 37;
export const SM_CYDRAG = 69;
export const SM_CYEDGE = 46;
export const SM_CYFIXEDFRAME = 8;
export const SM_CYFOCUSBORDER = 84;
export const SM_CYFRAME = 33;
export const SM_CYFULLSCREEN = 17;
export const SM_CYHSCROLL = 3;
export const SM_CYICON = 12;
export const SM_CYICONSPACING = 39;
export const SM_CYKANJIWINDOW = 18;
export const SM_CYMAXIMIZED = 62;
export const SM_CYMAXTRACK = 60;
export const SM_CYMENU = 15;
export const SM_CYMENUCHECK = 72;
export const SM_CYMENUSIZE = 55;
export const SM_CYMIN = 29;
export const SM_CYMINIMIZED = 58;
export const SM_CYMINSPACING = 48;
export const SM_CYMINTRACK = 35;
export const SM_CYSCREEN = 1;
export const SM_CYSIZE = 31;
export const SM_CYSIZEFRAME = 33;
export const SM_CYSMCAPTION = 51;
export const SM_CYSMICON = 50;
export const SM_CYSMSIZE = 53;
export const SM_CYVIRTUALSCREEN = 79;
export const SM_CYVSCROLL = 20;
export const SM_CYVTHUMB = 9;
export const SM_DBCSENABLED = 42;
export const SM_DEBUG = 22;
export const SM_DIGITIZER = 94;
export const SM_IMMENABLED = 82;
export const SM_MAXIMUMTOUCHES = 95;
export const SM_MEDIACENTER = 87;
export const SM_MENUDROPALIGNMENT = 40;
export const SM_MIDEASTENABLED = 74;
export const SM_MOUSEPRESENT = 19;
export const SM_MOUSEHORIZONTALWHEELPRESENT = 91;
export const SM_MOUSEWHEELPRESENT = 75;
export const SM_NETWORK = 63;
export const SM_PENWINDOWS = 41;
export const SM_REMOTECONTROL = 8193;
export const SM_REMOTESESSION = 4096;
export const SM_SAMEDISPLAYFORMAT = 81;
export const SM_SECURE = 44;
export const SM_SERVERR2 = 89;
export const SM_SHOWSOUNDS = 70;
export const SM_SHUTTINGDOWN = 8192;
export const SM_SLOWMACHINE = 73;
export const SM_STARTER = 88;
export const SM_SWAPBUTTON = 23;
export const SM_SYSTEMDOCKED = 8196;
export const SM_TABLETPC = 86;
export const SM_XVIRTUALSCREEN = 76;
export const SM_YVIRTUALSCREEN = 77;
export const GA_PARENT = 1;
export const GA_ROOT = 2;
export const GA_ROOTOWNER = 3;
export const MDITILE_HORIZONTAL = 1;
export const MDITILE_VERTICAL = 0;
export const WDA_NONE = 0;
export const WDA_MONITOR = 1;
export const WDA_EXCLUDEFROMCAPTURE = 17;
export const LSFW_LOCK = 1;
export const LSFW_UNLOCK = 2;
export const MDITILE_SKIPDISABLED = 2;
export const MDITILE_ZORDER = 4;
export const MSGFLT_ALLOW = 1;
export const MSGFLT_DISALLOW = 2;
export const MSGFLT_RESET = 0;
export const GMDI_GOINTOPOPUPS = 2;
export const GMDI_USEDISABLED = 1;
export const MSGFLTINFO_NONE = 0;
export const MSGFLTINFO_ALLOWED_HIGHER = 3;
export const MSGFLTINFO_ALREADYALLOWED_FORWND = 1;
export const MSGFLTINFO_ALREADYDISALLOWED_FORWND = 2;
export const XBUTTON1 = 1;
export const XBUTTON2 = 2;
export const MIIM_BITMAP = 128;
export const MIIM_CHECKMARKS = 8;
export const MIIM_DATA = 32;
export const MIIM_FTYPE = 256;
export const MIIM_ID = 2;
export const MIIM_STATE = 1;
export const MIIM_STRING = 64;
export const MIIM_SUBMENU = 4;
export const MIIM_TYPE = 16;
export const FLASHW_ALL = 3;
export const FLASHW_CAPTION = 1;
export const FLASHW_STOP = 0;
export const FLASHW_TIMER = 4;
export const FLASHW_TIMERNOFG = 12;
export const FLASHW_TRAY = 2;
export const CURSOR_SHOWING = 1;
export const CURSOR_SUPPRESSED = 2;
export const MNS_AUTODISMISS = 268435456;
export const MNS_CHECKORBMP = 67108864;
export const MNS_DRAGDROP = 536870912;
export const MNS_MODELESS = 1073741824;
export const MNS_NOCHECK = 2147483648;
export const MNS_NOTIFYBYPOS = 134217728;
export const WPF_ASYNCWINDOWPLACEMENT = 4;
export const WPF_RESTORETOMAXIMIZED = 2;
export const WPF_SETMINPOSITION = 1;
export const MIM_APPLYTOSUBMENUS = 2147483648;
export const MIM_BACKGROUND = 2;
export const MIM_HELPID = 4;
export const MIM_MAXHEIGHT = 1;
export const MIM_MENUDATA = 8;
export const MIM_STYLE = 16;
export const ARW_BOTTOMLEFT = 0;
export const ARW_BOTTOMRIGHT = 1;
export const ARW_TOPLEFT = 2;
export const ARW_TOPRIGHT = 3;
export const SIF_ALL = 23;
export const SIF_DISABLENOSCROLL = 8;
export const SIF_PAGE = 2;
export const SIF_POS = 4;
export const SIF_RANGE = 1;
export const SIF_TRACKPOS = 16;
export const MNGOF_BOTTOMGAP = 2;
export const MNGOF_TOPGAP = 1;
export const GUI_CARETBLINKING = 1;
export const GUI_INMENUMODE = 4;
export const GUI_INMOVESIZE = 2;
export const GUI_POPUPMENUMODE = 16;
export const GUI_SYSTEMMENUMODE = 8;
export const LLKHF_EXTENDED = 1;
export const LLKHF_ALTDOWN = 32;
export const LLKHF_UP = 128;
export const LLKHF_INJECTED = 16;
export const LLKHF_LOWER_IL_INJECTED = 2;
export const FVIRTKEY = 1;
export const FNOINVERT = 2;
export const FSHIFT = 4;
export const FCONTROL = 8;
export const FALT = 16;
export const SB_LINEUP = 0;
export const SB_LINELEFT = 0;
export const SB_LINEDOWN = 1;
export const SB_LINERIGHT = 1;
export const SB_PAGEUP = 2;
export const SB_PAGELEFT = 2;
export const SB_PAGEDOWN = 3;
export const SB_PAGERIGHT = 3;
export const SB_THUMBPOSITION = 4;
export const SB_THUMBTRACK = 5;
export const SB_TOP = 6;
export const SB_LEFT = 6;
export const SB_RIGHT = 7;
export const SB_BOTTOM = 7;
export const SB_ENDSCROLL = 8;
export const WM_DEVICECHANGE = 537;
export const BSM_VXDS = 1;
export const BSM_NETDRIVER = 2;
export const BSM_INSTALLABLEDRIVERS = 4;
export const WM_CONTEXTMENU = 123;
export const WM_UNICHAR = 265;
export const WM_PRINTCLIENT = 792;
export const WM_NOTIFY = 78;
export const RT_CURSOR = 2216203124737;
export const RT_BITMAP = 4415226380290;
export const RT_ICON = 5514738008067;
export const RT_MENU = 1518001159355236356n;
export const RT_DIALOG = 6614249635845;
export const RT_FONTDIR = 290488781625098247n;
export const RT_FONT = 16509854285832;
export const RT_ACCELERATOR = 13211319402505;
export const RT_MESSAGETABLE = 1147907319267339;
export const DIFFERENCE = 11;
export const RT_VERSION = 70385924046864;
export const RT_DLGINCLUDE = 19808389169169;
export const RT_PLUGPLAY = 28604482191379;
export const RT_VXD = 23106924052500;
export const RT_ANICURSOR = 24206435680277;
export const RT_ANIICON = 25305947308054;
export const RT_HTML = 26405458935831;
export const RT_MANIFEST = 24;
export const CREATEPROCESS_MANIFEST_RESOURCE_ID = 1;
export const ISOLATIONAWARE_MANIFEST_RESOURCE_ID = 2;
export const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = 3;
export const ISOLATIONPOLICY_MANIFEST_RESOURCE_ID = 4;
export const ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID = 5;
export const MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = 1;
export const MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = 16;
export const HIDE_WINDOW = 0;
export const SHOW_OPENWINDOW = 1;
export const SHOW_ICONWINDOW = 2;
export const SHOW_FULLSCREEN = 3;
export const SHOW_OPENNOACTIVATE = 4;
export const KF_EXTENDED = 256;
export const KF_DLGMODE = 2048;
export const KF_MENUMODE = 4096;
export const KF_ALTDOWN = 8192;
export const KF_REPEAT = 16384;
export const KF_UP = 32768;
export const WH_MIN = `-1`;
export const WH_HARDWARE = 8;
export const WH_MAX = 14;
export const WH_MINHOOK = `-1`;
export const WH_MAXHOOK = 14;
export const HC_ACTION = 0;
export const HC_GETNEXT = 1;
export const HC_SKIP = 2;
export const HC_NOREMOVE = 3;
export const HC_NOREM = 3;
export const HC_SYSMODALON = 4;
export const HC_SYSMODALOFF = 5;
export const HCBT_MOVESIZE = 0;
export const HCBT_MINMAX = 1;
export const HCBT_QS = 2;
export const HCBT_CREATEWND = 3;
export const HCBT_DESTROYWND = 4;
export const HCBT_ACTIVATE = 5;
export const HCBT_CLICKSKIPPED = 6;
export const HCBT_KEYSKIPPED = 7;
export const HCBT_SYSCOMMAND = 8;
export const HCBT_SETFOCUS = 9;
export const WTS_CONSOLE_CONNECT = 1;
export const WTS_CONSOLE_DISCONNECT = 2;
export const WTS_REMOTE_CONNECT = 3;
export const WTS_REMOTE_DISCONNECT = 4;
export const WTS_SESSION_LOGON = 5;
export const WTS_SESSION_LOGOFF = 6;
export const WTS_SESSION_LOCK = 7;
export const WTS_SESSION_UNLOCK = 8;
export const WTS_SESSION_REMOTE_CONTROL = 9;
export const WTS_SESSION_CREATE = 10;
export const WTS_SESSION_TERMINATE = 11;
export const MSGF_DIALOGBOX = 0;
export const MSGF_MESSAGEBOX = 1;
export const MSGF_MENU = 2;
export const MSGF_SCROLLBAR = 5;
export const MSGF_NEXTWINDOW = 6;
export const MSGF_MAX = 8;
export const MSGF_USER = 4096;
export const HSHELL_WINDOWCREATED = 1;
export const HSHELL_WINDOWDESTROYED = 2;
export const HSHELL_ACTIVATESHELLWINDOW = 3;
export const HSHELL_WINDOWACTIVATED = 4;
export const HSHELL_GETMINRECT = 5;
export const HSHELL_REDRAW = 6;
export const HSHELL_TASKMAN = 7;
export const HSHELL_LANGUAGE = 8;
export const HSHELL_SYSMENU = 9;
export const HSHELL_ENDTASK = 10;
export const HSHELL_ACCESSIBILITYSTATE = 11;
export const HSHELL_APPCOMMAND = 12;
export const HSHELL_WINDOWREPLACED = 13;
export const HSHELL_WINDOWREPLACING = 14;
export const HSHELL_MONITORCHANGED = 16;
export const HSHELL_HIGHBIT = 32768;
export const FAPPCOMMAND_MOUSE = 32768;
export const FAPPCOMMAND_KEY = 0;
export const FAPPCOMMAND_OEM = 4096;
export const FAPPCOMMAND_MASK = 61440;
export const LLMHF_INJECTED = 1;
export const LLMHF_LOWER_IL_INJECTED = 2;
export const HKL_PREV = 0;
export const HKL_NEXT = 1;
export const INPUTLANGCHANGE_SYSCHARSET = 1;
export const INPUTLANGCHANGE_FORWARD = 2;
export const INPUTLANGCHANGE_BACKWARD = 4;
export const KL_NAMELENGTH = 9;
export const WINSTA_ENUMDESKTOPS = 1;
export const WINSTA_READATTRIBUTES = 2;
export const WINSTA_ACCESSCLIPBOARD = 4;
export const WINSTA_CREATEDESKTOP = 8;
export const WINSTA_WRITEATTRIBUTES = 16;
export const WINSTA_ACCESSGLOBALATOMS = 32;
export const WINSTA_EXITWINDOWS = 64;
export const WINSTA_ENUMERATE = 256;
export const WINSTA_READSCREEN = 512;
export const CWF_CREATE_ONLY = 1;
export const WSF_VISIBLE = 1;
export const UOI_TIMERPROC_EXCEPTION_SUPPRESSION = 7;
export const WM_NULL = 0;
export const WM_CREATE = 1;
export const WM_DESTROY = 2;
export const WM_MOVE = 3;
export const WM_SIZE = 5;
export const WM_ACTIVATE = 6;
export const WA_INACTIVE = 0;
export const WA_ACTIVE = 1;
export const WA_CLICKACTIVE = 2;
export const WM_SETFOCUS = 7;
export const WM_KILLFOCUS = 8;
export const WM_ENABLE = 10;
export const WM_SETREDRAW = 11;
export const WM_SETTEXT = 12;
export const WM_GETTEXT = 13;
export const WM_GETTEXTLENGTH = 14;
export const WM_PAINT = 15;
export const WM_CLOSE = 16;
export const WM_QUERYENDSESSION = 17;
export const WM_QUERYOPEN = 19;
export const WM_ENDSESSION = 22;
export const WM_QUIT = 18;
export const WM_ERASEBKGND = 20;
export const WM_SYSCOLORCHANGE = 21;
export const WM_SHOWWINDOW = 24;
export const WM_WININICHANGE = 26;
export const WM_SETTINGCHANGE = 26;
export const WM_DEVMODECHANGE = 27;
export const WM_ACTIVATEAPP = 28;
export const WM_FONTCHANGE = 29;
export const WM_TIMECHANGE = 30;
export const WM_CANCELMODE = 31;
export const WM_SETCURSOR = 32;
export const WM_MOUSEACTIVATE = 33;
export const WM_CHILDACTIVATE = 34;
export const WM_QUEUESYNC = 35;
export const WM_GETMINMAXINFO = 36;
export const WM_PAINTICON = 38;
export const WM_ICONERASEBKGND = 39;
export const WM_NEXTDLGCTL = 40;
export const WM_SPOOLERSTATUS = 42;
export const WM_DRAWITEM = 43;
export const WM_MEASUREITEM = 44;
export const WM_DELETEITEM = 45;
export const WM_VKEYTOITEM = 46;
export const WM_CHARTOITEM = 47;
export const WM_SETFONT = 48;
export const WM_GETFONT = 49;
export const WM_SETHOTKEY = 50;
export const WM_GETHOTKEY = 51;
export const WM_QUERYDRAGICON = 55;
export const WM_COMPAREITEM = 57;
export const WM_GETOBJECT = 61;
export const WM_COMPACTING = 65;
export const WM_COMMNOTIFY = 68;
export const WM_WINDOWPOSCHANGING = 70;
export const WM_WINDOWPOSCHANGED = 71;
export const WM_POWER = 72;
export const PWR_OK = 1;
export const PWR_FAIL = `-1`;
export const PWR_SUSPENDREQUEST = 1;
export const PWR_SUSPENDRESUME = 2;
export const PWR_CRITICALRESUME = 3;
export const WM_COPYDATA = 74;
export const WM_CANCELJOURNAL = 75;
export const WM_INPUTLANGCHANGEREQUEST = 80;
export const WM_INPUTLANGCHANGE = 81;
export const WM_TCARD = 82;
export const WM_HELP = 83;
export const WM_USERCHANGED = 84;
export const WM_NOTIFYFORMAT = 85;
export const NFR_ANSI = 1;
export const NFR_UNICODE = 2;
export const NF_QUERY = 3;
export const NF_REQUERY = 4;
export const WM_STYLECHANGING = 124;
export const WM_STYLECHANGED = 125;
export const WM_DISPLAYCHANGE = 126;
export const WM_GETICON = 127;
export const WM_SETICON = 128;
export const WM_NCCREATE = 129;
export const WM_NCDESTROY = 130;
export const WM_NCCALCSIZE = 131;
export const WM_NCHITTEST = 132;
export const WM_NCPAINT = 133;
export const WM_NCACTIVATE = 134;
export const WM_GETDLGCODE = 135;
export const WM_SYNCPAINT = 136;
export const WM_NCMOUSEMOVE = 160;
export const WM_NCLBUTTONDOWN = 161;
export const WM_NCLBUTTONUP = 162;
export const WM_NCLBUTTONDBLCLK = 163;
export const WM_NCRBUTTONDOWN = 164;
export const WM_NCRBUTTONUP = 165;
export const WM_NCRBUTTONDBLCLK = 166;
export const WM_NCMBUTTONDOWN = 167;
export const WM_NCMBUTTONUP = 168;
export const WM_NCMBUTTONDBLCLK = 169;
export const WM_NCXBUTTONDOWN = 171;
export const WM_NCXBUTTONUP = 172;
export const WM_NCXBUTTONDBLCLK = 173;
export const WM_INPUT_DEVICE_CHANGE = 254;
export const WM_INPUT = 255;
export const WM_KEYFIRST = 256;
export const WM_KEYDOWN = 256;
export const WM_KEYUP = 257;
export const WM_CHAR = 258;
export const WM_DEADCHAR = 259;
export const WM_SYSKEYDOWN = 260;
export const WM_SYSKEYUP = 261;
export const WM_SYSCHAR = 262;
export const WM_SYSDEADCHAR = 263;
export const WM_KEYLAST = 265;
export const UNICODE_NOCHAR = 65535;
export const WM_IME_STARTCOMPOSITION = 269;
export const WM_IME_ENDCOMPOSITION = 270;
export const WM_IME_COMPOSITION = 271;
export const WM_IME_KEYLAST = 271;
export const WM_INITDIALOG = 272;
export const WM_COMMAND = 273;
export const WM_SYSCOMMAND = 274;
export const WM_TIMER = 275;
export const WM_HSCROLL = 276;
export const WM_VSCROLL = 277;
export const WM_INITMENU = 278;
export const WM_INITMENUPOPUP = 279;
export const WM_GESTURE = 281;
export const WM_GESTURENOTIFY = 282;
export const WM_MENUSELECT = 287;
export const WM_MENUCHAR = 288;
export const WM_ENTERIDLE = 289;
export const WM_MENURBUTTONUP = 290;
export const WM_MENUDRAG = 291;
export const WM_MENUGETOBJECT = 292;
export const WM_UNINITMENUPOPUP = 293;
export const WM_MENUCOMMAND = 294;
export const WM_CHANGEUISTATE = 295;
export const WM_UPDATEUISTATE = 296;
export const WM_QUERYUISTATE = 297;
export const UIS_SET = 1;
export const UIS_CLEAR = 2;
export const UIS_INITIALIZE = 3;
export const UISF_HIDEFOCUS = 1;
export const UISF_HIDEACCEL = 2;
export const UISF_ACTIVE = 4;
export const WM_CTLCOLORMSGBOX = 306;
export const WM_CTLCOLOREDIT = 307;
export const WM_CTLCOLORLISTBOX = 308;
export const WM_CTLCOLORBTN = 309;
export const WM_CTLCOLORDLG = 310;
export const WM_CTLCOLORSCROLLBAR = 311;
export const WM_CTLCOLORSTATIC = 312;
export const MN_GETHMENU = 481;
export const WM_MOUSEFIRST = 512;
export const WM_MOUSEMOVE = 512;
export const WM_LBUTTONDOWN = 513;
export const WM_LBUTTONUP = 514;
export const WM_LBUTTONDBLCLK = 515;
export const WM_RBUTTONDOWN = 516;
export const WM_RBUTTONUP = 517;
export const WM_RBUTTONDBLCLK = 518;
export const WM_MBUTTONDOWN = 519;
export const WM_MBUTTONUP = 520;
export const WM_MBUTTONDBLCLK = 521;
export const WM_MOUSEWHEEL = 522;
export const WM_XBUTTONDOWN = 523;
export const WM_XBUTTONUP = 524;
export const WM_XBUTTONDBLCLK = 525;
export const WM_MOUSEHWHEEL = 526;
export const WM_MOUSELAST = 526;
export const WHEEL_DELTA = 120;
export const WM_PARENTNOTIFY = 528;
export const WM_ENTERMENULOOP = 529;
export const WM_EXITMENULOOP = 530;
export const WM_NEXTMENU = 531;
export const WM_SIZING = 532;
export const WM_CAPTURECHANGED = 533;
export const WM_MOVING = 534;
export const WM_POWERBROADCAST = 536;
export const PBT_APMQUERYSUSPEND = 0;
export const PBT_APMQUERYSTANDBY = 1;
export const PBT_APMQUERYSUSPENDFAILED = 2;
export const PBT_APMQUERYSTANDBYFAILED = 3;
export const PBT_APMSUSPEND = 4;
export const PBT_APMSTANDBY = 5;
export const PBT_APMRESUMECRITICAL = 6;
export const PBT_APMRESUMESUSPEND = 7;
export const PBT_APMRESUMESTANDBY = 8;
export const PBTF_APMRESUMEFROMFAILURE = 1;
export const PBT_APMBATTERYLOW = 9;
export const PBT_APMPOWERSTATUSCHANGE = 10;
export const PBT_APMOEMEVENT = 11;
export const PBT_APMRESUMEAUTOMATIC = 18;
export const PBT_POWERSETTINGCHANGE = 32787;
export const WM_MDICREATE = 544;
export const WM_MDIDESTROY = 545;
export const WM_MDIACTIVATE = 546;
export const WM_MDIRESTORE = 547;
export const WM_MDINEXT = 548;
export const WM_MDIMAXIMIZE = 549;
export const WM_MDITILE = 550;
export const WM_MDICASCADE = 551;
export const WM_MDIICONARRANGE = 552;
export const WM_MDIGETACTIVE = 553;
export const WM_MDISETMENU = 560;
export const WM_ENTERSIZEMOVE = 561;
export const WM_EXITSIZEMOVE = 562;
export const WM_DROPFILES = 563;
export const WM_MDIREFRESHMENU = 564;
export const WM_POINTERDEVICECHANGE = 568;
export const WM_POINTERDEVICEINRANGE = 569;
export const WM_POINTERDEVICEOUTOFRANGE = 570;
export const WM_TOUCH = 576;
export const WM_NCPOINTERUPDATE = 577;
export const WM_NCPOINTERDOWN = 578;
export const WM_NCPOINTERUP = 579;
export const WM_POINTERUPDATE = 581;
export const WM_POINTERDOWN = 582;
export const WM_POINTERUP = 583;
export const WM_POINTERENTER = 585;
export const WM_POINTERLEAVE = 586;
export const WM_POINTERACTIVATE = 587;
export const WM_POINTERCAPTURECHANGED = 588;
export const WM_TOUCHHITTESTING = 589;
export const WM_POINTERWHEEL = 590;
export const WM_POINTERHWHEEL = 591;
export const DM_POINTERHITTEST = 592;
export const WM_POINTERROUTEDTO = 593;
export const WM_POINTERROUTEDAWAY = 594;
export const WM_POINTERROUTEDRELEASED = 595;
export const WM_IME_SETCONTEXT = 641;
export const WM_IME_NOTIFY = 642;
export const WM_IME_CONTROL = 643;
export const WM_IME_COMPOSITIONFULL = 644;
export const WM_IME_SELECT = 645;
export const WM_IME_CHAR = 646;
export const WM_IME_REQUEST = 648;
export const WM_IME_KEYDOWN = 656;
export const WM_IME_KEYUP = 657;
export const WM_NCMOUSEHOVER = 672;
export const WM_NCMOUSELEAVE = 674;
export const WM_WTSSESSION_CHANGE = 689;
export const WM_TABLET_FIRST = 704;
export const WM_TABLET_LAST = 735;
export const WM_DPICHANGED = 736;
export const WM_DPICHANGED_BEFOREPARENT = 738;
export const WM_DPICHANGED_AFTERPARENT = 739;
export const WM_GETDPISCALEDSIZE = 740;
export const WM_CUT = 768;
export const WM_COPY = 769;
export const WM_PASTE = 770;
export const WM_CLEAR = 771;
export const WM_UNDO = 772;
export const WM_RENDERFORMAT = 773;
export const WM_RENDERALLFORMATS = 774;
export const WM_DESTROYCLIPBOARD = 775;
export const WM_DRAWCLIPBOARD = 776;
export const WM_PAINTCLIPBOARD = 777;
export const WM_VSCROLLCLIPBOARD = 778;
export const WM_SIZECLIPBOARD = 779;
export const WM_ASKCBFORMATNAME = 780;
export const WM_CHANGECBCHAIN = 781;
export const WM_HSCROLLCLIPBOARD = 782;
export const WM_QUERYNEWPALETTE = 783;
export const WM_PALETTEISCHANGING = 784;
export const WM_PALETTECHANGED = 785;
export const WM_HOTKEY = 786;
export const WM_PRINT = 791;
export const WM_APPCOMMAND = 793;
export const WM_THEMECHANGED = 794;
export const WM_CLIPBOARDUPDATE = 797;
export const WM_DWMCOMPOSITIONCHANGED = 798;
export const WM_DWMNCRENDERINGCHANGED = 799;
export const WM_DWMCOLORIZATIONCOLORCHANGED = 800;
export const WM_DWMWINDOWMAXIMIZEDCHANGE = 801;
export const WM_DWMSENDICONICTHUMBNAIL = 803;
export const WM_DWMSENDICONICLIVEPREVIEWBITMAP = 806;
export const WM_GETTITLEBARINFOEX = 831;
export const WM_HANDHELDFIRST = 856;
export const WM_HANDHELDLAST = 863;
export const WM_AFXFIRST = 864;
export const WM_AFXLAST = 895;
export const WM_PENWINFIRST = 896;
export const WM_PENWINLAST = 911;
export const WM_APP = 32768;
export const WM_USER = 1024;
export const WMSZ_LEFT = 1;
export const WMSZ_RIGHT = 2;
export const WMSZ_TOP = 3;
export const WMSZ_TOPLEFT = 4;
export const WMSZ_TOPRIGHT = 5;
export const WMSZ_BOTTOM = 6;
export const WMSZ_BOTTOMLEFT = 7;
export const WMSZ_BOTTOMRIGHT = 8;
export const HTERROR = `-2`;
export const HTTRANSPARENT = `-1`;
export const HTNOWHERE = 0;
export const HTCLIENT = 1;
export const HTCAPTION = 2;
export const HTSYSMENU = 3;
export const HTGROWBOX = 4;
export const HTSIZE = 4;
export const HTMENU = 5;
export const HTHSCROLL = 6;
export const HTVSCROLL = 7;
export const HTMINBUTTON = 8;
export const HTMAXBUTTON = 9;
export const HTLEFT = 10;
export const HTRIGHT = 11;
export const HTTOP = 12;
export const HTTOPLEFT = 13;
export const HTTOPRIGHT = 14;
export const HTBOTTOM = 15;
export const HTBOTTOMLEFT = 16;
export const HTBOTTOMRIGHT = 17;
export const HTBORDER = 18;
export const HTREDUCE = 8;
export const HTZOOM = 9;
export const HTSIZEFIRST = 10;
export const HTSIZELAST = 17;
export const HTOBJECT = 19;
export const HTCLOSE = 20;
export const HTHELP = 21;
export const MA_ACTIVATE = 1;
export const MA_ACTIVATEANDEAT = 2;
export const MA_NOACTIVATE = 3;
export const MA_NOACTIVATEANDEAT = 4;
export const ICON_SMALL = 0;
export const ICON_BIG = 1;
export const ICON_SMALL2 = 2;
export const SIZE_RESTORED = 0;
export const SIZE_MINIMIZED = 1;
export const SIZE_MAXIMIZED = 2;
export const SIZE_MAXSHOW = 3;
export const SIZE_MAXHIDE = 4;
export const SIZENORMAL = 0;
export const SIZEICONIC = 1;
export const SIZEFULLSCREEN = 2;
export const SIZEZOOMSHOW = 3;
export const SIZEZOOMHIDE = 4;
export const WVR_ALIGNTOP = 16;
export const WVR_ALIGNLEFT = 32;
export const WVR_ALIGNBOTTOM = 64;
export const WVR_ALIGNRIGHT = 128;
export const WVR_HREDRAW = 256;
export const WVR_VREDRAW = 512;
export const WVR_VALIDRECTS = 1024;
export const PRF_CHECKVISIBLE = 1;
export const PRF_NONCLIENT = 2;
export const PRF_CLIENT = 4;
export const PRF_ERASEBKGND = 8;
export const PRF_CHILDREN = 16;
export const PRF_OWNED = 32;
export const IDANI_OPEN = 1;
export const IDANI_CAPTION = 3;
export const IDHOT_SNAPWINDOW = `-1`;
export const IDHOT_SNAPDESKTOP = `-2`;
export const ENDSESSION_CLOSEAPP = 1;
export const ENDSESSION_CRITICAL = 1073741824;
export const ENDSESSION_LOGOFF = 2147483648;
export const EWX_FORCE = 4;
export const EWX_FORCEIFHUNG = 16;
export const EWX_QUICKRESOLVE = 32;
export const EWX_BOOTOPTIONS = 16777216;
export const EWX_ARSO = 67108864;
export const EWX_CHECK_SAFE_FOR_SERVER = 134217728;
export const EWX_SYSTEM_INITIATED = 268435456;
export const BROADCAST_QUERY_DENY = 1112363332;
export const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 4;
export const HWND_MESSAGE = 8719060254018502653n;
export const ISMEX_NOSEND = 0;
export const ISMEX_SEND = 1;
export const ISMEX_NOTIFY = 2;
export const ISMEX_CALLBACK = 4;
export const ISMEX_REPLIED = 8;
export const HWND_DESKTOP = 72057611217797120n;
export const PW_RENDERFULLCONTENT = 2;
export const HWND_TOP = 72057611217797120n;
export const HWND_BOTTOM = 2216203124737;
export const HWND_TOPMOST = 1120986464255;
export const HWND_NOTOPMOST = 1127020893306878;
export const DLGWINDOWEXTRA = 30;
export const POINTER_MOD_SHIFT = 4;
export const POINTER_MOD_CTRL = 8;
export const TOUCH_FLAG_NONE = 0;
export const TOUCH_MASK_NONE = 0;
export const TOUCH_MASK_CONTACTAREA = 1;
export const TOUCH_MASK_ORIENTATION = 2;
export const TOUCH_MASK_PRESSURE = 4;
export const PEN_FLAG_NONE = 0;
export const PEN_FLAG_BARREL = 1;
export const PEN_FLAG_INVERTED = 2;
export const PEN_FLAG_ERASER = 4;
export const PEN_MASK_NONE = 0;
export const PEN_MASK_PRESSURE = 1;
export const PEN_MASK_ROTATION = 2;
export const PEN_MASK_TILT_X = 4;
export const PEN_MASK_TILT_Y = 8;
export const POINTER_MESSAGE_FLAG_NEW = 1;
export const POINTER_MESSAGE_FLAG_INRANGE = 2;
export const POINTER_MESSAGE_FLAG_INCONTACT = 4;
export const POINTER_MESSAGE_FLAG_FIRSTBUTTON = 16;
export const POINTER_MESSAGE_FLAG_SECONDBUTTON = 32;
export const POINTER_MESSAGE_FLAG_THIRDBUTTON = 64;
export const POINTER_MESSAGE_FLAG_FOURTHBUTTON = 128;
export const POINTER_MESSAGE_FLAG_FIFTHBUTTON = 256;
export const POINTER_MESSAGE_FLAG_PRIMARY = 8192;
export const POINTER_MESSAGE_FLAG_CONFIDENCE = 16384;
export const POINTER_MESSAGE_FLAG_CANCELED = 32768;
export const PA_ACTIVATE = 1;
export const PA_NOACTIVATE = 3;
export const MAX_TOUCH_COUNT = 256;
export const TOUCH_HIT_TESTING_DEFAULT = 0;
export const TOUCH_HIT_TESTING_CLIENT = 1;
export const TOUCH_HIT_TESTING_NONE = 2;
export const TOUCH_HIT_TESTING_PROXIMITY_CLOSEST = 0;
export const TOUCH_HIT_TESTING_PROXIMITY_FARTHEST = 4095;
export const GWFS_INCLUDE_ANCESTORS = 1;
export const MAPVK_VK_TO_VSC = 0;
export const MAPVK_VSC_TO_VK = 1;
export const MAPVK_VK_TO_CHAR = 2;
export const MAPVK_VSC_TO_VK_EX = 3;
export const MAPVK_VK_TO_VSC_EX = 4;
export const QS_TOUCH = 2048;
export const QS_POINTER = 4096;
export const USER_TIMER_MAXIMUM = 2147483647;
export const USER_TIMER_MINIMUM = 10;
export const TIMERV_DEFAULT_COALESCING = 0;
export const TIMERV_NO_COALESCING = 4294967295;
export const TIMERV_COALESCING_MIN = 1;
export const TIMERV_COALESCING_MAX = 2147483637;
export const SM_RESERVED1 = 24;
export const SM_RESERVED2 = 25;
export const SM_RESERVED3 = 26;
export const SM_RESERVED4 = 27;
export const SM_CMETRICS = 76;
export const SM_CARETBLINKINGENABLED = 8194;
export const PMB_ACTIVE = 1;
export const MNC_IGNORE = 0;
export const MNC_CLOSE = 1;
export const MNC_EXECUTE = 2;
export const MNC_SELECT = 3;
export const MND_CONTINUE = 0;
export const MND_ENDMENU = 1;
export const MNGO_NOINTERFACE = 0;
export const MNGO_NOERROR = 1;
export const DOF_EXECUTABLE = 32769;
export const DOF_DOCUMENT = 32770;
export const DOF_DIRECTORY = 32771;
export const DOF_MULTIPLE = 32772;
export const DOF_PROGMAN = 1;
export const DOF_SHELLDATA = 2;
export const DO_DROPFILE = 1162627398;
export const DO_PRINTFILE = 1414419024;
export const ASFW_ANY = 4294967295;
export const DCX_EXCLUDEUPDATE = 256;
export const CTLCOLOR_MSGBOX = 0;
export const CTLCOLOR_EDIT = 1;
export const CTLCOLOR_LISTBOX = 2;
export const CTLCOLOR_BTN = 3;
export const CTLCOLOR_DLG = 4;
export const CTLCOLOR_SCROLLBAR = 5;
export const CTLCOLOR_STATIC = 6;
export const CTLCOLOR_MAX = 7;
export const GW_MAX = 5;
export const SC_SIZE = 61440;
export const SC_MOVE = 61456;
export const SC_MINIMIZE = 61472;
export const SC_MAXIMIZE = 61488;
export const SC_NEXTWINDOW = 61504;
export const SC_PREVWINDOW = 61520;
export const SC_CLOSE = 61536;
export const SC_VSCROLL = 61552;
export const SC_HSCROLL = 61568;
export const SC_MOUSEMENU = 61584;
export const SC_KEYMENU = 61696;
export const SC_ARRANGE = 61712;
export const SC_RESTORE = 61728;
export const SC_TASKLIST = 61744;
export const SC_HOTKEY = 61776;
export const SC_DEFAULT = 61792;
export const SC_MONITORPOWER = 61808;
export const SC_CONTEXTHELP = 61824;
export const SC_SEPARATOR = 61455;
export const SCF_ISSECURE = 1;
export const SC_ICON = 61472;
export const SC_ZOOM = 61488;
export const IDC_ARROW = 35750637757038336n;
export const IDC_IBEAM = 35896872803532545n;
export const IDC_WAIT = 11245776358770507522n;
export const IDC_CROSS = 35897972315160323n;
export const IDC_UPARROW = 35749538245410564n;
export const IDC_SIZE = 35889176222138240n;
export const IDC_ICON = 35922161570971521n;
export const IDC_SIZENWSE = 35892474757021570n;
export const IDC_SIZENESW = 35893574268649347n;
export const IDC_SIZEWE = 35751737268666244n;
export const IDC_SIZENS = 35890275733766021n;
export const IDC_SIZEALL = 35891375245393798n;
export const IDC_NO = 35894673780277128n;
export const IDC_HAND = 35900171338416009n;
export const IDC_APPSTARTING = 35747339222155146n;
export const IDC_HELP = 35748438733782923n;
export const IDC_PIN = 35923261082599327n;
export const IDC_PERSON = 36013421036076960n;
export const CURSOR_CREATION_SCALING_NONE = 1;
export const CURSOR_CREATION_SCALING_DEFAULT = 2;
export const IMAGE_ENHMETAFILE = 3;
export const LR_COLOR = 2;
export const RES_ICON = 1;
export const RES_CURSOR = 2;
export const OBM_CLOSE = 32754;
export const OBM_UPARROW = 32753;
export const OBM_DNARROW = 32752;
export const OBM_RGARROW = 32751;
export const OBM_LFARROW = 32750;
export const OBM_REDUCE = 32749;
export const OBM_ZOOM = 32748;
export const OBM_RESTORE = 32747;
export const OBM_REDUCED = 32746;
export const OBM_ZOOMD = 32745;
export const OBM_RESTORED = 32744;
export const OBM_UPARROWD = 32743;
export const OBM_DNARROWD = 32742;
export const OBM_RGARROWD = 32741;
export const OBM_LFARROWD = 32740;
export const OBM_MNARROW = 32739;
export const OBM_COMBO = 32738;
export const OBM_UPARROWI = 32737;
export const OBM_DNARROWI = 32736;
export const OBM_RGARROWI = 32735;
export const OBM_LFARROWI = 32734;
export const OBM_OLD_CLOSE = 32767;
export const OBM_SIZE = 32766;
export const OBM_OLD_UPARROW = 32765;
export const OBM_OLD_DNARROW = 32764;
export const OBM_OLD_RGARROW = 32763;
export const OBM_OLD_LFARROW = 32762;
export const OBM_BTSIZE = 32761;
export const OBM_CHECK = 32760;
export const OBM_CHECKBOXES = 32759;
export const OBM_BTNCORNERS = 32758;
export const OBM_OLD_REDUCE = 32757;
export const OBM_OLD_ZOOM = 32756;
export const OBM_OLD_RESTORE = 32755;
export const OCR_SIZE = 32640;
export const OCR_ICON = 32641;
export const OCR_ICOCUR = 32647;
export const OIC_SAMPLE = 32512;
export const OIC_HAND = 32513;
export const OIC_QUES = 32514;
export const OIC_BANG = 32515;
export const OIC_NOTE = 32516;
export const OIC_WINLOGO = 32517;
export const OIC_WARNING = 32515;
export const OIC_ERROR = 32513;
export const OIC_INFORMATION = 32516;
export const OIC_SHIELD = 32518;
export const ORD_LANGDRIVER = 1;
export const IDI_APPLICATION = 35750637757038336n;
export const IDI_HAND = 35896872803532545n;
export const IDI_QUESTION = 11245776358770507522n;
export const IDI_EXCLAMATION = 35897972315160323n;
export const IDI_ASTERISK = 35749538245410564n;
export const IDI_WINLOGO = 35753936291921669n;
export const IDI_SHIELD = 23444903618969350n;
export const IDI_WARNING = 32515;
export const IDI_ERROR = 32513;
export const IDI_INFORMATION = 32516;
export const ES_LEFT = 0;
export const ES_CENTER = 1;
export const ES_RIGHT = 2;
export const ES_MULTILINE = 4;
export const ES_UPPERCASE = 8;
export const ES_LOWERCASE = 16;
export const ES_PASSWORD = 32;
export const ES_AUTOVSCROLL = 64;
export const ES_AUTOHSCROLL = 128;
export const ES_NOHIDESEL = 256;
export const ES_OEMCONVERT = 1024;
export const ES_READONLY = 2048;
export const ES_WANTRETURN = 4096;
export const ES_NUMBER = 8192;
export const EN_SETFOCUS = 256;
export const EN_KILLFOCUS = 512;
export const EN_CHANGE = 768;
export const EN_UPDATE = 1024;
export const EN_ERRSPACE = 1280;
export const EN_MAXTEXT = 1281;
export const EN_HSCROLL = 1537;
export const EN_VSCROLL = 1538;
export const EN_ALIGN_LTR_EC = 1792;
export const EN_ALIGN_RTL_EC = 1793;
export const EN_BEFORE_PASTE = 2048;
export const EN_AFTER_PASTE = 2049;
export const EC_LEFTMARGIN = 1;
export const EC_RIGHTMARGIN = 2;
export const EC_USEFONTINFO = 65535;
export const EMSIS_COMPOSITIONSTRING = 1;
export const EIMES_GETCOMPSTRATONCE = 1;
export const EIMES_CANCELCOMPSTRINFOCUS = 2;
export const EIMES_COMPLETECOMPSTRKILLFOCUS = 4;
export const BS_PUSHBUTTON = 0;
export const BS_DEFPUSHBUTTON = 1;
export const BS_CHECKBOX = 2;
export const BS_AUTOCHECKBOX = 3;
export const BS_RADIOBUTTON = 4;
export const BS_3STATE = 5;
export const BS_AUTO3STATE = 6;
export const BS_GROUPBOX = 7;
export const BS_USERBUTTON = 8;
export const BS_AUTORADIOBUTTON = 9;
export const BS_PUSHBOX = 10;
export const BS_OWNERDRAW = 11;
export const BS_TYPEMASK = 15;
export const BS_LEFTTEXT = 32;
export const BS_TEXT = 0;
export const BS_ICON = 64;
export const BS_BITMAP = 128;
export const BS_LEFT = 256;
export const BS_RIGHT = 512;
export const BS_CENTER = 768;
export const BS_TOP = 1024;
export const BS_BOTTOM = 2048;
export const BS_VCENTER = 3072;
export const BS_PUSHLIKE = 4096;
export const BS_MULTILINE = 8192;
export const BS_NOTIFY = 16384;
export const BS_FLAT = 32768;
export const BS_RIGHTBUTTON = 32;
export const BN_CLICKED = 0;
export const BN_PAINT = 1;
export const BN_HILITE = 2;
export const BN_UNHILITE = 3;
export const BN_DISABLE = 4;
export const BN_DOUBLECLICKED = 5;
export const BN_PUSHED = 2;
export const BN_UNPUSHED = 3;
export const BN_DBLCLK = 5;
export const BN_SETFOCUS = 6;
export const BN_KILLFOCUS = 7;
export const BM_GETCHECK = 240;
export const BM_SETCHECK = 241;
export const BM_GETSTATE = 242;
export const BM_SETSTATE = 243;
export const BM_SETSTYLE = 244;
export const BM_CLICK = 245;
export const BM_GETIMAGE = 246;
export const BM_SETIMAGE = 247;
export const BM_SETDONTCLICK = 248;
export const BST_PUSHED = 4;
export const BST_FOCUS = 8;
export const STM_SETICON = 368;
export const STM_GETICON = 369;
export const STM_SETIMAGE = 370;
export const STM_GETIMAGE = 371;
export const STN_CLICKED = 0;
export const STN_DBLCLK = 1;
export const STN_ENABLE = 2;
export const STN_DISABLE = 3;
export const STM_MSGMAX = 372;
export const DWL_MSGRESULT = 0;
export const DWL_DLGPROC = 4;
export const DWL_USER = 8;
export const DWLP_MSGRESULT = 0;
export const DS_ABSALIGN = 1;
export const DS_SYSMODAL = 2;
export const DS_LOCALEDIT = 32;
export const DS_SETFONT = 64;
export const DS_MODALFRAME = 128;
export const DS_NOIDLEMSG = 256;
export const DS_SETFOREGROUND = 512;
export const DS_3DLOOK = 4;
export const DS_FIXEDSYS = 8;
export const DS_NOFAILCREATE = 16;
export const DS_CONTROL = 1024;
export const DS_CENTER = 2048;
export const DS_CENTERMOUSE = 4096;
export const DS_CONTEXTHELP = 8192;
export const DS_USEPIXELS = 32768;
export const DM_GETDEFID = 1024;
export const DM_SETDEFID = 1025;
export const DM_REPOSITION = 1026;
export const DC_HASDEFID = 21323;
export const DLGC_WANTARROWS = 1;
export const DLGC_WANTTAB = 2;
export const DLGC_WANTALLKEYS = 4;
export const DLGC_WANTMESSAGE = 4;
export const DLGC_HASSETSEL = 8;
export const DLGC_DEFPUSHBUTTON = 16;
export const DLGC_UNDEFPUSHBUTTON = 32;
export const DLGC_RADIOBUTTON = 64;
export const DLGC_WANTCHARS = 128;
export const DLGC_STATIC = 256;
export const DLGC_BUTTON = 8192;
export const LB_CTLCODE = 0;
export const LB_OKAY = 0;
export const LB_ERR = `-1`;
export const LB_ERRSPACE = `-2`;
export const LBN_ERRSPACE = `-2`;
export const LBN_SELCHANGE = 1;
export const LBN_DBLCLK = 2;
export const LBN_SELCANCEL = 3;
export const LBN_SETFOCUS = 4;
export const LBN_KILLFOCUS = 5;
export const LB_ADDSTRING = 384;
export const LB_INSERTSTRING = 385;
export const LB_DELETESTRING = 386;
export const LB_SELITEMRANGEEX = 387;
export const LB_RESETCONTENT = 388;
export const LB_SETSEL = 389;
export const LB_SETCURSEL = 390;
export const LB_GETSEL = 391;
export const LB_GETCURSEL = 392;
export const LB_GETTEXT = 393;
export const LB_GETTEXTLEN = 394;
export const LB_GETCOUNT = 395;
export const LB_SELECTSTRING = 396;
export const LB_DIR = 397;
export const LB_GETTOPINDEX = 398;
export const LB_FINDSTRING = 399;
export const LB_GETSELCOUNT = 400;
export const LB_GETSELITEMS = 401;
export const LB_SETTABSTOPS = 402;
export const LB_GETHORIZONTALEXTENT = 403;
export const LB_SETHORIZONTALEXTENT = 404;
export const LB_SETCOLUMNWIDTH = 405;
export const LB_ADDFILE = 406;
export const LB_SETTOPINDEX = 407;
export const LB_GETITEMRECT = 408;
export const LB_GETITEMDATA = 409;
export const LB_SETITEMDATA = 410;
export const LB_SELITEMRANGE = 411;
export const LB_SETANCHORINDEX = 412;
export const LB_GETANCHORINDEX = 413;
export const LB_SETCARETINDEX = 414;
export const LB_GETCARETINDEX = 415;
export const LB_SETITEMHEIGHT = 416;
export const LB_GETITEMHEIGHT = 417;
export const LB_FINDSTRINGEXACT = 418;
export const LB_SETLOCALE = 421;
export const LB_GETLOCALE = 422;
export const LB_SETCOUNT = 423;
export const LB_INITSTORAGE = 424;
export const LB_ITEMFROMPOINT = 425;
export const LB_MULTIPLEADDSTRING = 433;
export const LB_GETLISTBOXINFO = 434;
export const LB_MSGMAX = 435;
export const LBS_NOTIFY = 1;
export const LBS_SORT = 2;
export const LBS_NOREDRAW = 4;
export const LBS_MULTIPLESEL = 8;
export const LBS_OWNERDRAWFIXED = 16;
export const LBS_OWNERDRAWVARIABLE = 32;
export const LBS_HASSTRINGS = 64;
export const LBS_USETABSTOPS = 128;
export const LBS_NOINTEGRALHEIGHT = 256;
export const LBS_MULTICOLUMN = 512;
export const LBS_WANTKEYBOARDINPUT = 1024;
export const LBS_EXTENDEDSEL = 2048;
export const LBS_DISABLENOSCROLL = 4096;
export const LBS_NODATA = 8192;
export const LBS_NOSEL = 16384;
export const LBS_COMBOBOX = 32768;
export const CB_OKAY = 0;
export const CB_ERR = `-1`;
export const CB_ERRSPACE = `-2`;
export const CBN_ERRSPACE = `-1`;
export const CBN_SELCHANGE = 1;
export const CBN_DBLCLK = 2;
export const CBN_SETFOCUS = 3;
export const CBN_KILLFOCUS = 4;
export const CBN_EDITCHANGE = 5;
export const CBN_EDITUPDATE = 6;
export const CBN_DROPDOWN = 7;
export const CBN_CLOSEUP = 8;
export const CBN_SELENDOK = 9;
export const CBN_SELENDCANCEL = 10;
export const CBS_SIMPLE = 1;
export const CBS_DROPDOWN = 2;
export const CBS_DROPDOWNLIST = 3;
export const CBS_OWNERDRAWFIXED = 16;
export const CBS_OWNERDRAWVARIABLE = 32;
export const CBS_AUTOHSCROLL = 64;
export const CBS_OEMCONVERT = 128;
export const CBS_SORT = 256;
export const CBS_HASSTRINGS = 512;
export const CBS_NOINTEGRALHEIGHT = 1024;
export const CBS_DISABLENOSCROLL = 2048;
export const CBS_UPPERCASE = 8192;
export const CBS_LOWERCASE = 16384;
export const CB_GETEDITSEL = 320;
export const CB_LIMITTEXT = 321;
export const CB_SETEDITSEL = 322;
export const CB_ADDSTRING = 323;
export const CB_DELETESTRING = 324;
export const CB_DIR = 325;
export const CB_GETCOUNT = 326;
export const CB_GETCURSEL = 327;
export const CB_GETLBTEXT = 328;
export const CB_GETLBTEXTLEN = 329;
export const CB_INSERTSTRING = 330;
export const CB_RESETCONTENT = 331;
export const CB_FINDSTRING = 332;
export const CB_SELECTSTRING = 333;
export const CB_SETCURSEL = 334;
export const CB_SHOWDROPDOWN = 335;
export const CB_GETITEMDATA = 336;
export const CB_SETITEMDATA = 337;
export const CB_GETDROPPEDCONTROLRECT = 338;
export const CB_SETITEMHEIGHT = 339;
export const CB_GETITEMHEIGHT = 340;
export const CB_SETEXTENDEDUI = 341;
export const CB_GETEXTENDEDUI = 342;
export const CB_GETDROPPEDSTATE = 343;
export const CB_FINDSTRINGEXACT = 344;
export const CB_SETLOCALE = 345;
export const CB_GETLOCALE = 346;
export const CB_GETTOPINDEX = 347;
export const CB_SETTOPINDEX = 348;
export const CB_GETHORIZONTALEXTENT = 349;
export const CB_SETHORIZONTALEXTENT = 350;
export const CB_GETDROPPEDWIDTH = 351;
export const CB_SETDROPPEDWIDTH = 352;
export const CB_INITSTORAGE = 353;
export const CB_MULTIPLEADDSTRING = 355;
export const CB_GETCOMBOBOXINFO = 356;
export const CB_MSGMAX = 357;
export const SBS_HORZ = 0;
export const SBS_VERT = 1;
export const SBS_TOPALIGN = 2;
export const SBS_LEFTALIGN = 2;
export const SBS_BOTTOMALIGN = 4;
export const SBS_RIGHTALIGN = 4;
export const SBS_SIZEBOXTOPLEFTALIGN = 2;
export const SBS_SIZEBOXBOTTOMRIGHTALIGN = 4;
export const SBS_SIZEBOX = 8;
export const SBS_SIZEGRIP = 16;
export const SBM_SETPOS = 224;
export const SBM_GETPOS = 225;
export const SBM_SETRANGE = 226;
export const SBM_SETRANGEREDRAW = 230;
export const SBM_GETRANGE = 227;
export const SBM_ENABLE_ARROWS = 228;
export const SBM_SETSCROLLINFO = 233;
export const SBM_GETSCROLLINFO = 234;
export const SBM_GETSCROLLBARINFO = 235;
export const MDIS_ALLCHILDSTYLES = 1;
export const HELP_CONTEXT = 1;
export const HELP_QUIT = 2;
export const HELP_INDEX = 3;
export const HELP_CONTENTS = 3;
export const HELP_HELPONHELP = 4;
export const HELP_SETINDEX = 5;
export const HELP_SETCONTENTS = 5;
export const HELP_CONTEXTPOPUP = 8;
export const HELP_FORCEFILE = 9;
export const HELP_KEY = 257;
export const HELP_COMMAND = 258;
export const HELP_PARTIALKEY = 261;
export const HELP_MULTIKEY = 513;
export const HELP_SETWINPOS = 515;
export const HELP_CONTEXTMENU = 10;
export const HELP_FINDER = 11;
export const HELP_WM_HELP = 12;
export const HELP_SETPOPUP_POS = 13;
export const HELP_TCARD = 32768;
export const HELP_TCARD_DATA = 16;
export const HELP_TCARD_OTHER_CALLER = 17;
export const IDH_NO_HELP = 28440;
export const IDH_MISSING_CONTEXT = 28441;
export const IDH_GENERIC_HELP_BUTTON = 28442;
export const IDH_OK = 28443;
export const IDH_CANCEL = 28444;
export const IDH_HELP = 28445;
export const MAX_TOUCH_PREDICTION_FILTER_TAPS = 3;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_LATENCY = 8;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_SAMPLETIME = 8;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_USE_HW_TIMESTAMP = 1;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_RLS_DELTA = `0.0010000000474974513`;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_RLS_LAMBDA_MIN = `0.8999999761581421`;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_RLS_LAMBDA_MAX = `0.9990000128746033`;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_RLS_LAMBDA_LEARNING_RATE = `0.0010000000474974513`;
export const TOUCHPREDICTIONPARAMETERS_DEFAULT_RLS_EXPO_SMOOTH_ALPHA = `0.9900000095367432`;
export const MAX_LOGICALDPIOVERRIDE = 2;
export const MIN_LOGICALDPIOVERRIDE = `-2`;
export const FE_FONTSMOOTHINGSTANDARD = 1;
export const FE_FONTSMOOTHINGCLEARTYPE = 2;
export const FE_FONTSMOOTHINGORIENTATIONBGR = 0;
export const FE_FONTSMOOTHINGORIENTATIONRGB = 1;
export const CONTACTVISUALIZATION_OFF = 0;
export const CONTACTVISUALIZATION_ON = 1;
export const CONTACTVISUALIZATION_PRESENTATIONMODE = 2;
export const GESTUREVISUALIZATION_OFF = 0;
export const GESTUREVISUALIZATION_ON = 31;
export const GESTUREVISUALIZATION_TAP = 1;
export const GESTUREVISUALIZATION_DOUBLETAP = 2;
export const GESTUREVISUALIZATION_PRESSANDTAP = 4;
export const GESTUREVISUALIZATION_PRESSANDHOLD = 8;
export const GESTUREVISUALIZATION_RIGHTTAP = 16;
export const MOUSEWHEEL_ROUTING_FOCUS = 0;
export const MOUSEWHEEL_ROUTING_HYBRID = 1;
export const MOUSEWHEEL_ROUTING_MOUSE_POS = 2;
export const PENVISUALIZATION_ON = 35;
export const PENVISUALIZATION_OFF = 0;
export const PENVISUALIZATION_TAP = 1;
export const PENVISUALIZATION_DOUBLETAP = 2;
export const PENVISUALIZATION_CURSOR = 32;
export const PENARBITRATIONTYPE_NONE = 0;
export const PENARBITRATIONTYPE_WIN8 = 1;
export const PENARBITRATIONTYPE_FIS = 2;
export const PENARBITRATIONTYPE_SPT = 3;
export const PENARBITRATIONTYPE_MAX = 4;
export const METRICS_USEDEFAULT = `-1`;
export const ARW_STARTMASK = 3;
export const ARW_STARTRIGHT = 1;
export const ARW_STARTTOP = 2;
export const ARW_LEFT = 0;
export const ARW_RIGHT = 0;
export const ARW_UP = 4;
export const ARW_DOWN = 4;
export const ARW_HIDE = 8;
export const HCF_LOGONDESKTOP = 256;
export const HCF_DEFAULTDESKTOP = 512;
export const EDS_RAWMODE = 2;
export const EDS_ROTATEDMODE = 4;
export const EDD_GET_DEVICE_INTERFACE_NAME = 1;
export const FKF_FILTERKEYSON = 1;
export const FKF_AVAILABLE = 2;
export const FKF_HOTKEYACTIVE = 4;
export const FKF_CONFIRMHOTKEY = 8;
export const FKF_HOTKEYSOUND = 16;
export const FKF_INDICATOR = 32;
export const FKF_CLICKON = 64;
export const MKF_MOUSEKEYSON = 1;
export const MKF_AVAILABLE = 2;
export const MKF_HOTKEYACTIVE = 4;
export const MKF_CONFIRMHOTKEY = 8;
export const MKF_HOTKEYSOUND = 16;
export const MKF_INDICATOR = 32;
export const MKF_MODIFIERS = 64;
export const MKF_REPLACENUMBERS = 128;
export const MKF_LEFTBUTTONSEL = 268435456;
export const MKF_RIGHTBUTTONSEL = 536870912;
export const MKF_LEFTBUTTONDOWN = 16777216;
export const MKF_RIGHTBUTTONDOWN = 33554432;
export const MKF_MOUSEMODE = 2147483648;
export const TKF_TOGGLEKEYSON = 1;
export const TKF_AVAILABLE = 2;
export const TKF_HOTKEYACTIVE = 4;
export const TKF_CONFIRMHOTKEY = 8;
export const TKF_HOTKEYSOUND = 16;
export const TKF_INDICATOR = 32;
export const MONITORINFOF_PRIMARY = 1;
export const WINEVENT_OUTOFCONTEXT = 0;
export const WINEVENT_SKIPOWNTHREAD = 1;
export const WINEVENT_SKIPOWNPROCESS = 2;
export const WINEVENT_INCONTEXT = 4;
export const CHILDID_SELF = 0;
export const INDEXID_OBJECT = 0;
export const INDEXID_CONTAINER = 0;
export const EVENT_MIN = 1;
export const EVENT_MAX = 2147483647;
export const EVENT_SYSTEM_SOUND = 1;
export const EVENT_SYSTEM_ALERT = 2;
export const EVENT_SYSTEM_FOREGROUND = 3;
export const EVENT_SYSTEM_MENUSTART = 4;
export const EVENT_SYSTEM_MENUEND = 5;
export const EVENT_SYSTEM_MENUPOPUPSTART = 6;
export const EVENT_SYSTEM_MENUPOPUPEND = 7;
export const EVENT_SYSTEM_CAPTURESTART = 8;
export const EVENT_SYSTEM_CAPTUREEND = 9;
export const EVENT_SYSTEM_MOVESIZESTART = 10;
export const EVENT_SYSTEM_MOVESIZEEND = 11;
export const EVENT_SYSTEM_CONTEXTHELPSTART = 12;
export const EVENT_SYSTEM_CONTEXTHELPEND = 13;
export const EVENT_SYSTEM_DRAGDROPSTART = 14;
export const EVENT_SYSTEM_DRAGDROPEND = 15;
export const EVENT_SYSTEM_DIALOGSTART = 16;
export const EVENT_SYSTEM_DIALOGEND = 17;
export const EVENT_SYSTEM_SCROLLINGSTART = 18;
export const EVENT_SYSTEM_SCROLLINGEND = 19;
export const EVENT_SYSTEM_SWITCHSTART = 20;
export const EVENT_SYSTEM_SWITCHEND = 21;
export const EVENT_SYSTEM_MINIMIZESTART = 22;
export const EVENT_SYSTEM_MINIMIZEEND = 23;
export const EVENT_SYSTEM_DESKTOPSWITCH = 32;
export const EVENT_SYSTEM_SWITCHER_APPGRABBED = 36;
export const EVENT_SYSTEM_SWITCHER_APPOVERTARGET = 37;
export const EVENT_SYSTEM_SWITCHER_APPDROPPED = 38;
export const EVENT_SYSTEM_SWITCHER_CANCELLED = 39;
export const EVENT_SYSTEM_IME_KEY_NOTIFICATION = 41;
export const EVENT_SYSTEM_END = 255;
export const EVENT_OEM_DEFINED_START = 257;
export const EVENT_OEM_DEFINED_END = 511;
export const EVENT_UIA_EVENTID_START = 19968;
export const EVENT_UIA_EVENTID_END = 20223;
export const EVENT_UIA_PROPID_START = 29952;
export const EVENT_UIA_PROPID_END = 30207;
export const EVENT_CONSOLE_CARET = 16385;
export const EVENT_CONSOLE_UPDATE_REGION = 16386;
export const EVENT_CONSOLE_UPDATE_SIMPLE = 16387;
export const EVENT_CONSOLE_UPDATE_SCROLL = 16388;
export const EVENT_CONSOLE_LAYOUT = 16389;
export const EVENT_CONSOLE_START_APPLICATION = 16390;
export const EVENT_CONSOLE_END_APPLICATION = 16391;
export const CONSOLE_APPLICATION_16BIT = 0;
export const CONSOLE_CARET_SELECTION = 1;
export const CONSOLE_CARET_VISIBLE = 2;
export const EVENT_CONSOLE_END = 16639;
export const EVENT_OBJECT_CREATE = 32768;
export const EVENT_OBJECT_DESTROY = 32769;
export const EVENT_OBJECT_SHOW = 32770;
export const EVENT_OBJECT_HIDE = 32771;
export const EVENT_OBJECT_REORDER = 32772;
export const EVENT_OBJECT_FOCUS = 32773;
export const EVENT_OBJECT_SELECTION = 32774;
export const EVENT_OBJECT_SELECTIONADD = 32775;
export const EVENT_OBJECT_SELECTIONREMOVE = 32776;
export const EVENT_OBJECT_SELECTIONWITHIN = 32777;
export const EVENT_OBJECT_STATECHANGE = 32778;
export const EVENT_OBJECT_LOCATIONCHANGE = 32779;
export const EVENT_OBJECT_NAMECHANGE = 32780;
export const EVENT_OBJECT_DESCRIPTIONCHANGE = 32781;
export const EVENT_OBJECT_VALUECHANGE = 32782;
export const EVENT_OBJECT_PARENTCHANGE = 32783;
export const EVENT_OBJECT_HELPCHANGE = 32784;
export const EVENT_OBJECT_DEFACTIONCHANGE = 32785;
export const EVENT_OBJECT_ACCELERATORCHANGE = 32786;
export const EVENT_OBJECT_INVOKED = 32787;
export const EVENT_OBJECT_TEXTSELECTIONCHANGED = 32788;
export const EVENT_OBJECT_CONTENTSCROLLED = 32789;
export const EVENT_SYSTEM_ARRANGMENTPREVIEW = 32790;
export const EVENT_OBJECT_CLOAKED = 32791;
export const EVENT_OBJECT_UNCLOAKED = 32792;
export const EVENT_OBJECT_LIVEREGIONCHANGED = 32793;
export const EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED = 32800;
export const EVENT_OBJECT_DRAGSTART = 32801;
export const EVENT_OBJECT_DRAGCANCEL = 32802;
export const EVENT_OBJECT_DRAGCOMPLETE = 32803;
export const EVENT_OBJECT_DRAGENTER = 32804;
export const EVENT_OBJECT_DRAGLEAVE = 32805;
export const EVENT_OBJECT_DRAGDROPPED = 32806;
export const EVENT_OBJECT_IME_SHOW = 32807;
export const EVENT_OBJECT_IME_HIDE = 32808;
export const EVENT_OBJECT_IME_CHANGE = 32809;
export const EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED = 32816;
export const EVENT_OBJECT_END = 33023;
export const EVENT_AIA_START = 40960;
export const EVENT_AIA_END = 45055;
export const SOUND_SYSTEM_STARTUP = 1;
export const SOUND_SYSTEM_SHUTDOWN = 2;
export const SOUND_SYSTEM_BEEP = 3;
export const SOUND_SYSTEM_ERROR = 4;
export const SOUND_SYSTEM_QUESTION = 5;
export const SOUND_SYSTEM_WARNING = 6;
export const SOUND_SYSTEM_INFORMATION = 7;
export const SOUND_SYSTEM_MAXIMIZE = 8;
export const SOUND_SYSTEM_MINIMIZE = 9;
export const SOUND_SYSTEM_RESTOREUP = 10;
export const SOUND_SYSTEM_RESTOREDOWN = 11;
export const SOUND_SYSTEM_APPSTART = 12;
export const SOUND_SYSTEM_FAULT = 13;
export const SOUND_SYSTEM_APPEND = 14;
export const SOUND_SYSTEM_MENUCOMMAND = 15;
export const SOUND_SYSTEM_MENUPOPUP = 16;
export const CSOUND_SYSTEM = 16;
export const CALERT_SYSTEM = 6;
export const GUI_16BITTASK = 0;
export const USER_DEFAULT_SCREEN_DPI = 96;
export const STATE_SYSTEM_SELECTED = 2;
export const STATE_SYSTEM_FOCUSED = 4;
export const STATE_SYSTEM_CHECKED = 16;
export const STATE_SYSTEM_MIXED = 32;
export const STATE_SYSTEM_INDETERMINATE = 32;
export const STATE_SYSTEM_READONLY = 64;
export const STATE_SYSTEM_HOTTRACKED = 128;
export const STATE_SYSTEM_DEFAULT = 256;
export const STATE_SYSTEM_EXPANDED = 512;
export const STATE_SYSTEM_COLLAPSED = 1024;
export const STATE_SYSTEM_BUSY = 2048;
export const STATE_SYSTEM_FLOATING = 4096;
export const STATE_SYSTEM_MARQUEED = 8192;
export const STATE_SYSTEM_ANIMATED = 16384;
export const STATE_SYSTEM_SIZEABLE = 131072;
export const STATE_SYSTEM_MOVEABLE = 262144;
export const STATE_SYSTEM_SELFVOICING = 524288;
export const STATE_SYSTEM_SELECTABLE = 2097152;
export const STATE_SYSTEM_LINKED = 4194304;
export const STATE_SYSTEM_TRAVERSED = 8388608;
export const STATE_SYSTEM_MULTISELECTABLE = 16777216;
export const STATE_SYSTEM_EXTSELECTABLE = 33554432;
export const STATE_SYSTEM_ALERT_LOW = 67108864;
export const STATE_SYSTEM_ALERT_MEDIUM = 134217728;
export const STATE_SYSTEM_ALERT_HIGH = 268435456;
export const STATE_SYSTEM_PROTECTED = 536870912;
export const STATE_SYSTEM_VALID = 1073741823;
export const CCHILDREN_TITLEBAR = 5;
export const CCHILDREN_SCROLLBAR = 5;
export const RIM_INPUT = 0;
export const RIM_INPUTSINK = 1;
export const RIM_TYPEMAX = 2;
export const RI_MOUSE_LEFT_BUTTON_DOWN = 1;
export const RI_MOUSE_LEFT_BUTTON_UP = 2;
export const RI_MOUSE_RIGHT_BUTTON_DOWN = 4;
export const RI_MOUSE_RIGHT_BUTTON_UP = 8;
export const RI_MOUSE_MIDDLE_BUTTON_DOWN = 16;
export const RI_MOUSE_MIDDLE_BUTTON_UP = 32;
export const RI_MOUSE_BUTTON_1_DOWN = 1;
export const RI_MOUSE_BUTTON_1_UP = 2;
export const RI_MOUSE_BUTTON_2_DOWN = 4;
export const RI_MOUSE_BUTTON_2_UP = 8;
export const RI_MOUSE_BUTTON_3_DOWN = 16;
export const RI_MOUSE_BUTTON_3_UP = 32;
export const RI_MOUSE_BUTTON_4_DOWN = 64;
export const RI_MOUSE_BUTTON_4_UP = 128;
export const RI_MOUSE_BUTTON_5_DOWN = 256;
export const RI_MOUSE_BUTTON_5_UP = 512;
export const RI_MOUSE_WHEEL = 1024;
export const RI_MOUSE_HWHEEL = 2048;
export const RI_KEY_MAKE = 0;
export const RI_KEY_BREAK = 1;
export const RI_KEY_E0 = 2;
export const RI_KEY_E1 = 4;
export const RI_KEY_TERMSRV_SET_LED = 8;
export const RI_KEY_TERMSRV_SHADOW = 16;
export const RIDEV_EXMODEMASK = 240;
export const GIDC_ARRIVAL = 1;
export const GIDC_REMOVAL = 2;
export const POINTER_DEVICE_PRODUCT_STRING_MAX = 520;
export const PDC_ARRIVAL = 1;
export const PDC_REMOVAL = 2;
export const PDC_ORIENTATION_0 = 4;
export const PDC_ORIENTATION_90 = 8;
export const PDC_ORIENTATION_180 = 16;
export const PDC_ORIENTATION_270 = 32;
export const PDC_MODE_DEFAULT = 64;
export const PDC_MODE_CENTERED = 128;
export const PDC_MAPPING_CHANGE = 256;
export const PDC_RESOLUTION = 512;
export const PDC_ORIGIN = 1024;
export const PDC_MODE_ASPECTRATIOPRESERVED = 2048;
export const GF_BEGIN = 1;
export const GF_INERTIA = 2;
export const GF_END = 4;
export const GESTURECONFIGMAXCOUNT = 256;
export const GCF_INCLUDE_ANCESTORS = 1;
export const NID_INTEGRATED_TOUCH = 1;
export const NID_EXTERNAL_TOUCH = 2;
export const NID_INTEGRATED_PEN = 4;
export const NID_EXTERNAL_PEN = 8;
export const NID_MULTI_INPUT = 64;
export const NID_READY = 128;
export const MAX_STR_BLOCKREASON = 256;
export const STRSAFE_USE_SECURE_CRT = 0;
export const STRSAFE_MAX_CCH = 2147483647;
export const STRSAFE_IGNORE_NULLS = 256;
export const STRSAFE_FILL_BEHIND_NULL = 512;
export const STRSAFE_FILL_ON_FAILURE = 1024;
export const STRSAFE_NULL_ON_FAILURE = 2048;
export const STRSAFE_NO_TRUNCATION = 4096;
export const STRSAFE_E_INSUFFICIENT_BUFFER = 504444959035162746n;
export const STRSAFE_E_INVALID_PARAMETER = 18019915395432535n;
export const STRSAFE_E_END_OF_FILE = 31593386440327206n;
export const __WARNING_CYCLOMATIC_COMPLEXITY = 28734;
export const __WARNING_USING_UNINIT_VAR = 6001;
export const __WARNING_RETURN_UNINIT_VAR = 6101;
export const __WARNING_DEREF_NULL_PTR = 6011;
export const __WARNING_MISSING_ZERO_TERMINATION2 = 6054;
export const __WARNING_INVALID_PARAM_VALUE_1 = 6387;
export const __WARNING_INCORRECT_ANNOTATION = 26007;
export const __WARNING_POTENTIAL_BUFFER_OVERFLOW_HIGH_PRIORITY = 26015;
export const __WARNING_PRECONDITION_NULLTERMINATION_VIOLATION = 26035;
export const __WARNING_POSTCONDITION_NULLTERMINATION_VIOLATION = 26036;
export const __WARNING_HIGH_PRIORITY_OVERFLOW_POSTCONDITION = 26045;
export const __WARNING_RANGE_POSTCONDITION_VIOLATION = 26061;
export const __WARNING_POTENTIAL_RANGE_POSTCONDITION_VIOLATION = 26071;
export const __WARNING_INVALID_PARAM_VALUE_3 = 28183;
export const __WARNING_RETURNING_BAD_RESULT = 28196;
export const __WARNING_BANNED_API_USAGE = 28719;
export const __WARNING_POST_EXPECTED = 28210;
export const HBMMENU_CALLBACK = 1120986464255;
export const HBMMENU_SYSTEM = 2216203124737;
export const HBMMENU_MBAR_RESTORE = 4415226380290;
export const HBMMENU_MBAR_MINIMIZE = 5514738008067;
export const HBMMENU_MBAR_CLOSE = 6614249635845;
export const HBMMENU_MBAR_CLOSE_D = 7713761263622;
export const HBMMENU_MBAR_MINIMIZE_D = 290488781625098247n;
export const HBMMENU_POPUP_CLOSE = 16509854285832;
export const HBMMENU_POPUP_RESTORE = 13211319402505;
export const HBMMENU_POPUP_MAXIMIZE = 12111807774730;
export const HBMMENU_POPUP_MINIMIZE = 1147907319267339;
export const CW_USEDEFAULT = `-2147483648`;
export const LBS_STANDARD = 10485763;
export const DI_MASK = 1;
export const DI_IMAGE = 2;
export const DI_NORMAL = 3;
export const DI_COMPAT = 4;
export const DI_DEFAULTSIZE = 8;
export const DI_NOMIRROR = 16;
export const PT_POINTER = 1;
export const PT_TOUCH = 2;
export const PT_PEN = 3;
export const PT_MOUSE = 4;
export const PT_TOUCHPAD = 5;
export const EDIT_CONTROL_FEATURE_ENTERPRISE_DATA_PROTECTION_PASTE_SUPPORT = 0;
export const EDIT_CONTROL_FEATURE_PASTE_NOTIFICATIONS = 1;
export const HANDEDNESS_LEFT = 0;
export const HANDEDNESS_RIGHT = 1;
export const ANSI_CHARSET = 0;
export const DEFAULT_CHARSET = 1;
export const SYMBOL_CHARSET = 2;
export const SHIFTJIS_CHARSET = 128;
export const HANGEUL_CHARSET = 129;
export const HANGUL_CHARSET = 129;
export const GB2312_CHARSET = 134;
export const CHINESEBIG5_CHARSET = 136;
export const OEM_CHARSET = 255;
export const JOHAB_CHARSET = 130;
export const HEBREW_CHARSET = 177;
export const ARABIC_CHARSET = 178;
export const GREEK_CHARSET = 161;
export const TURKISH_CHARSET = 162;
export const VIETNAMESE_CHARSET = 163;
export const THAI_CHARSET = 222;
export const EASTEUROPE_CHARSET = 238;
export const RUSSIAN_CHARSET = 204;
export const MAC_CHARSET = 77;
export const BALTIC_CHARSET = 186;
export const OUT_DEFAULT_PRECIS = 0;
export const OUT_STRING_PRECIS = 1;
export const OUT_CHARACTER_PRECIS = 2;
export const OUT_STROKE_PRECIS = 3;
export const OUT_TT_PRECIS = 4;
export const OUT_DEVICE_PRECIS = 5;
export const OUT_RASTER_PRECIS = 6;
export const OUT_TT_ONLY_PRECIS = 7;
export const OUT_OUTLINE_PRECIS = 8;
export const OUT_SCREEN_OUTLINE_PRECIS = 9;
export const OUT_PS_ONLY_PRECIS = 10;
export const CLIP_DEFAULT_PRECIS = 0;
export const CLIP_CHARACTER_PRECIS = 1;
export const CLIP_STROKE_PRECIS = 2;
export const CLIP_MASK = 15;
export const CLIP_LH_ANGLES = 16;
export const CLIP_TT_ALWAYS = 32;
export const CLIP_DFA_DISABLE = 64;
export const CLIP_EMBEDDED = 128;
export const CLIP_DFA_OVERRIDE = 64;
export const DEFAULT_QUALITY = 0;
export const DRAFT_QUALITY = 1;
export const PROOF_QUALITY = 2;
export const NONANTIALIASED_QUALITY = 3;
export const ANTIALIASED_QUALITY = 4;
export const CLEARTYPE_QUALITY = 5;
export const MrmPlatformVersion_Default = 0;
export const MrmPlatformVersion_Windows10_0_0_0 = 17432576;
export const MrmPlatformVersion_Windows10_0_0_5 = 17432581;
export const MrmPackagingModeStandaloneFile = 0;
export const MrmPackagingModeAutoSplit = 1;
export const MrmPackagingModeResourcePack = 2;
export const MrmPackagingOptionsNone = 0;
export const MrmPackagingOptionsOmitSchemaFromResourcePacks = 1;
export const MrmPackagingOptionsSplitLanguageVariants = 2;
export const MrmDumpType_Basic = 0;
export const MrmDumpType_Detailed = 1;
export const MrmDumpType_Schema = 2;
export const MrmResourceIndexerMessageSeverityVerbose = 0;
export const MrmResourceIndexerMessageSeverityInfo = 1;
export const MrmResourceIndexerMessageSeverityWarning = 2;
export const MrmResourceIndexerMessageSeverityError = 3;
export const MrmIndexerFlagsNone = 0;
export const MrmIndexerFlagsAutoMerge = 1;
export const MrmIndexerFlagsCreateContentChecksum = 2;
export const DEVICE_NOTIFY_SERVICE_HANDLE = 1;
export const DEVICE_NOTIFY_CALLBACK = 2;
export const DEVICE_NOTIFY_WINDOW_HANDLE = 0;

// Structs

export type HHOOK = bigint | number;

export type HICON = bigint | number;

export type HMENU = bigint | number;

export type HCURSOR = bigint | number;

export type HACCEL = bigint | number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.MESSAGE_RESOURCE_ENTRY (size: 16)
 */
export interface MESSAGE_RESOURCE_ENTRY {
  /** u16 */
  Length: number;
  /** u16 */
  Flags: number;
  /** array */
  Text: Deno.PointerValue;
}

export const sizeofMESSAGE_RESOURCE_ENTRY = 16;

export function allocMESSAGE_RESOURCE_ENTRY(data?: Partial<MESSAGE_RESOURCE_ENTRY>): Uint8Array {
  const buf = new Uint8Array(sizeofMESSAGE_RESOURCE_ENTRY);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.Length !== undefined) view.setUint16(0, Number(data.Length), true);
  // 0x02: u16
  if (data?.Flags !== undefined) view.setUint16(2, Number(data.Flags), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Text !== undefined) view.setBigUint64(8, data.Text === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Text))), true);
  return buf;
}

export class MESSAGE_RESOURCE_ENTRYView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get Length(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get Flags(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Text(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u16
  set Length(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set Flags(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Text(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MESSAGE_RESOURCE_BLOCK (size: 16)
 */
export interface MESSAGE_RESOURCE_BLOCK {
  /** u32 */
  LowId: number;
  /** u32 */
  HighId: number;
  /** u32 */
  OffsetToEntries: number;
}

export const sizeofMESSAGE_RESOURCE_BLOCK = 16;

export function allocMESSAGE_RESOURCE_BLOCK(data?: Partial<MESSAGE_RESOURCE_BLOCK>): Uint8Array {
  const buf = new Uint8Array(sizeofMESSAGE_RESOURCE_BLOCK);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.LowId !== undefined) view.setUint32(0, Number(data.LowId), true);
  // 0x04: u32
  if (data?.HighId !== undefined) view.setUint32(4, Number(data.HighId), true);
  // 0x08: u32
  if (data?.OffsetToEntries !== undefined) view.setUint32(8, Number(data.OffsetToEntries), true);
  // 0x0c: pad4
  return buf;
}

export class MESSAGE_RESOURCE_BLOCKView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get LowId(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get HighId(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get OffsetToEntries(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: u32
  set LowId(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set HighId(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set OffsetToEntries(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MESSAGE_RESOURCE_DATA (size: 16)
 */
export interface MESSAGE_RESOURCE_DATA {
  /** u32 */
  NumberOfBlocks: number;
  /** array */
  Blocks: Deno.PointerValue;
}

export const sizeofMESSAGE_RESOURCE_DATA = 16;

export function allocMESSAGE_RESOURCE_DATA(data?: Partial<MESSAGE_RESOURCE_DATA>): Uint8Array {
  const buf = new Uint8Array(sizeofMESSAGE_RESOURCE_DATA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NumberOfBlocks !== undefined) view.setUint32(0, Number(data.NumberOfBlocks), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Blocks !== undefined) view.setBigUint64(8, data.Blocks === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Blocks))), true);
  return buf;
}

export class MESSAGE_RESOURCE_DATAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NumberOfBlocks(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Blocks(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NumberOfBlocks(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Blocks(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type HWND = bigint | number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.CBT_CREATEWNDA (size: 16)
 */
export interface CBT_CREATEWNDA {
  /** ptr */
  lpcs: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.HWND */
  hwndInsertAfter: Deno.PointerValue;
}

export const sizeofCBT_CREATEWNDA = 16;

export function allocCBT_CREATEWNDA(data?: Partial<CBT_CREATEWNDA>): Uint8Array {
  const buf = new Uint8Array(sizeofCBT_CREATEWNDA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.lpcs !== undefined) view.setBigUint64(0, data.lpcs === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpcs))), true);
  // 0x08: pointer
  if (data?.hwndInsertAfter !== undefined) view.setBigUint64(8, data.hwndInsertAfter === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndInsertAfter))), true);
  return buf;
}

export class CBT_CREATEWNDAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get lpcs(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hwndInsertAfter(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set lpcs(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hwndInsertAfter(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.CBT_CREATEWNDW (size: 16)
 */
export interface CBT_CREATEWNDW {
  /** ptr */
  lpcs: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.HWND */
  hwndInsertAfter: Deno.PointerValue;
}

export const sizeofCBT_CREATEWNDW = 16;

export function allocCBT_CREATEWNDW(data?: Partial<CBT_CREATEWNDW>): Uint8Array {
  const buf = new Uint8Array(sizeofCBT_CREATEWNDW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.lpcs !== undefined) view.setBigUint64(0, data.lpcs === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpcs))), true);
  // 0x08: pointer
  if (data?.hwndInsertAfter !== undefined) view.setBigUint64(8, data.hwndInsertAfter === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndInsertAfter))), true);
  return buf;
}

export class CBT_CREATEWNDWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get lpcs(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hwndInsertAfter(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set lpcs(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hwndInsertAfter(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type BOOL = number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.CBTACTIVATESTRUCT (size: 16)
 */
export interface CBTACTIVATESTRUCT {
  /** Windows.Win32.Foundation.BOOL */
  fMouse: boolean;
  /** Windows.Win32.Foundation.HWND */
  hWndActive: Deno.PointerValue;
}

export const sizeofCBTACTIVATESTRUCT = 16;

export function allocCBTACTIVATESTRUCT(data?: Partial<CBTACTIVATESTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofCBTACTIVATESTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.fMouse !== undefined) view.setInt32(0, Number(data.fMouse), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.hWndActive !== undefined) view.setBigUint64(8, data.hWndActive === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hWndActive))), true);
  return buf;
}

export class CBTACTIVATESTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get fMouse(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get hWndActive(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set fMouse(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set hWndActive(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Foundation.RECT (size: 16)
 */
export interface RECT {
  /** i32 */
  left: number;
  /** i32 */
  top: number;
  /** i32 */
  right: number;
  /** i32 */
  bottom: number;
}

export const sizeofRECT = 16;

export function allocRECT(data?: Partial<RECT>): Uint8Array {
  const buf = new Uint8Array(sizeofRECT);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.left !== undefined) view.setInt32(0, Number(data.left), true);
  // 0x04: i32
  if (data?.top !== undefined) view.setInt32(4, Number(data.top), true);
  // 0x08: i32
  if (data?.right !== undefined) view.setInt32(8, Number(data.right), true);
  // 0x0c: i32
  if (data?.bottom !== undefined) view.setInt32(12, Number(data.bottom), true);
  return buf;
}

export class RECTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get left(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: i32
  get top(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get right(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get bottom(): number {
    return this.view.getInt32(12, true);
  }

  // 0x00: i32
  set left(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: i32
  set top(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set right(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set bottom(value: number) {
    this.view.setInt32(12, value, true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.SHELLHOOKINFO (size: 16)
 */
export interface SHELLHOOKINFO {
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
  /** Windows.Win32.Foundation.RECT */
  rc: Uint8Array | Deno.PointerValue;
}

export const sizeofSHELLHOOKINFO = 16;

export function allocSHELLHOOKINFO(data?: Partial<SHELLHOOKINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofSHELLHOOKINFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(0, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  // 0x08: pointer
  if (data?.rc !== undefined) view.setBigUint64(8, data.rc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rc))), true);
  return buf;
}

export class SHELLHOOKINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get rc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set rc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.EVENTMSG (size: 24)
 */
export interface EVENTMSG {
  /** u32 */
  message: number;
  /** u32 */
  paramL: number;
  /** u32 */
  paramH: number;
  /** u32 */
  time: number;
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
}

export const sizeofEVENTMSG = 24;

export function allocEVENTMSG(data?: Partial<EVENTMSG>): Uint8Array {
  const buf = new Uint8Array(sizeofEVENTMSG);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.message !== undefined) view.setUint32(0, Number(data.message), true);
  // 0x04: u32
  if (data?.paramL !== undefined) view.setUint32(4, Number(data.paramL), true);
  // 0x08: u32
  if (data?.paramH !== undefined) view.setUint32(8, Number(data.paramH), true);
  // 0x0c: u32
  if (data?.time !== undefined) view.setUint32(12, Number(data.time), true);
  // 0x10: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(16, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  return buf;
}

export class EVENTMSGView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get message(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get paramL(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get paramH(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get time(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set message(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set paramL(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set paramH(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set time(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type LPARAM = bigint | number;

export type WPARAM = bigint | number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.CWPSTRUCT (size: 32)
 */
export interface CWPSTRUCT {
  /** Windows.Win32.Foundation.LPARAM */
  lParam: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.WPARAM */
  wParam: Uint8Array | Deno.PointerValue;
  /** u32 */
  message: number;
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
}

export const sizeofCWPSTRUCT = 32;

export function allocCWPSTRUCT(data?: Partial<CWPSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofCWPSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.lParam !== undefined) view.setBigUint64(0, data.lParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lParam))), true);
  // 0x08: pointer
  if (data?.wParam !== undefined) view.setBigUint64(8, data.wParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.wParam))), true);
  // 0x10: u32
  if (data?.message !== undefined) view.setUint32(16, Number(data.message), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(24, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  return buf;
}

export class CWPSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get lParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get wParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get message(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set lParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set wParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set message(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type LRESULT = bigint | number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.CWPRETSTRUCT (size: 40)
 */
export interface CWPRETSTRUCT {
  /** Windows.Win32.Foundation.LRESULT */
  lResult: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LPARAM */
  lParam: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.WPARAM */
  wParam: Uint8Array | Deno.PointerValue;
  /** u32 */
  message: number;
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
}

export const sizeofCWPRETSTRUCT = 40;

export function allocCWPRETSTRUCT(data?: Partial<CWPRETSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofCWPRETSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.lResult !== undefined) view.setBigUint64(0, data.lResult === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lResult))), true);
  // 0x08: pointer
  if (data?.lParam !== undefined) view.setBigUint64(8, data.lParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lParam))), true);
  // 0x10: pointer
  if (data?.wParam !== undefined) view.setBigUint64(16, data.wParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.wParam))), true);
  // 0x18: u32
  if (data?.message !== undefined) view.setUint32(24, Number(data.message), true);
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(32, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  return buf;
}

export class CWPRETSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get lResult(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get lParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get wParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get message(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set lResult(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set lParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set wParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set message(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.KBDLLHOOKSTRUCT (size: 24)
 */
export interface KBDLLHOOKSTRUCT {
  /** u32 */
  vkCode: number;
  /** u32 */
  scanCode: number;
  /** Windows.Win32.UI.WindowsAndMessaging.KBDLLHOOKSTRUCT_FLAGS */
  flags: KBDLLHOOKSTRUCT_FLAGS;
  /** u32 */
  time: number;
  /** usize */
  dwExtraInfo: bigint | number;
}

export const sizeofKBDLLHOOKSTRUCT = 24;

export function allocKBDLLHOOKSTRUCT(data?: Partial<KBDLLHOOKSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofKBDLLHOOKSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.vkCode !== undefined) view.setUint32(0, Number(data.vkCode), true);
  // 0x04: u32
  if (data?.scanCode !== undefined) view.setUint32(4, Number(data.scanCode), true);
  // 0x08: u32
  if (data?.flags !== undefined) view.setUint32(8, Number(data.flags), true);
  // 0x0c: u32
  if (data?.time !== undefined) view.setUint32(12, Number(data.time), true);
  // 0x10: usize
  if (data?.dwExtraInfo !== undefined) view.setBigUint64(16, BigInt(data.dwExtraInfo), true);
  return buf;
}

export class KBDLLHOOKSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get vkCode(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get scanCode(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get flags(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get time(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: usize
  get dwExtraInfo(): bigint | number {
    return Number(this.view.getBigUint64(16, true));
  }

  // 0x00: u32
  set vkCode(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set scanCode(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set flags(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set time(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: usize
  set dwExtraInfo(value: bigint | number) {
    this.view.setBigUint64(16, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Foundation.POINT (size: 8)
 */
export interface POINT {
  /** i32 */
  x: number;
  /** i32 */
  y: number;
}

export const sizeofPOINT = 8;

export function allocPOINT(data?: Partial<POINT>): Uint8Array {
  const buf = new Uint8Array(sizeofPOINT);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.x !== undefined) view.setInt32(0, Number(data.x), true);
  // 0x04: i32
  if (data?.y !== undefined) view.setInt32(4, Number(data.y), true);
  return buf;
}

export class POINTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get x(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: i32
  get y(): number {
    return this.view.getInt32(4, true);
  }

  // 0x00: i32
  set x(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: i32
  set y(value: number) {
    this.view.setInt32(4, value, true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MSLLHOOKSTRUCT (size: 32)
 */
export interface MSLLHOOKSTRUCT {
  /** Windows.Win32.Foundation.POINT */
  pt: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.MOUSEHOOKSTRUCTEX_MOUSE_DATA */
  mouseData: MOUSEHOOKSTRUCTEX_MOUSE_DATA;
  /** u32 */
  flags: number;
  /** u32 */
  time: number;
  /** usize */
  dwExtraInfo: bigint | number;
}

export const sizeofMSLLHOOKSTRUCT = 32;

export function allocMSLLHOOKSTRUCT(data?: Partial<MSLLHOOKSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofMSLLHOOKSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.pt !== undefined) view.setBigUint64(0, data.pt === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pt))), true);
  // 0x08: u32
  if (data?.mouseData !== undefined) view.setUint32(8, Number(data.mouseData), true);
  // 0x0c: u32
  if (data?.flags !== undefined) view.setUint32(12, Number(data.flags), true);
  // 0x10: u32
  if (data?.time !== undefined) view.setUint32(16, Number(data.time), true);
  // 0x14: pad4
  // 0x18: usize
  if (data?.dwExtraInfo !== undefined) view.setBigUint64(24, BigInt(data.dwExtraInfo), true);
  return buf;
}

export class MSLLHOOKSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get pt(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get mouseData(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get flags(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get time(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: usize
  get dwExtraInfo(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x00: pointer
  set pt(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set mouseData(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set flags(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set time(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: usize
  set dwExtraInfo(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.DEBUGHOOKINFO (size: 32)
 */
export interface DEBUGHOOKINFO {
  /** u32 */
  idThread: number;
  /** u32 */
  idThreadInstaller: number;
  /** Windows.Win32.Foundation.LPARAM */
  lParam: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.WPARAM */
  wParam: Uint8Array | Deno.PointerValue;
  /** i32 */
  code: number;
}

export const sizeofDEBUGHOOKINFO = 32;

export function allocDEBUGHOOKINFO(data?: Partial<DEBUGHOOKINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofDEBUGHOOKINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.idThread !== undefined) view.setUint32(0, Number(data.idThread), true);
  // 0x04: u32
  if (data?.idThreadInstaller !== undefined) view.setUint32(4, Number(data.idThreadInstaller), true);
  // 0x08: pointer
  if (data?.lParam !== undefined) view.setBigUint64(8, data.lParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lParam))), true);
  // 0x10: pointer
  if (data?.wParam !== undefined) view.setBigUint64(16, data.wParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.wParam))), true);
  // 0x18: i32
  if (data?.code !== undefined) view.setInt32(24, Number(data.code), true);
  // 0x1c: pad4
  return buf;
}

export class DEBUGHOOKINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get idThread(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get idThreadInstaller(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get lParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get wParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: i32
  get code(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: pad4

  // 0x00: u32
  set idThread(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set idThreadInstaller(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set lParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set wParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: i32
  set code(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MOUSEHOOKSTRUCT (size: 32)
 */
export interface MOUSEHOOKSTRUCT {
  /** Windows.Win32.Foundation.POINT */
  pt: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
  /** u32 */
  wHitTestCode: number;
  /** usize */
  dwExtraInfo: bigint | number;
}

export const sizeofMOUSEHOOKSTRUCT = 32;

export function allocMOUSEHOOKSTRUCT(data?: Partial<MOUSEHOOKSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofMOUSEHOOKSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.pt !== undefined) view.setBigUint64(0, data.pt === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pt))), true);
  // 0x08: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(8, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  // 0x10: u32
  if (data?.wHitTestCode !== undefined) view.setUint32(16, Number(data.wHitTestCode), true);
  // 0x14: pad4
  // 0x18: usize
  if (data?.dwExtraInfo !== undefined) view.setBigUint64(24, BigInt(data.dwExtraInfo), true);
  return buf;
}

export class MOUSEHOOKSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get pt(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get wHitTestCode(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: usize
  get dwExtraInfo(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x00: pointer
  set pt(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set wHitTestCode(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: usize
  set dwExtraInfo(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MOUSEHOOKSTRUCTEX (size: 16)
 */
export interface MOUSEHOOKSTRUCTEX {
  /** Windows.Win32.UI.WindowsAndMessaging.MOUSEHOOKSTRUCT */
  Base: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.MOUSEHOOKSTRUCTEX_MOUSE_DATA */
  mouseData: MOUSEHOOKSTRUCTEX_MOUSE_DATA;
}

export const sizeofMOUSEHOOKSTRUCTEX = 16;

export function allocMOUSEHOOKSTRUCTEX(data?: Partial<MOUSEHOOKSTRUCTEX>): Uint8Array {
  const buf = new Uint8Array(sizeofMOUSEHOOKSTRUCTEX);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Base !== undefined) view.setBigUint64(0, data.Base === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Base))), true);
  // 0x08: u32
  if (data?.mouseData !== undefined) view.setUint32(8, Number(data.mouseData), true);
  // 0x0c: pad4
  return buf;
}

export class MOUSEHOOKSTRUCTEXView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Base(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get mouseData(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: pointer
  set Base(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set mouseData(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.HARDWAREHOOKSTRUCT (size: 32)
 */
export interface HARDWAREHOOKSTRUCT {
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
  /** u32 */
  message: number;
  /** Windows.Win32.Foundation.WPARAM */
  wParam: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LPARAM */
  lParam: Uint8Array | Deno.PointerValue;
}

export const sizeofHARDWAREHOOKSTRUCT = 32;

export function allocHARDWAREHOOKSTRUCT(data?: Partial<HARDWAREHOOKSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofHARDWAREHOOKSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(0, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  // 0x08: u32
  if (data?.message !== undefined) view.setUint32(8, Number(data.message), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.wParam !== undefined) view.setBigUint64(16, data.wParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.wParam))), true);
  // 0x18: pointer
  if (data?.lParam !== undefined) view.setBigUint64(24, data.lParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lParam))), true);
  return buf;
}

export class HARDWAREHOOKSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get message(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get wParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get lParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set message(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set wParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set lParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type HINSTANCE = bigint | number;

export type HBRUSH = bigint | number;

export type PSTR = Deno.PointerValue | Uint8Array;

/**
 * Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXA (size: 80)
 */
export interface WNDCLASSEXA {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.WNDCLASS_STYLES */
  style: WNDCLASS_STYLES;
  /** Windows.Win32.UI.WindowsAndMessaging.WNDPROC */
  lpfnWndProc: Uint8Array | Deno.PointerValue;
  /** i32 */
  cbClsExtra: number;
  /** i32 */
  cbWndExtra: number;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HICON */
  hIcon: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HCURSOR */
  hCursor: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBRUSH */
  hbrBackground: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.PSTR */
  lpszMenuName: string | null | Uint8Array;
  /** Windows.Win32.Foundation.PSTR */
  lpszClassName: string | null | Uint8Array;
  /** Windows.Win32.UI.WindowsAndMessaging.HICON */
  hIconSm: Uint8Array | Deno.PointerValue;
}

export const sizeofWNDCLASSEXA = 80;

export function allocWNDCLASSEXA(data?: Partial<WNDCLASSEXA>): Uint8Array {
  const buf = new Uint8Array(sizeofWNDCLASSEXA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.style !== undefined) view.setUint32(4, Number(data.style), true);
  // 0x08: pointer
  if (data?.lpfnWndProc !== undefined) view.setBigUint64(8, data.lpfnWndProc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpfnWndProc))), true);
  // 0x10: i32
  if (data?.cbClsExtra !== undefined) view.setInt32(16, Number(data.cbClsExtra), true);
  // 0x14: i32
  if (data?.cbWndExtra !== undefined) view.setInt32(20, Number(data.cbWndExtra), true);
  // 0x18: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(24, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x20: pointer
  if (data?.hIcon !== undefined) view.setBigUint64(32, data.hIcon === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hIcon))), true);
  // 0x28: pointer
  if (data?.hCursor !== undefined) view.setBigUint64(40, data.hCursor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hCursor))), true);
  // 0x30: pointer
  if (data?.hbrBackground !== undefined) view.setBigUint64(48, data.hbrBackground === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbrBackground))), true);
  // 0x38: buffer
  if (data?.lpszMenuName !== undefined) {
    (buf as any)._f56 = util.pstrToFfi(data.lpszMenuName);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: buffer
  if (data?.lpszClassName !== undefined) {
    (buf as any)._f64 = util.pstrToFfi(data.lpszClassName);
    view.setBigUint64(64, (buf as any)._f64 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f64))), true);
  }
  // 0x48: pointer
  if (data?.hIconSm !== undefined) view.setBigUint64(72, data.hIconSm === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hIconSm))), true);
  return buf;
}

export class WNDCLASSEXAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get style(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get lpfnWndProc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get cbClsExtra(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get cbWndExtra(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hIcon(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get hCursor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get hbrBackground(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: buffer
  get lpszMenuName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: buffer
  get lpszClassName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get hIconSm(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set style(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set lpfnWndProc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set cbClsExtra(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set cbWndExtra(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hIcon(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set hCursor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set hbrBackground(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: buffer
  set lpszMenuName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: buffer
  set lpszClassName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f64 = value;
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f64))), true);
  }

  // 0x48: pointer
  set hIconSm(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type PWSTR = Deno.PointerValue | Uint8Array;

/**
 * Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW (size: 80)
 */
export interface WNDCLASSEXW {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.WNDCLASS_STYLES */
  style: WNDCLASS_STYLES;
  /** Windows.Win32.UI.WindowsAndMessaging.WNDPROC */
  lpfnWndProc: Uint8Array | Deno.PointerValue;
  /** i32 */
  cbClsExtra: number;
  /** i32 */
  cbWndExtra: number;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HICON */
  hIcon: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HCURSOR */
  hCursor: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBRUSH */
  hbrBackground: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.PWSTR */
  lpszMenuName: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  lpszClassName: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.UI.WindowsAndMessaging.HICON */
  hIconSm: Uint8Array | Deno.PointerValue;
}

export const sizeofWNDCLASSEXW = 80;

export function allocWNDCLASSEXW(data?: Partial<WNDCLASSEXW>): Uint8Array {
  const buf = new Uint8Array(sizeofWNDCLASSEXW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.style !== undefined) view.setUint32(4, Number(data.style), true);
  // 0x08: pointer
  if (data?.lpfnWndProc !== undefined) view.setBigUint64(8, data.lpfnWndProc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpfnWndProc))), true);
  // 0x10: i32
  if (data?.cbClsExtra !== undefined) view.setInt32(16, Number(data.cbClsExtra), true);
  // 0x14: i32
  if (data?.cbWndExtra !== undefined) view.setInt32(20, Number(data.cbWndExtra), true);
  // 0x18: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(24, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x20: pointer
  if (data?.hIcon !== undefined) view.setBigUint64(32, data.hIcon === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hIcon))), true);
  // 0x28: pointer
  if (data?.hCursor !== undefined) view.setBigUint64(40, data.hCursor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hCursor))), true);
  // 0x30: pointer
  if (data?.hbrBackground !== undefined) view.setBigUint64(48, data.hbrBackground === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbrBackground))), true);
  // 0x38: buffer
  if (data?.lpszMenuName !== undefined) {
    (buf as any)._f56 = util.pwstrToFfi(data.lpszMenuName);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: buffer
  if (data?.lpszClassName !== undefined) {
    (buf as any)._f64 = util.pwstrToFfi(data.lpszClassName);
    view.setBigUint64(64, (buf as any)._f64 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f64))), true);
  }
  // 0x48: pointer
  if (data?.hIconSm !== undefined) view.setBigUint64(72, data.hIconSm === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hIconSm))), true);
  return buf;
}

export class WNDCLASSEXWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get style(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get lpfnWndProc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get cbClsExtra(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get cbWndExtra(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hIcon(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get hCursor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get hbrBackground(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: buffer
  get lpszMenuName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: buffer
  get lpszClassName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get hIconSm(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set style(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set lpfnWndProc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set cbClsExtra(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set cbWndExtra(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hIcon(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set hCursor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set hbrBackground(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: buffer
  set lpszMenuName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: buffer
  set lpszClassName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f64 = value;
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f64))), true);
  }

  // 0x48: pointer
  set hIconSm(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.WNDCLASSA (size: 72)
 */
export interface WNDCLASSA {
  /** Windows.Win32.UI.WindowsAndMessaging.WNDCLASS_STYLES */
  style: WNDCLASS_STYLES;
  /** Windows.Win32.UI.WindowsAndMessaging.WNDPROC */
  lpfnWndProc: Uint8Array | Deno.PointerValue;
  /** i32 */
  cbClsExtra: number;
  /** i32 */
  cbWndExtra: number;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HICON */
  hIcon: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HCURSOR */
  hCursor: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBRUSH */
  hbrBackground: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.PSTR */
  lpszMenuName: string | null | Uint8Array;
  /** Windows.Win32.Foundation.PSTR */
  lpszClassName: string | null | Uint8Array;
}

export const sizeofWNDCLASSA = 72;

export function allocWNDCLASSA(data?: Partial<WNDCLASSA>): Uint8Array {
  const buf = new Uint8Array(sizeofWNDCLASSA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.style !== undefined) view.setUint32(0, Number(data.style), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.lpfnWndProc !== undefined) view.setBigUint64(8, data.lpfnWndProc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpfnWndProc))), true);
  // 0x10: i32
  if (data?.cbClsExtra !== undefined) view.setInt32(16, Number(data.cbClsExtra), true);
  // 0x14: i32
  if (data?.cbWndExtra !== undefined) view.setInt32(20, Number(data.cbWndExtra), true);
  // 0x18: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(24, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x20: pointer
  if (data?.hIcon !== undefined) view.setBigUint64(32, data.hIcon === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hIcon))), true);
  // 0x28: pointer
  if (data?.hCursor !== undefined) view.setBigUint64(40, data.hCursor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hCursor))), true);
  // 0x30: pointer
  if (data?.hbrBackground !== undefined) view.setBigUint64(48, data.hbrBackground === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbrBackground))), true);
  // 0x38: buffer
  if (data?.lpszMenuName !== undefined) {
    (buf as any)._f56 = util.pstrToFfi(data.lpszMenuName);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: buffer
  if (data?.lpszClassName !== undefined) {
    (buf as any)._f64 = util.pstrToFfi(data.lpszClassName);
    view.setBigUint64(64, (buf as any)._f64 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f64))), true);
  }
  return buf;
}

export class WNDCLASSAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get style(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get lpfnWndProc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get cbClsExtra(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get cbWndExtra(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hIcon(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get hCursor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get hbrBackground(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: buffer
  get lpszMenuName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: buffer
  get lpszClassName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set style(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set lpfnWndProc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set cbClsExtra(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set cbWndExtra(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hIcon(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set hCursor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set hbrBackground(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: buffer
  set lpszMenuName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: buffer
  set lpszClassName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f64 = value;
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f64))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.WNDCLASSW (size: 72)
 */
export interface WNDCLASSW {
  /** Windows.Win32.UI.WindowsAndMessaging.WNDCLASS_STYLES */
  style: WNDCLASS_STYLES;
  /** Windows.Win32.UI.WindowsAndMessaging.WNDPROC */
  lpfnWndProc: Uint8Array | Deno.PointerValue;
  /** i32 */
  cbClsExtra: number;
  /** i32 */
  cbWndExtra: number;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HICON */
  hIcon: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HCURSOR */
  hCursor: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBRUSH */
  hbrBackground: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.PWSTR */
  lpszMenuName: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  lpszClassName: string | null | Uint8Array | Uint16Array;
}

export const sizeofWNDCLASSW = 72;

export function allocWNDCLASSW(data?: Partial<WNDCLASSW>): Uint8Array {
  const buf = new Uint8Array(sizeofWNDCLASSW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.style !== undefined) view.setUint32(0, Number(data.style), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.lpfnWndProc !== undefined) view.setBigUint64(8, data.lpfnWndProc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpfnWndProc))), true);
  // 0x10: i32
  if (data?.cbClsExtra !== undefined) view.setInt32(16, Number(data.cbClsExtra), true);
  // 0x14: i32
  if (data?.cbWndExtra !== undefined) view.setInt32(20, Number(data.cbWndExtra), true);
  // 0x18: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(24, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x20: pointer
  if (data?.hIcon !== undefined) view.setBigUint64(32, data.hIcon === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hIcon))), true);
  // 0x28: pointer
  if (data?.hCursor !== undefined) view.setBigUint64(40, data.hCursor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hCursor))), true);
  // 0x30: pointer
  if (data?.hbrBackground !== undefined) view.setBigUint64(48, data.hbrBackground === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbrBackground))), true);
  // 0x38: buffer
  if (data?.lpszMenuName !== undefined) {
    (buf as any)._f56 = util.pwstrToFfi(data.lpszMenuName);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: buffer
  if (data?.lpszClassName !== undefined) {
    (buf as any)._f64 = util.pwstrToFfi(data.lpszClassName);
    view.setBigUint64(64, (buf as any)._f64 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f64))), true);
  }
  return buf;
}

export class WNDCLASSWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get style(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get lpfnWndProc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get cbClsExtra(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get cbWndExtra(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hIcon(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get hCursor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get hbrBackground(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: buffer
  get lpszMenuName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: buffer
  get lpszClassName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set style(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set lpfnWndProc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set cbClsExtra(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set cbWndExtra(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hIcon(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set hCursor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set hbrBackground(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: buffer
  set lpszMenuName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: buffer
  set lpszClassName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f64 = value;
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f64))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MSG (size: 48)
 */
export interface MSG {
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
  /** u32 */
  message: number;
  /** Windows.Win32.Foundation.WPARAM */
  wParam: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LPARAM */
  lParam: Uint8Array | Deno.PointerValue;
  /** u32 */
  time: number;
  /** Windows.Win32.Foundation.POINT */
  pt: Uint8Array | Deno.PointerValue;
}

export const sizeofMSG = 48;

export function allocMSG(data?: Partial<MSG>): Uint8Array {
  const buf = new Uint8Array(sizeofMSG);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(0, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  // 0x08: u32
  if (data?.message !== undefined) view.setUint32(8, Number(data.message), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.wParam !== undefined) view.setBigUint64(16, data.wParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.wParam))), true);
  // 0x18: pointer
  if (data?.lParam !== undefined) view.setBigUint64(24, data.lParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lParam))), true);
  // 0x20: u32
  if (data?.time !== undefined) view.setUint32(32, Number(data.time), true);
  // 0x24: pad4
  // 0x28: pointer
  if (data?.pt !== undefined) view.setBigUint64(40, data.pt === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pt))), true);
  return buf;
}

export class MSGView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get message(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get wParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get lParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get time(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  get pt(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set message(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set wParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set lParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set time(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  set pt(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MINMAXINFO (size: 40)
 */
export interface MINMAXINFO {
  /** Windows.Win32.Foundation.POINT */
  ptReserved: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.POINT */
  ptMaxSize: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.POINT */
  ptMaxPosition: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.POINT */
  ptMinTrackSize: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.POINT */
  ptMaxTrackSize: Uint8Array | Deno.PointerValue;
}

export const sizeofMINMAXINFO = 40;

export function allocMINMAXINFO(data?: Partial<MINMAXINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofMINMAXINFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.ptReserved !== undefined) view.setBigUint64(0, data.ptReserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptReserved))), true);
  // 0x08: pointer
  if (data?.ptMaxSize !== undefined) view.setBigUint64(8, data.ptMaxSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptMaxSize))), true);
  // 0x10: pointer
  if (data?.ptMaxPosition !== undefined) view.setBigUint64(16, data.ptMaxPosition === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptMaxPosition))), true);
  // 0x18: pointer
  if (data?.ptMinTrackSize !== undefined) view.setBigUint64(24, data.ptMinTrackSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptMinTrackSize))), true);
  // 0x20: pointer
  if (data?.ptMaxTrackSize !== undefined) view.setBigUint64(32, data.ptMaxTrackSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptMaxTrackSize))), true);
  return buf;
}

export class MINMAXINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get ptReserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get ptMaxSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get ptMaxPosition(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ptMinTrackSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get ptMaxTrackSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set ptReserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set ptMaxSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set ptMaxPosition(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ptMinTrackSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set ptMaxTrackSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MDINEXTMENU (size: 24)
 */
export interface MDINEXTMENU {
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hmenuIn: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hmenuNext: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndNext: Deno.PointerValue;
}

export const sizeofMDINEXTMENU = 24;

export function allocMDINEXTMENU(data?: Partial<MDINEXTMENU>): Uint8Array {
  const buf = new Uint8Array(sizeofMDINEXTMENU);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hmenuIn !== undefined) view.setBigUint64(0, data.hmenuIn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hmenuIn))), true);
  // 0x08: pointer
  if (data?.hmenuNext !== undefined) view.setBigUint64(8, data.hmenuNext === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hmenuNext))), true);
  // 0x10: pointer
  if (data?.hwndNext !== undefined) view.setBigUint64(16, data.hwndNext === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndNext))), true);
  return buf;
}

export class MDINEXTMENUView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hmenuIn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hmenuNext(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hwndNext(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set hmenuIn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hmenuNext(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set hwndNext(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS (size: 40)
 */
export interface WINDOWPOS {
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndInsertAfter: Deno.PointerValue;
  /** i32 */
  x: number;
  /** i32 */
  y: number;
  /** i32 */
  cx: number;
  /** i32 */
  cy: number;
  /** Windows.Win32.UI.WindowsAndMessaging.SET_WINDOW_POS_FLAGS */
  flags: SET_WINDOW_POS_FLAGS;
}

export const sizeofWINDOWPOS = 40;

export function allocWINDOWPOS(data?: Partial<WINDOWPOS>): Uint8Array {
  const buf = new Uint8Array(sizeofWINDOWPOS);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(0, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  // 0x08: pointer
  if (data?.hwndInsertAfter !== undefined) view.setBigUint64(8, data.hwndInsertAfter === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndInsertAfter))), true);
  // 0x10: i32
  if (data?.x !== undefined) view.setInt32(16, Number(data.x), true);
  // 0x14: i32
  if (data?.y !== undefined) view.setInt32(20, Number(data.y), true);
  // 0x18: i32
  if (data?.cx !== undefined) view.setInt32(24, Number(data.cx), true);
  // 0x1c: i32
  if (data?.cy !== undefined) view.setInt32(28, Number(data.cy), true);
  // 0x20: u32
  if (data?.flags !== undefined) view.setUint32(32, Number(data.flags), true);
  // 0x24: pad4
  return buf;
}

export class WINDOWPOSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hwndInsertAfter(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get x(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get y(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: i32
  get cx(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: i32
  get cy(): number {
    return this.view.getInt32(28, true);
  }

  // 0x20: u32
  get flags(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x00: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hwndInsertAfter(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set x(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set y(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: i32
  set cx(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: i32
  set cy(value: number) {
    this.view.setInt32(28, value, true);
  }

  // 0x20: u32
  set flags(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.NCCALCSIZE_PARAMS (size: 16)
 */
export interface NCCALCSIZE_PARAMS {
  /** array */
  rgrc: Deno.PointerValue;
  /** ptr */
  lppos: Deno.PointerValue | Uint8Array;
}

export const sizeofNCCALCSIZE_PARAMS = 16;

export function allocNCCALCSIZE_PARAMS(data?: Partial<NCCALCSIZE_PARAMS>): Uint8Array {
  const buf = new Uint8Array(sizeofNCCALCSIZE_PARAMS);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.rgrc !== undefined) view.setBigUint64(0, data.rgrc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rgrc))), true);
  // 0x08: pointer
  if (data?.lppos !== undefined) view.setBigUint64(8, data.lppos === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lppos))), true);
  return buf;
}

export class NCCALCSIZE_PARAMSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get rgrc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get lppos(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set rgrc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set lppos(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ACCEL (size: 8)
 */
export interface ACCEL {
  /** Windows.Win32.UI.WindowsAndMessaging.ACCEL_VIRT_FLAGS */
  fVirt: ACCEL_VIRT_FLAGS;
  /** u16 */
  key: number;
  /** u16 */
  cmd: number;
}

export const sizeofACCEL = 8;

export function allocACCEL(data?: Partial<ACCEL>): Uint8Array {
  const buf = new Uint8Array(sizeofACCEL);
  const view = new DataView(buf.buffer);
  // 0x00: u8
  if (data?.fVirt !== undefined) view.setUint8(0, Number(data.fVirt));
  // 0x01: u16
  if (data?.key !== undefined) view.setUint16(1, Number(data.key), true);
  // 0x03: u16
  if (data?.cmd !== undefined) view.setUint16(3, Number(data.cmd), true);
  // 0x05: pad3
  return buf;
}

export class ACCELView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u8
  get fVirt(): number {
    return this.view.getUint8(0);
  }

  // 0x01: u16
  get key(): number {
    return this.view.getUint16(1, true);
  }

  // 0x03: u16
  get cmd(): number {
    return this.view.getUint16(3, true);
  }

  // 0x05: pad3

  // 0x00: u8
  set fVirt(value: number) {
    this.view.setUint8(0, value);
  }

  // 0x01: u16
  set key(value: number) {
    this.view.setUint16(1, value, true);
  }

  // 0x03: u16
  set cmd(value: number) {
    this.view.setUint16(3, value, true);
  }

  // 0x05: pad3
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTA (size: 80)
 */
export interface CREATESTRUCTA {
  /** ptr */
  lpCreateParams: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hMenu: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndParent: Deno.PointerValue;
  /** i32 */
  cy: number;
  /** i32 */
  cx: number;
  /** i32 */
  y: number;
  /** i32 */
  x: number;
  /** i32 */
  style: number;
  /** Windows.Win32.Foundation.PSTR */
  lpszName: string | null | Uint8Array;
  /** Windows.Win32.Foundation.PSTR */
  lpszClass: string | null | Uint8Array;
  /** u32 */
  dwExStyle: number;
}

export const sizeofCREATESTRUCTA = 80;

export function allocCREATESTRUCTA(data?: Partial<CREATESTRUCTA>): Uint8Array {
  const buf = new Uint8Array(sizeofCREATESTRUCTA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.lpCreateParams !== undefined) view.setBigUint64(0, data.lpCreateParams === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpCreateParams))), true);
  // 0x08: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(8, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x10: pointer
  if (data?.hMenu !== undefined) view.setBigUint64(16, data.hMenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hMenu))), true);
  // 0x18: pointer
  if (data?.hwndParent !== undefined) view.setBigUint64(24, data.hwndParent === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndParent))), true);
  // 0x20: i32
  if (data?.cy !== undefined) view.setInt32(32, Number(data.cy), true);
  // 0x24: i32
  if (data?.cx !== undefined) view.setInt32(36, Number(data.cx), true);
  // 0x28: i32
  if (data?.y !== undefined) view.setInt32(40, Number(data.y), true);
  // 0x2c: i32
  if (data?.x !== undefined) view.setInt32(44, Number(data.x), true);
  // 0x30: i32
  if (data?.style !== undefined) view.setInt32(48, Number(data.style), true);
  // 0x34: pad4
  // 0x38: buffer
  if (data?.lpszName !== undefined) {
    (buf as any)._f56 = util.pstrToFfi(data.lpszName);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: buffer
  if (data?.lpszClass !== undefined) {
    (buf as any)._f64 = util.pstrToFfi(data.lpszClass);
    view.setBigUint64(64, (buf as any)._f64 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f64))), true);
  }
  // 0x48: u32
  if (data?.dwExStyle !== undefined) view.setUint32(72, Number(data.dwExStyle), true);
  // 0x4c: pad4
  return buf;
}

export class CREATESTRUCTAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get lpCreateParams(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hMenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hwndParent(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get cy(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get cx(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: i32
  get y(): number {
    return this.view.getInt32(40, true);
  }

  // 0x2c: i32
  get x(): number {
    return this.view.getInt32(44, true);
  }

  // 0x30: i32
  get style(): number {
    return this.view.getInt32(48, true);
  }

  // 0x34: pad4

  // 0x38: buffer
  get lpszName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: buffer
  get lpszClass(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: u32
  get dwExStyle(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: pad4

  // 0x00: pointer
  set lpCreateParams(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set hMenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hwndParent(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set cy(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set cx(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: i32
  set y(value: number) {
    this.view.setInt32(40, value, true);
  }

  // 0x2c: i32
  set x(value: number) {
    this.view.setInt32(44, value, true);
  }

  // 0x30: i32
  set style(value: number) {
    this.view.setInt32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: buffer
  set lpszName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: buffer
  set lpszClass(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f64 = value;
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f64))), true);
  }

  // 0x48: u32
  set dwExStyle(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW (size: 80)
 */
export interface CREATESTRUCTW {
  /** ptr */
  lpCreateParams: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hMenu: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndParent: Deno.PointerValue;
  /** i32 */
  cy: number;
  /** i32 */
  cx: number;
  /** i32 */
  y: number;
  /** i32 */
  x: number;
  /** i32 */
  style: number;
  /** Windows.Win32.Foundation.PWSTR */
  lpszName: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  lpszClass: string | null | Uint8Array | Uint16Array;
  /** u32 */
  dwExStyle: number;
}

export const sizeofCREATESTRUCTW = 80;

export function allocCREATESTRUCTW(data?: Partial<CREATESTRUCTW>): Uint8Array {
  const buf = new Uint8Array(sizeofCREATESTRUCTW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.lpCreateParams !== undefined) view.setBigUint64(0, data.lpCreateParams === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpCreateParams))), true);
  // 0x08: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(8, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x10: pointer
  if (data?.hMenu !== undefined) view.setBigUint64(16, data.hMenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hMenu))), true);
  // 0x18: pointer
  if (data?.hwndParent !== undefined) view.setBigUint64(24, data.hwndParent === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndParent))), true);
  // 0x20: i32
  if (data?.cy !== undefined) view.setInt32(32, Number(data.cy), true);
  // 0x24: i32
  if (data?.cx !== undefined) view.setInt32(36, Number(data.cx), true);
  // 0x28: i32
  if (data?.y !== undefined) view.setInt32(40, Number(data.y), true);
  // 0x2c: i32
  if (data?.x !== undefined) view.setInt32(44, Number(data.x), true);
  // 0x30: i32
  if (data?.style !== undefined) view.setInt32(48, Number(data.style), true);
  // 0x34: pad4
  // 0x38: buffer
  if (data?.lpszName !== undefined) {
    (buf as any)._f56 = util.pwstrToFfi(data.lpszName);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: buffer
  if (data?.lpszClass !== undefined) {
    (buf as any)._f64 = util.pwstrToFfi(data.lpszClass);
    view.setBigUint64(64, (buf as any)._f64 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f64))), true);
  }
  // 0x48: u32
  if (data?.dwExStyle !== undefined) view.setUint32(72, Number(data.dwExStyle), true);
  // 0x4c: pad4
  return buf;
}

export class CREATESTRUCTWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get lpCreateParams(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hMenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hwndParent(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get cy(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get cx(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: i32
  get y(): number {
    return this.view.getInt32(40, true);
  }

  // 0x2c: i32
  get x(): number {
    return this.view.getInt32(44, true);
  }

  // 0x30: i32
  get style(): number {
    return this.view.getInt32(48, true);
  }

  // 0x34: pad4

  // 0x38: buffer
  get lpszName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: buffer
  get lpszClass(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: u32
  get dwExStyle(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: pad4

  // 0x00: pointer
  set lpCreateParams(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set hMenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hwndParent(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set cy(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set cx(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: i32
  set y(value: number) {
    this.view.setInt32(40, value, true);
  }

  // 0x2c: i32
  set x(value: number) {
    this.view.setInt32(44, value, true);
  }

  // 0x30: i32
  set style(value: number) {
    this.view.setInt32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: buffer
  set lpszName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: buffer
  set lpszClass(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f64 = value;
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f64))), true);
  }

  // 0x48: u32
  set dwExStyle(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.WINDOWPLACEMENT (size: 40)
 */
export interface WINDOWPLACEMENT {
  /** u32 */
  length: number;
  /** Windows.Win32.UI.WindowsAndMessaging.WINDOWPLACEMENT_FLAGS */
  flags: WINDOWPLACEMENT_FLAGS;
  /** Windows.Win32.UI.WindowsAndMessaging.SHOW_WINDOW_CMD */
  showCmd: SHOW_WINDOW_CMD;
  /** Windows.Win32.Foundation.POINT */
  ptMinPosition: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.POINT */
  ptMaxPosition: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.RECT */
  rcNormalPosition: Uint8Array | Deno.PointerValue;
}

export const sizeofWINDOWPLACEMENT = 40;

export function allocWINDOWPLACEMENT(data?: Partial<WINDOWPLACEMENT>): Uint8Array {
  const buf = new Uint8Array(sizeofWINDOWPLACEMENT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.length !== undefined) view.setUint32(0, Number(data.length), true);
  // 0x04: u32
  if (data?.flags !== undefined) view.setUint32(4, Number(data.flags), true);
  // 0x08: u32
  if (data?.showCmd !== undefined) view.setUint32(8, Number(data.showCmd), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.ptMinPosition !== undefined) view.setBigUint64(16, data.ptMinPosition === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptMinPosition))), true);
  // 0x18: pointer
  if (data?.ptMaxPosition !== undefined) view.setBigUint64(24, data.ptMaxPosition === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptMaxPosition))), true);
  // 0x20: pointer
  if (data?.rcNormalPosition !== undefined) view.setBigUint64(32, data.rcNormalPosition === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcNormalPosition))), true);
  return buf;
}

export class WINDOWPLACEMENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get length(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get flags(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get showCmd(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get ptMinPosition(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ptMaxPosition(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get rcNormalPosition(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set length(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set flags(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set showCmd(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set ptMinPosition(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ptMaxPosition(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set rcNormalPosition(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.STYLESTRUCT (size: 8)
 */
export interface STYLESTRUCT {
  /** u32 */
  styleOld: number;
  /** u32 */
  styleNew: number;
}

export const sizeofSTYLESTRUCT = 8;

export function allocSTYLESTRUCT(data?: Partial<STYLESTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofSTYLESTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.styleOld !== undefined) view.setUint32(0, Number(data.styleOld), true);
  // 0x04: u32
  if (data?.styleNew !== undefined) view.setUint32(4, Number(data.styleNew), true);
  return buf;
}

export class STYLESTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get styleOld(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get styleNew(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set styleOld(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set styleNew(value: number) {
    this.view.setUint32(4, value, true);
  }
}

export type HDC = bigint | number;

export type COLORREF = number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.UPDATELAYEREDWINDOWINFO (size: 80)
 */
export interface UPDATELAYEREDWINDOWINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Graphics.Gdi.HDC */
  hdcDst: Uint8Array | Deno.PointerValue;
  /** ptr */
  pptDst: Deno.PointerValue | Uint8Array;
  /** ptr */
  psize: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Graphics.Gdi.HDC */
  hdcSrc: Uint8Array | Deno.PointerValue;
  /** ptr */
  pptSrc: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.COLORREF */
  crKey: Uint8Array | Deno.PointerValue;
  /** ptr */
  pblend: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.UI.WindowsAndMessaging.UPDATE_LAYERED_WINDOW_FLAGS */
  dwFlags: UPDATE_LAYERED_WINDOW_FLAGS;
  /** ptr */
  prcDirty: Deno.PointerValue | Uint8Array;
}

export const sizeofUPDATELAYEREDWINDOWINFO = 80;

export function allocUPDATELAYEREDWINDOWINFO(data?: Partial<UPDATELAYEREDWINDOWINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofUPDATELAYEREDWINDOWINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.hdcDst !== undefined) view.setBigUint64(8, data.hdcDst === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hdcDst))), true);
  // 0x10: pointer
  if (data?.pptDst !== undefined) view.setBigUint64(16, data.pptDst === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pptDst))), true);
  // 0x18: pointer
  if (data?.psize !== undefined) view.setBigUint64(24, data.psize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.psize))), true);
  // 0x20: pointer
  if (data?.hdcSrc !== undefined) view.setBigUint64(32, data.hdcSrc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hdcSrc))), true);
  // 0x28: pointer
  if (data?.pptSrc !== undefined) view.setBigUint64(40, data.pptSrc === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pptSrc))), true);
  // 0x30: pointer
  if (data?.crKey !== undefined) view.setBigUint64(48, data.crKey === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.crKey))), true);
  // 0x38: pointer
  if (data?.pblend !== undefined) view.setBigUint64(56, data.pblend === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pblend))), true);
  // 0x40: u32
  if (data?.dwFlags !== undefined) view.setUint32(64, Number(data.dwFlags), true);
  // 0x44: pad4
  // 0x48: pointer
  if (data?.prcDirty !== undefined) view.setBigUint64(72, data.prcDirty === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.prcDirty))), true);
  return buf;
}

export class UPDATELAYEREDWINDOWINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get hdcDst(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get pptDst(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get psize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hdcSrc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get pptSrc(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get crKey(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get pblend(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: u32
  get dwFlags(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  get prcDirty(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set hdcDst(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set pptDst(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set psize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hdcSrc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set pptSrc(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set crKey(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set pblend(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: u32
  set dwFlags(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  set prcDirty(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.FLASHWINFO (size: 32)
 */
export interface FLASHWINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.HWND */
  hwnd: Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.FLASHWINFO_FLAGS */
  dwFlags: FLASHWINFO_FLAGS;
  /** u32 */
  uCount: number;
  /** u32 */
  dwTimeout: number;
}

export const sizeofFLASHWINFO = 32;

export function allocFLASHWINFO(data?: Partial<FLASHWINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFLASHWINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.hwnd !== undefined) view.setBigUint64(8, data.hwnd === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwnd))), true);
  // 0x10: u32
  if (data?.dwFlags !== undefined) view.setUint32(16, Number(data.dwFlags), true);
  // 0x14: u32
  if (data?.uCount !== undefined) view.setUint32(20, Number(data.uCount), true);
  // 0x18: u32
  if (data?.dwTimeout !== undefined) view.setUint32(24, Number(data.dwTimeout), true);
  // 0x1c: pad4
  return buf;
}

export class FLASHWINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get hwnd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get dwFlags(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get uCount(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get dwTimeout(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set hwnd(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set dwFlags(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set uCount(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set dwTimeout(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.DLGTEMPLATE (size: 24)
 */
export interface DLGTEMPLATE {
  /** u32 */
  style: number;
  /** u32 */
  dwExtendedStyle: number;
  /** u16 */
  cdit: number;
  /** i16 */
  x: number;
  /** i16 */
  y: number;
  /** i16 */
  cx: number;
  /** i16 */
  cy: number;
}

export const sizeofDLGTEMPLATE = 24;

export function allocDLGTEMPLATE(data?: Partial<DLGTEMPLATE>): Uint8Array {
  const buf = new Uint8Array(sizeofDLGTEMPLATE);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.style !== undefined) view.setUint32(0, Number(data.style), true);
  // 0x04: u32
  if (data?.dwExtendedStyle !== undefined) view.setUint32(4, Number(data.dwExtendedStyle), true);
  // 0x08: u16
  if (data?.cdit !== undefined) view.setUint16(8, Number(data.cdit), true);
  // 0x0a: i16
  if (data?.x !== undefined) view.setInt16(10, Number(data.x), true);
  // 0x0c: i16
  if (data?.y !== undefined) view.setInt16(12, Number(data.y), true);
  // 0x0e: i16
  if (data?.cx !== undefined) view.setInt16(14, Number(data.cx), true);
  // 0x10: i16
  if (data?.cy !== undefined) view.setInt16(16, Number(data.cy), true);
  // 0x12: pad6
  return buf;
}

export class DLGTEMPLATEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get style(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwExtendedStyle(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u16
  get cdit(): number {
    return this.view.getUint16(8, true);
  }

  // 0x0a: i16
  get x(): number {
    return this.view.getInt16(10, true);
  }

  // 0x0c: i16
  get y(): number {
    return this.view.getInt16(12, true);
  }

  // 0x0e: i16
  get cx(): number {
    return this.view.getInt16(14, true);
  }

  // 0x10: i16
  get cy(): number {
    return this.view.getInt16(16, true);
  }

  // 0x12: pad6

  // 0x00: u32
  set style(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwExtendedStyle(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u16
  set cdit(value: number) {
    this.view.setUint16(8, value, true);
  }

  // 0x0a: i16
  set x(value: number) {
    this.view.setInt16(10, value, true);
  }

  // 0x0c: i16
  set y(value: number) {
    this.view.setInt16(12, value, true);
  }

  // 0x0e: i16
  set cx(value: number) {
    this.view.setInt16(14, value, true);
  }

  // 0x10: i16
  set cy(value: number) {
    this.view.setInt16(16, value, true);
  }

  // 0x12: pad6
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.DLGITEMTEMPLATE (size: 24)
 */
export interface DLGITEMTEMPLATE {
  /** u32 */
  style: number;
  /** u32 */
  dwExtendedStyle: number;
  /** i16 */
  x: number;
  /** i16 */
  y: number;
  /** i16 */
  cx: number;
  /** i16 */
  cy: number;
  /** u16 */
  id: number;
}

export const sizeofDLGITEMTEMPLATE = 24;

export function allocDLGITEMTEMPLATE(data?: Partial<DLGITEMTEMPLATE>): Uint8Array {
  const buf = new Uint8Array(sizeofDLGITEMTEMPLATE);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.style !== undefined) view.setUint32(0, Number(data.style), true);
  // 0x04: u32
  if (data?.dwExtendedStyle !== undefined) view.setUint32(4, Number(data.dwExtendedStyle), true);
  // 0x08: i16
  if (data?.x !== undefined) view.setInt16(8, Number(data.x), true);
  // 0x0a: i16
  if (data?.y !== undefined) view.setInt16(10, Number(data.y), true);
  // 0x0c: i16
  if (data?.cx !== undefined) view.setInt16(12, Number(data.cx), true);
  // 0x0e: i16
  if (data?.cy !== undefined) view.setInt16(14, Number(data.cy), true);
  // 0x10: u16
  if (data?.id !== undefined) view.setUint16(16, Number(data.id), true);
  // 0x12: pad6
  return buf;
}

export class DLGITEMTEMPLATEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get style(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwExtendedStyle(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: i16
  get x(): number {
    return this.view.getInt16(8, true);
  }

  // 0x0a: i16
  get y(): number {
    return this.view.getInt16(10, true);
  }

  // 0x0c: i16
  get cx(): number {
    return this.view.getInt16(12, true);
  }

  // 0x0e: i16
  get cy(): number {
    return this.view.getInt16(14, true);
  }

  // 0x10: u16
  get id(): number {
    return this.view.getUint16(16, true);
  }

  // 0x12: pad6

  // 0x00: u32
  set style(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwExtendedStyle(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: i16
  set x(value: number) {
    this.view.setInt16(8, value, true);
  }

  // 0x0a: i16
  set y(value: number) {
    this.view.setInt16(10, value, true);
  }

  // 0x0c: i16
  set cx(value: number) {
    this.view.setInt16(12, value, true);
  }

  // 0x0e: i16
  set cy(value: number) {
    this.view.setInt16(14, value, true);
  }

  // 0x10: u16
  set id(value: number) {
    this.view.setUint16(16, value, true);
  }

  // 0x12: pad6
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.TPMPARAMS (size: 16)
 */
export interface TPMPARAMS {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.RECT */
  rcExclude: Uint8Array | Deno.PointerValue;
}

export const sizeofTPMPARAMS = 16;

export function allocTPMPARAMS(data?: Partial<TPMPARAMS>): Uint8Array {
  const buf = new Uint8Array(sizeofTPMPARAMS);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.rcExclude !== undefined) view.setBigUint64(8, data.rcExclude === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcExclude))), true);
  return buf;
}

export class TPMPARAMSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get rcExclude(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set rcExclude(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MENUINFO (size: 40)
 */
export interface MENUINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.MENUINFO_MASK */
  fMask: MENUINFO_MASK;
  /** Windows.Win32.UI.WindowsAndMessaging.MENUINFO_STYLE */
  dwStyle: MENUINFO_STYLE;
  /** u32 */
  cyMax: number;
  /** Windows.Win32.Graphics.Gdi.HBRUSH */
  hbrBack: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwContextHelpID: number;
  /** usize */
  dwMenuData: bigint | number;
}

export const sizeofMENUINFO = 40;

export function allocMENUINFO(data?: Partial<MENUINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofMENUINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.fMask !== undefined) view.setUint32(4, Number(data.fMask), true);
  // 0x08: u32
  if (data?.dwStyle !== undefined) view.setUint32(8, Number(data.dwStyle), true);
  // 0x0c: u32
  if (data?.cyMax !== undefined) view.setUint32(12, Number(data.cyMax), true);
  // 0x10: pointer
  if (data?.hbrBack !== undefined) view.setBigUint64(16, data.hbrBack === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbrBack))), true);
  // 0x18: u32
  if (data?.dwContextHelpID !== undefined) view.setUint32(24, Number(data.dwContextHelpID), true);
  // 0x1c: pad4
  // 0x20: usize
  if (data?.dwMenuData !== undefined) view.setBigUint64(32, BigInt(data.dwMenuData), true);
  return buf;
}

export class MENUINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get fMask(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get dwStyle(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get cyMax(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: pointer
  get hbrBack(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get dwContextHelpID(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: usize
  get dwMenuData(): bigint | number {
    return Number(this.view.getBigUint64(32, true));
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set fMask(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set dwStyle(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set cyMax(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: pointer
  set hbrBack(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set dwContextHelpID(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: usize
  set dwMenuData(value: bigint | number) {
    this.view.setBigUint64(32, BigInt(value), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MENUGETOBJECTINFO (size: 32)
 */
export interface MENUGETOBJECTINFO {
  /** Windows.Win32.UI.WindowsAndMessaging.MENUGETOBJECTINFO_FLAGS */
  dwFlags: MENUGETOBJECTINFO_FLAGS;
  /** u32 */
  uPos: number;
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hmenu: Uint8Array | Deno.PointerValue;
  /** ptr */
  riid: Deno.PointerValue | Uint8Array;
  /** ptr */
  pvObj: Deno.PointerValue | Uint8Array;
}

export const sizeofMENUGETOBJECTINFO = 32;

export function allocMENUGETOBJECTINFO(data?: Partial<MENUGETOBJECTINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofMENUGETOBJECTINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwFlags !== undefined) view.setUint32(0, Number(data.dwFlags), true);
  // 0x04: u32
  if (data?.uPos !== undefined) view.setUint32(4, Number(data.uPos), true);
  // 0x08: pointer
  if (data?.hmenu !== undefined) view.setBigUint64(8, data.hmenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hmenu))), true);
  // 0x10: pointer
  if (data?.riid !== undefined) view.setBigUint64(16, data.riid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.riid))), true);
  // 0x18: pointer
  if (data?.pvObj !== undefined) view.setBigUint64(24, data.pvObj === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pvObj))), true);
  return buf;
}

export class MENUGETOBJECTINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwFlags(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get uPos(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get hmenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get riid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get pvObj(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwFlags(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set uPos(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set hmenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set riid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set pvObj(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type HBITMAP = bigint | number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.MENUITEMINFOA (size: 80)
 */
export interface MENUITEMINFOA {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_MASK */
  fMask: MENU_ITEM_MASK;
  /** Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_TYPE */
  fType: MENU_ITEM_TYPE;
  /** Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_STATE */
  fState: MENU_ITEM_STATE;
  /** u32 */
  wID: number;
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hSubMenu: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmpChecked: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmpUnchecked: Uint8Array | Deno.PointerValue;
  /** usize */
  dwItemData: bigint | number;
  /** Windows.Win32.Foundation.PSTR */
  dwTypeData: string | null | Uint8Array;
  /** u32 */
  cch: number;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmpItem: Uint8Array | Deno.PointerValue;
}

export const sizeofMENUITEMINFOA = 80;

export function allocMENUITEMINFOA(data?: Partial<MENUITEMINFOA>): Uint8Array {
  const buf = new Uint8Array(sizeofMENUITEMINFOA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.fMask !== undefined) view.setUint32(4, Number(data.fMask), true);
  // 0x08: u32
  if (data?.fType !== undefined) view.setUint32(8, Number(data.fType), true);
  // 0x0c: u32
  if (data?.fState !== undefined) view.setUint32(12, Number(data.fState), true);
  // 0x10: u32
  if (data?.wID !== undefined) view.setUint32(16, Number(data.wID), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.hSubMenu !== undefined) view.setBigUint64(24, data.hSubMenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hSubMenu))), true);
  // 0x20: pointer
  if (data?.hbmpChecked !== undefined) view.setBigUint64(32, data.hbmpChecked === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmpChecked))), true);
  // 0x28: pointer
  if (data?.hbmpUnchecked !== undefined) view.setBigUint64(40, data.hbmpUnchecked === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmpUnchecked))), true);
  // 0x30: usize
  if (data?.dwItemData !== undefined) view.setBigUint64(48, BigInt(data.dwItemData), true);
  // 0x38: buffer
  if (data?.dwTypeData !== undefined) {
    (buf as any)._f56 = util.pstrToFfi(data.dwTypeData);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: u32
  if (data?.cch !== undefined) view.setUint32(64, Number(data.cch), true);
  // 0x44: pad4
  // 0x48: pointer
  if (data?.hbmpItem !== undefined) view.setBigUint64(72, data.hbmpItem === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmpItem))), true);
  return buf;
}

export class MENUITEMINFOAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get fMask(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get fType(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get fState(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get wID(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get hSubMenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hbmpChecked(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get hbmpUnchecked(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: usize
  get dwItemData(): bigint | number {
    return Number(this.view.getBigUint64(48, true));
  }

  // 0x38: buffer
  get dwTypeData(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: u32
  get cch(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  get hbmpItem(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set fMask(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set fType(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set fState(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set wID(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set hSubMenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hbmpChecked(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set hbmpUnchecked(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: usize
  set dwItemData(value: bigint | number) {
    this.view.setBigUint64(48, BigInt(value), true);
  }

  // 0x38: buffer
  set dwTypeData(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: u32
  set cch(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  set hbmpItem(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MENUITEMINFOW (size: 80)
 */
export interface MENUITEMINFOW {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_MASK */
  fMask: MENU_ITEM_MASK;
  /** Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_TYPE */
  fType: MENU_ITEM_TYPE;
  /** Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_STATE */
  fState: MENU_ITEM_STATE;
  /** u32 */
  wID: number;
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hSubMenu: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmpChecked: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmpUnchecked: Uint8Array | Deno.PointerValue;
  /** usize */
  dwItemData: bigint | number;
  /** Windows.Win32.Foundation.PWSTR */
  dwTypeData: string | null | Uint8Array | Uint16Array;
  /** u32 */
  cch: number;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmpItem: Uint8Array | Deno.PointerValue;
}

export const sizeofMENUITEMINFOW = 80;

export function allocMENUITEMINFOW(data?: Partial<MENUITEMINFOW>): Uint8Array {
  const buf = new Uint8Array(sizeofMENUITEMINFOW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.fMask !== undefined) view.setUint32(4, Number(data.fMask), true);
  // 0x08: u32
  if (data?.fType !== undefined) view.setUint32(8, Number(data.fType), true);
  // 0x0c: u32
  if (data?.fState !== undefined) view.setUint32(12, Number(data.fState), true);
  // 0x10: u32
  if (data?.wID !== undefined) view.setUint32(16, Number(data.wID), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.hSubMenu !== undefined) view.setBigUint64(24, data.hSubMenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hSubMenu))), true);
  // 0x20: pointer
  if (data?.hbmpChecked !== undefined) view.setBigUint64(32, data.hbmpChecked === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmpChecked))), true);
  // 0x28: pointer
  if (data?.hbmpUnchecked !== undefined) view.setBigUint64(40, data.hbmpUnchecked === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmpUnchecked))), true);
  // 0x30: usize
  if (data?.dwItemData !== undefined) view.setBigUint64(48, BigInt(data.dwItemData), true);
  // 0x38: buffer
  if (data?.dwTypeData !== undefined) {
    (buf as any)._f56 = util.pwstrToFfi(data.dwTypeData);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: u32
  if (data?.cch !== undefined) view.setUint32(64, Number(data.cch), true);
  // 0x44: pad4
  // 0x48: pointer
  if (data?.hbmpItem !== undefined) view.setBigUint64(72, data.hbmpItem === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmpItem))), true);
  return buf;
}

export class MENUITEMINFOWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get fMask(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get fType(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get fState(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get wID(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get hSubMenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hbmpChecked(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get hbmpUnchecked(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: usize
  get dwItemData(): bigint | number {
    return Number(this.view.getBigUint64(48, true));
  }

  // 0x38: buffer
  get dwTypeData(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: u32
  get cch(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  get hbmpItem(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set fMask(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set fType(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set fState(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set wID(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set hSubMenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hbmpChecked(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set hbmpUnchecked(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: usize
  set dwItemData(value: bigint | number) {
    this.view.setBigUint64(48, BigInt(value), true);
  }

  // 0x38: buffer
  set dwTypeData(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: u32
  set cch(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  set hbmpItem(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.DROPSTRUCT (size: 48)
 */
export interface DROPSTRUCT {
  /** Windows.Win32.Foundation.HWND */
  hwndSource: Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndSink: Deno.PointerValue;
  /** u32 */
  wFmt: number;
  /** usize */
  dwData: bigint | number;
  /** Windows.Win32.Foundation.POINT */
  ptDrop: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwControlData: number;
}

export const sizeofDROPSTRUCT = 48;

export function allocDROPSTRUCT(data?: Partial<DROPSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofDROPSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hwndSource !== undefined) view.setBigUint64(0, data.hwndSource === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndSource))), true);
  // 0x08: pointer
  if (data?.hwndSink !== undefined) view.setBigUint64(8, data.hwndSink === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndSink))), true);
  // 0x10: u32
  if (data?.wFmt !== undefined) view.setUint32(16, Number(data.wFmt), true);
  // 0x14: pad4
  // 0x18: usize
  if (data?.dwData !== undefined) view.setBigUint64(24, BigInt(data.dwData), true);
  // 0x20: pointer
  if (data?.ptDrop !== undefined) view.setBigUint64(32, data.ptDrop === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptDrop))), true);
  // 0x28: u32
  if (data?.dwControlData !== undefined) view.setUint32(40, Number(data.dwControlData), true);
  // 0x2c: pad4
  return buf;
}

export class DROPSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hwndSource(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hwndSink(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get wFmt(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: usize
  get dwData(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x20: pointer
  get ptDrop(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u32
  get dwControlData(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: pad4

  // 0x00: pointer
  set hwndSource(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hwndSink(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set wFmt(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: usize
  set dwData(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }

  // 0x20: pointer
  set ptDrop(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: u32
  set dwControlData(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MSGBOXPARAMSA (size: 80)
 */
export interface MSGBOXPARAMSA {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.HWND */
  hwndOwner: Deno.PointerValue;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.PSTR */
  lpszText: string | null | Uint8Array;
  /** Windows.Win32.Foundation.PSTR */
  lpszCaption: string | null | Uint8Array;
  /** Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_STYLE */
  dwStyle: MESSAGEBOX_STYLE;
  /** Windows.Win32.Foundation.PSTR */
  lpszIcon: string | null | Uint8Array;
  /** usize */
  dwContextHelpId: bigint | number;
  /** Windows.Win32.UI.WindowsAndMessaging.MSGBOXCALLBACK */
  lpfnMsgBoxCallback: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwLanguageId: number;
}

export const sizeofMSGBOXPARAMSA = 80;

export function allocMSGBOXPARAMSA(data?: Partial<MSGBOXPARAMSA>): Uint8Array {
  const buf = new Uint8Array(sizeofMSGBOXPARAMSA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.hwndOwner !== undefined) view.setBigUint64(8, data.hwndOwner === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndOwner))), true);
  // 0x10: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(16, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x18: buffer
  if (data?.lpszText !== undefined) {
    (buf as any)._f24 = util.pstrToFfi(data.lpszText);
    view.setBigUint64(24, (buf as any)._f24 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f24))), true);
  }
  // 0x20: buffer
  if (data?.lpszCaption !== undefined) {
    (buf as any)._f32 = util.pstrToFfi(data.lpszCaption);
    view.setBigUint64(32, (buf as any)._f32 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f32))), true);
  }
  // 0x28: u32
  if (data?.dwStyle !== undefined) view.setUint32(40, Number(data.dwStyle), true);
  // 0x2c: pad4
  // 0x30: buffer
  if (data?.lpszIcon !== undefined) {
    (buf as any)._f48 = util.pstrToFfi(data.lpszIcon);
    view.setBigUint64(48, (buf as any)._f48 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f48))), true);
  }
  // 0x38: usize
  if (data?.dwContextHelpId !== undefined) view.setBigUint64(56, BigInt(data.dwContextHelpId), true);
  // 0x40: pointer
  if (data?.lpfnMsgBoxCallback !== undefined) view.setBigUint64(64, data.lpfnMsgBoxCallback === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpfnMsgBoxCallback))), true);
  // 0x48: u32
  if (data?.dwLanguageId !== undefined) view.setUint32(72, Number(data.dwLanguageId), true);
  // 0x4c: pad4
  return buf;
}

export class MSGBOXPARAMSAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get hwndOwner(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: buffer
  get lpszText(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: buffer
  get lpszCaption(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u32
  get dwStyle(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: pad4

  // 0x30: buffer
  get lpszIcon(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: usize
  get dwContextHelpId(): bigint | number {
    return Number(this.view.getBigUint64(56, true));
  }

  // 0x40: pointer
  get lpfnMsgBoxCallback(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: u32
  get dwLanguageId(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set hwndOwner(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: buffer
  set lpszText(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f24 = value;
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f24))), true);
  }

  // 0x20: buffer
  set lpszCaption(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f32 = value;
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f32))), true);
  }

  // 0x28: u32
  set dwStyle(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: pad4

  // 0x30: buffer
  set lpszIcon(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f48 = value;
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f48))), true);
  }

  // 0x38: usize
  set dwContextHelpId(value: bigint | number) {
    this.view.setBigUint64(56, BigInt(value), true);
  }

  // 0x40: pointer
  set lpfnMsgBoxCallback(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: u32
  set dwLanguageId(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MSGBOXPARAMSW (size: 80)
 */
export interface MSGBOXPARAMSW {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.HWND */
  hwndOwner: Deno.PointerValue;
  /** Windows.Win32.Foundation.HINSTANCE */
  hInstance: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.PWSTR */
  lpszText: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  lpszCaption: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_STYLE */
  dwStyle: MESSAGEBOX_STYLE;
  /** Windows.Win32.Foundation.PWSTR */
  lpszIcon: string | null | Uint8Array | Uint16Array;
  /** usize */
  dwContextHelpId: bigint | number;
  /** Windows.Win32.UI.WindowsAndMessaging.MSGBOXCALLBACK */
  lpfnMsgBoxCallback: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwLanguageId: number;
}

export const sizeofMSGBOXPARAMSW = 80;

export function allocMSGBOXPARAMSW(data?: Partial<MSGBOXPARAMSW>): Uint8Array {
  const buf = new Uint8Array(sizeofMSGBOXPARAMSW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.hwndOwner !== undefined) view.setBigUint64(8, data.hwndOwner === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndOwner))), true);
  // 0x10: pointer
  if (data?.hInstance !== undefined) view.setBigUint64(16, data.hInstance === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hInstance))), true);
  // 0x18: buffer
  if (data?.lpszText !== undefined) {
    (buf as any)._f24 = util.pwstrToFfi(data.lpszText);
    view.setBigUint64(24, (buf as any)._f24 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f24))), true);
  }
  // 0x20: buffer
  if (data?.lpszCaption !== undefined) {
    (buf as any)._f32 = util.pwstrToFfi(data.lpszCaption);
    view.setBigUint64(32, (buf as any)._f32 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f32))), true);
  }
  // 0x28: u32
  if (data?.dwStyle !== undefined) view.setUint32(40, Number(data.dwStyle), true);
  // 0x2c: pad4
  // 0x30: buffer
  if (data?.lpszIcon !== undefined) {
    (buf as any)._f48 = util.pwstrToFfi(data.lpszIcon);
    view.setBigUint64(48, (buf as any)._f48 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f48))), true);
  }
  // 0x38: usize
  if (data?.dwContextHelpId !== undefined) view.setBigUint64(56, BigInt(data.dwContextHelpId), true);
  // 0x40: pointer
  if (data?.lpfnMsgBoxCallback !== undefined) view.setBigUint64(64, data.lpfnMsgBoxCallback === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpfnMsgBoxCallback))), true);
  // 0x48: u32
  if (data?.dwLanguageId !== undefined) view.setUint32(72, Number(data.dwLanguageId), true);
  // 0x4c: pad4
  return buf;
}

export class MSGBOXPARAMSWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get hwndOwner(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hInstance(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: buffer
  get lpszText(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: buffer
  get lpszCaption(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u32
  get dwStyle(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: pad4

  // 0x30: buffer
  get lpszIcon(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: usize
  get dwContextHelpId(): bigint | number {
    return Number(this.view.getBigUint64(56, true));
  }

  // 0x40: pointer
  get lpfnMsgBoxCallback(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: u32
  get dwLanguageId(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set hwndOwner(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set hInstance(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: buffer
  set lpszText(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f24 = value;
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f24))), true);
  }

  // 0x20: buffer
  set lpszCaption(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f32 = value;
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f32))), true);
  }

  // 0x28: u32
  set dwStyle(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: pad4

  // 0x30: buffer
  set lpszIcon(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f48 = value;
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f48))), true);
  }

  // 0x38: usize
  set dwContextHelpId(value: bigint | number) {
    this.view.setBigUint64(56, BigInt(value), true);
  }

  // 0x40: pointer
  set lpfnMsgBoxCallback(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: u32
  set dwLanguageId(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MENUITEMTEMPLATEHEADER (size: 8)
 */
export interface MENUITEMTEMPLATEHEADER {
  /** u16 */
  versionNumber: number;
  /** u16 */
  offset: number;
}

export const sizeofMENUITEMTEMPLATEHEADER = 8;

export function allocMENUITEMTEMPLATEHEADER(data?: Partial<MENUITEMTEMPLATEHEADER>): Uint8Array {
  const buf = new Uint8Array(sizeofMENUITEMTEMPLATEHEADER);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.versionNumber !== undefined) view.setUint16(0, Number(data.versionNumber), true);
  // 0x02: u16
  if (data?.offset !== undefined) view.setUint16(2, Number(data.offset), true);
  // 0x04: pad4
  return buf;
}

export class MENUITEMTEMPLATEHEADERView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get versionNumber(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get offset(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: pad4

  // 0x00: u16
  set versionNumber(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set offset(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MENUITEMTEMPLATE (size: 16)
 */
export interface MENUITEMTEMPLATE {
  /** u16 */
  mtOption: number;
  /** u16 */
  mtID: number;
  /** array */
  mtString: Deno.PointerValue;
}

export const sizeofMENUITEMTEMPLATE = 16;

export function allocMENUITEMTEMPLATE(data?: Partial<MENUITEMTEMPLATE>): Uint8Array {
  const buf = new Uint8Array(sizeofMENUITEMTEMPLATE);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.mtOption !== undefined) view.setUint16(0, Number(data.mtOption), true);
  // 0x02: u16
  if (data?.mtID !== undefined) view.setUint16(2, Number(data.mtID), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.mtString !== undefined) view.setBigUint64(8, data.mtString === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.mtString))), true);
  return buf;
}

export class MENUITEMTEMPLATEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get mtOption(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get mtID(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get mtString(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u16
  set mtOption(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set mtID(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set mtString(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ICONINFO (size: 32)
 */
export interface ICONINFO {
  /** Windows.Win32.Foundation.BOOL */
  fIcon: boolean;
  /** u32 */
  xHotspot: number;
  /** u32 */
  yHotspot: number;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmMask: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmColor: Uint8Array | Deno.PointerValue;
}

export const sizeofICONINFO = 32;

export function allocICONINFO(data?: Partial<ICONINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofICONINFO);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.fIcon !== undefined) view.setInt32(0, Number(data.fIcon), true);
  // 0x04: u32
  if (data?.xHotspot !== undefined) view.setUint32(4, Number(data.xHotspot), true);
  // 0x08: u32
  if (data?.yHotspot !== undefined) view.setUint32(8, Number(data.yHotspot), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.hbmMask !== undefined) view.setBigUint64(16, data.hbmMask === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmMask))), true);
  // 0x18: pointer
  if (data?.hbmColor !== undefined) view.setBigUint64(24, data.hbmColor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmColor))), true);
  return buf;
}

export class ICONINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get fIcon(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get xHotspot(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get yHotspot(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get hbmMask(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hbmColor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set fIcon(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set xHotspot(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set yHotspot(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set hbmMask(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hbmColor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.CURSORSHAPE (size: 24)
 */
export interface CURSORSHAPE {
  /** i32 */
  xHotSpot: number;
  /** i32 */
  yHotSpot: number;
  /** i32 */
  cx: number;
  /** i32 */
  cy: number;
  /** i32 */
  cbWidth: number;
  /** u8 */
  Planes: number;
  /** u8 */
  BitsPixel: number;
}

export const sizeofCURSORSHAPE = 24;

export function allocCURSORSHAPE(data?: Partial<CURSORSHAPE>): Uint8Array {
  const buf = new Uint8Array(sizeofCURSORSHAPE);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.xHotSpot !== undefined) view.setInt32(0, Number(data.xHotSpot), true);
  // 0x04: i32
  if (data?.yHotSpot !== undefined) view.setInt32(4, Number(data.yHotSpot), true);
  // 0x08: i32
  if (data?.cx !== undefined) view.setInt32(8, Number(data.cx), true);
  // 0x0c: i32
  if (data?.cy !== undefined) view.setInt32(12, Number(data.cy), true);
  // 0x10: i32
  if (data?.cbWidth !== undefined) view.setInt32(16, Number(data.cbWidth), true);
  // 0x14: u8
  if (data?.Planes !== undefined) view.setUint8(20, Number(data.Planes));
  // 0x15: u8
  if (data?.BitsPixel !== undefined) view.setUint8(21, Number(data.BitsPixel));
  // 0x16: pad2
  return buf;
}

export class CURSORSHAPEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get xHotSpot(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: i32
  get yHotSpot(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get cx(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get cy(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: i32
  get cbWidth(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: u8
  get Planes(): number {
    return this.view.getUint8(20);
  }

  // 0x15: u8
  get BitsPixel(): number {
    return this.view.getUint8(21);
  }

  // 0x16: pad2

  // 0x00: i32
  set xHotSpot(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: i32
  set yHotSpot(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set cx(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set cy(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: i32
  set cbWidth(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: u8
  set Planes(value: number) {
    this.view.setUint8(20, value);
  }

  // 0x15: u8
  set BitsPixel(value: number) {
    this.view.setUint8(21, value);
  }

  // 0x16: pad2
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ICONINFOEXA (size: 56)
 */
export interface ICONINFOEXA {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.BOOL */
  fIcon: boolean;
  /** u32 */
  xHotspot: number;
  /** u32 */
  yHotspot: number;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmMask: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmColor: Uint8Array | Deno.PointerValue;
  /** u16 */
  wResID: number;
  /** array */
  szModName: Deno.PointerValue;
  /** array */
  szResName: Deno.PointerValue;
}

export const sizeofICONINFOEXA = 56;

export function allocICONINFOEXA(data?: Partial<ICONINFOEXA>): Uint8Array {
  const buf = new Uint8Array(sizeofICONINFOEXA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.fIcon !== undefined) view.setInt32(4, Number(data.fIcon), true);
  // 0x08: u32
  if (data?.xHotspot !== undefined) view.setUint32(8, Number(data.xHotspot), true);
  // 0x0c: u32
  if (data?.yHotspot !== undefined) view.setUint32(12, Number(data.yHotspot), true);
  // 0x10: pointer
  if (data?.hbmMask !== undefined) view.setBigUint64(16, data.hbmMask === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmMask))), true);
  // 0x18: pointer
  if (data?.hbmColor !== undefined) view.setBigUint64(24, data.hbmColor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmColor))), true);
  // 0x20: u16
  if (data?.wResID !== undefined) view.setUint16(32, Number(data.wResID), true);
  // 0x22: pad6
  // 0x28: pointer
  if (data?.szModName !== undefined) view.setBigUint64(40, data.szModName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szModName))), true);
  // 0x30: pointer
  if (data?.szResName !== undefined) view.setBigUint64(48, data.szResName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szResName))), true);
  return buf;
}

export class ICONINFOEXAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get fIcon(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: u32
  get xHotspot(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get yHotspot(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: pointer
  get hbmMask(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hbmColor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u16
  get wResID(): number {
    return this.view.getUint16(32, true);
  }

  // 0x22: pad6

  // 0x28: pointer
  get szModName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szResName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set fIcon(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: u32
  set xHotspot(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set yHotspot(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: pointer
  set hbmMask(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hbmColor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u16
  set wResID(value: number) {
    this.view.setUint16(32, value, true);
  }

  // 0x22: pad6

  // 0x28: pointer
  set szModName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szResName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ICONINFOEXW (size: 56)
 */
export interface ICONINFOEXW {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.BOOL */
  fIcon: boolean;
  /** u32 */
  xHotspot: number;
  /** u32 */
  yHotspot: number;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmMask: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.HBITMAP */
  hbmColor: Uint8Array | Deno.PointerValue;
  /** u16 */
  wResID: number;
  /** array */
  szModName: Deno.PointerValue;
  /** array */
  szResName: Deno.PointerValue;
}

export const sizeofICONINFOEXW = 56;

export function allocICONINFOEXW(data?: Partial<ICONINFOEXW>): Uint8Array {
  const buf = new Uint8Array(sizeofICONINFOEXW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.fIcon !== undefined) view.setInt32(4, Number(data.fIcon), true);
  // 0x08: u32
  if (data?.xHotspot !== undefined) view.setUint32(8, Number(data.xHotspot), true);
  // 0x0c: u32
  if (data?.yHotspot !== undefined) view.setUint32(12, Number(data.yHotspot), true);
  // 0x10: pointer
  if (data?.hbmMask !== undefined) view.setBigUint64(16, data.hbmMask === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmMask))), true);
  // 0x18: pointer
  if (data?.hbmColor !== undefined) view.setBigUint64(24, data.hbmColor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hbmColor))), true);
  // 0x20: u16
  if (data?.wResID !== undefined) view.setUint16(32, Number(data.wResID), true);
  // 0x22: pad6
  // 0x28: pointer
  if (data?.szModName !== undefined) view.setBigUint64(40, data.szModName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szModName))), true);
  // 0x30: pointer
  if (data?.szResName !== undefined) view.setBigUint64(48, data.szResName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szResName))), true);
  return buf;
}

export class ICONINFOEXWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get fIcon(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: u32
  get xHotspot(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get yHotspot(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: pointer
  get hbmMask(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hbmColor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u16
  get wResID(): number {
    return this.view.getUint16(32, true);
  }

  // 0x22: pad6

  // 0x28: pointer
  get szModName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szResName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set fIcon(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: u32
  set xHotspot(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set yHotspot(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: pointer
  set hbmMask(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hbmColor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u16
  set wResID(value: number) {
    this.view.setUint16(32, value, true);
  }

  // 0x22: pad6

  // 0x28: pointer
  set szModName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szResName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.SCROLLINFO (size: 32)
 */
export interface SCROLLINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.SCROLLINFO_MASK */
  fMask: SCROLLINFO_MASK;
  /** i32 */
  nMin: number;
  /** i32 */
  nMax: number;
  /** u32 */
  nPage: number;
  /** i32 */
  nPos: number;
  /** i32 */
  nTrackPos: number;
}

export const sizeofSCROLLINFO = 32;

export function allocSCROLLINFO(data?: Partial<SCROLLINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofSCROLLINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.fMask !== undefined) view.setUint32(4, Number(data.fMask), true);
  // 0x08: i32
  if (data?.nMin !== undefined) view.setInt32(8, Number(data.nMin), true);
  // 0x0c: i32
  if (data?.nMax !== undefined) view.setInt32(12, Number(data.nMax), true);
  // 0x10: u32
  if (data?.nPage !== undefined) view.setUint32(16, Number(data.nPage), true);
  // 0x14: i32
  if (data?.nPos !== undefined) view.setInt32(20, Number(data.nPos), true);
  // 0x18: i32
  if (data?.nTrackPos !== undefined) view.setInt32(24, Number(data.nTrackPos), true);
  // 0x1c: pad4
  return buf;
}

export class SCROLLINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get fMask(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: i32
  get nMin(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get nMax(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: u32
  get nPage(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: i32
  get nPos(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: i32
  get nTrackPos(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set fMask(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: i32
  set nMin(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set nMax(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: u32
  set nPage(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: i32
  set nPos(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: i32
  set nTrackPos(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: pad4
}

export type HANDLE = bigint | number;

/**
 * Windows.Win32.UI.WindowsAndMessaging.MDICREATESTRUCTA (size: 56)
 */
export interface MDICREATESTRUCTA {
  /** Windows.Win32.Foundation.PSTR */
  szClass: string | null | Uint8Array;
  /** Windows.Win32.Foundation.PSTR */
  szTitle: string | null | Uint8Array;
  /** Windows.Win32.Foundation.HANDLE */
  hOwner: Uint8Array | Deno.PointerValue;
  /** i32 */
  x: number;
  /** i32 */
  y: number;
  /** i32 */
  cx: number;
  /** i32 */
  cy: number;
  /** Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */
  style: WINDOW_STYLE;
  /** Windows.Win32.Foundation.LPARAM */
  lParam: Uint8Array | Deno.PointerValue;
}

export const sizeofMDICREATESTRUCTA = 56;

export function allocMDICREATESTRUCTA(data?: Partial<MDICREATESTRUCTA>): Uint8Array {
  const buf = new Uint8Array(sizeofMDICREATESTRUCTA);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.szClass !== undefined) {
    (buf as any)._f0 = util.pstrToFfi(data.szClass);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.szTitle !== undefined) {
    (buf as any)._f8 = util.pstrToFfi(data.szTitle);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: pointer
  if (data?.hOwner !== undefined) view.setBigUint64(16, data.hOwner === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hOwner))), true);
  // 0x18: i32
  if (data?.x !== undefined) view.setInt32(24, Number(data.x), true);
  // 0x1c: i32
  if (data?.y !== undefined) view.setInt32(28, Number(data.y), true);
  // 0x20: i32
  if (data?.cx !== undefined) view.setInt32(32, Number(data.cx), true);
  // 0x24: i32
  if (data?.cy !== undefined) view.setInt32(36, Number(data.cy), true);
  // 0x28: u32
  if (data?.style !== undefined) view.setUint32(40, Number(data.style), true);
  // 0x2c: pad4
  // 0x30: pointer
  if (data?.lParam !== undefined) view.setBigUint64(48, data.lParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lParam))), true);
  return buf;
}

export class MDICREATESTRUCTAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get szClass(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get szTitle(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hOwner(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: i32
  get x(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: i32
  get y(): number {
    return this.view.getInt32(28, true);
  }

  // 0x20: i32
  get cx(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get cy(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: u32
  get style(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: pad4

  // 0x30: pointer
  get lParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set szClass(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set szTitle(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: pointer
  set hOwner(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: i32
  set x(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: i32
  set y(value: number) {
    this.view.setInt32(28, value, true);
  }

  // 0x20: i32
  set cx(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set cy(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: u32
  set style(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: pad4

  // 0x30: pointer
  set lParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MDICREATESTRUCTW (size: 56)
 */
export interface MDICREATESTRUCTW {
  /** Windows.Win32.Foundation.PWSTR */
  szClass: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  szTitle: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.HANDLE */
  hOwner: Uint8Array | Deno.PointerValue;
  /** i32 */
  x: number;
  /** i32 */
  y: number;
  /** i32 */
  cx: number;
  /** i32 */
  cy: number;
  /** Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */
  style: WINDOW_STYLE;
  /** Windows.Win32.Foundation.LPARAM */
  lParam: Uint8Array | Deno.PointerValue;
}

export const sizeofMDICREATESTRUCTW = 56;

export function allocMDICREATESTRUCTW(data?: Partial<MDICREATESTRUCTW>): Uint8Array {
  const buf = new Uint8Array(sizeofMDICREATESTRUCTW);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.szClass !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.szClass);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.szTitle !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.szTitle);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: pointer
  if (data?.hOwner !== undefined) view.setBigUint64(16, data.hOwner === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hOwner))), true);
  // 0x18: i32
  if (data?.x !== undefined) view.setInt32(24, Number(data.x), true);
  // 0x1c: i32
  if (data?.y !== undefined) view.setInt32(28, Number(data.y), true);
  // 0x20: i32
  if (data?.cx !== undefined) view.setInt32(32, Number(data.cx), true);
  // 0x24: i32
  if (data?.cy !== undefined) view.setInt32(36, Number(data.cy), true);
  // 0x28: u32
  if (data?.style !== undefined) view.setUint32(40, Number(data.style), true);
  // 0x2c: pad4
  // 0x30: pointer
  if (data?.lParam !== undefined) view.setBigUint64(48, data.lParam === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lParam))), true);
  return buf;
}

export class MDICREATESTRUCTWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get szClass(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get szTitle(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hOwner(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: i32
  get x(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: i32
  get y(): number {
    return this.view.getInt32(28, true);
  }

  // 0x20: i32
  get cx(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get cy(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: u32
  get style(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: pad4

  // 0x30: pointer
  get lParam(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set szClass(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set szTitle(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: pointer
  set hOwner(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: i32
  set x(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: i32
  set y(value: number) {
    this.view.setInt32(28, value, true);
  }

  // 0x20: i32
  set cx(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set cy(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: u32
  set style(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: pad4

  // 0x30: pointer
  set lParam(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.CLIENTCREATESTRUCT (size: 16)
 */
export interface CLIENTCREATESTRUCT {
  /** Windows.Win32.Foundation.HANDLE */
  hWindowMenu: Uint8Array | Deno.PointerValue;
  /** u32 */
  idFirstChild: number;
}

export const sizeofCLIENTCREATESTRUCT = 16;

export function allocCLIENTCREATESTRUCT(data?: Partial<CLIENTCREATESTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofCLIENTCREATESTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hWindowMenu !== undefined) view.setBigUint64(0, data.hWindowMenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hWindowMenu))), true);
  // 0x08: u32
  if (data?.idFirstChild !== undefined) view.setUint32(8, Number(data.idFirstChild), true);
  // 0x0c: pad4
  return buf;
}

export class CLIENTCREATESTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hWindowMenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get idFirstChild(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: pointer
  set hWindowMenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set idFirstChild(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.TOUCHPREDICTIONPARAMETERS (size: 16)
 */
export interface TOUCHPREDICTIONPARAMETERS {
  /** u32 */
  cbSize: number;
  /** u32 */
  dwLatency: number;
  /** u32 */
  dwSampleTime: number;
  /** u32 */
  bUseHWTimeStamp: number;
}

export const sizeofTOUCHPREDICTIONPARAMETERS = 16;

export function allocTOUCHPREDICTIONPARAMETERS(data?: Partial<TOUCHPREDICTIONPARAMETERS>): Uint8Array {
  const buf = new Uint8Array(sizeofTOUCHPREDICTIONPARAMETERS);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.dwLatency !== undefined) view.setUint32(4, Number(data.dwLatency), true);
  // 0x08: u32
  if (data?.dwSampleTime !== undefined) view.setUint32(8, Number(data.dwSampleTime), true);
  // 0x0c: u32
  if (data?.bUseHWTimeStamp !== undefined) view.setUint32(12, Number(data.bUseHWTimeStamp), true);
  return buf;
}

export class TOUCHPREDICTIONPARAMETERSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwLatency(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get dwSampleTime(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get bUseHWTimeStamp(): number {
    return this.view.getUint32(12, true);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwLatency(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set dwSampleTime(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set bUseHWTimeStamp(value: number) {
    this.view.setUint32(12, value, true);
  }
}

/**
 * Windows.Win32.Graphics.Gdi.LOGFONTA (size: 40)
 */
export interface LOGFONTA {
  /** i32 */
  lfHeight: number;
  /** i32 */
  lfWidth: number;
  /** i32 */
  lfEscapement: number;
  /** i32 */
  lfOrientation: number;
  /** i32 */
  lfWeight: number;
  /** u8 */
  lfItalic: number;
  /** u8 */
  lfUnderline: number;
  /** u8 */
  lfStrikeOut: number;
  /** Windows.Win32.Graphics.Gdi.FONT_CHARSET */
  lfCharSet: FONT_CHARSET;
  /** Windows.Win32.Graphics.Gdi.FONT_OUTPUT_PRECISION */
  lfOutPrecision: FONT_OUTPUT_PRECISION;
  /** Windows.Win32.Graphics.Gdi.FONT_CLIP_PRECISION */
  lfClipPrecision: FONT_CLIP_PRECISION;
  /** Windows.Win32.Graphics.Gdi.FONT_QUALITY */
  lfQuality: FONT_QUALITY;
  /** u8 */
  lfPitchAndFamily: number;
  /** array */
  lfFaceName: Deno.PointerValue;
}

export const sizeofLOGFONTA = 40;

export function allocLOGFONTA(data?: Partial<LOGFONTA>): Uint8Array {
  const buf = new Uint8Array(sizeofLOGFONTA);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.lfHeight !== undefined) view.setInt32(0, Number(data.lfHeight), true);
  // 0x04: i32
  if (data?.lfWidth !== undefined) view.setInt32(4, Number(data.lfWidth), true);
  // 0x08: i32
  if (data?.lfEscapement !== undefined) view.setInt32(8, Number(data.lfEscapement), true);
  // 0x0c: i32
  if (data?.lfOrientation !== undefined) view.setInt32(12, Number(data.lfOrientation), true);
  // 0x10: i32
  if (data?.lfWeight !== undefined) view.setInt32(16, Number(data.lfWeight), true);
  // 0x14: u8
  if (data?.lfItalic !== undefined) view.setUint8(20, Number(data.lfItalic));
  // 0x15: u8
  if (data?.lfUnderline !== undefined) view.setUint8(21, Number(data.lfUnderline));
  // 0x16: u8
  if (data?.lfStrikeOut !== undefined) view.setUint8(22, Number(data.lfStrikeOut));
  // 0x17: u8
  if (data?.lfCharSet !== undefined) view.setUint8(23, Number(data.lfCharSet));
  // 0x18: u8
  if (data?.lfOutPrecision !== undefined) view.setUint8(24, Number(data.lfOutPrecision));
  // 0x19: u8
  if (data?.lfClipPrecision !== undefined) view.setUint8(25, Number(data.lfClipPrecision));
  // 0x1a: u8
  if (data?.lfQuality !== undefined) view.setUint8(26, Number(data.lfQuality));
  // 0x1b: u8
  if (data?.lfPitchAndFamily !== undefined) view.setUint8(27, Number(data.lfPitchAndFamily));
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.lfFaceName !== undefined) view.setBigUint64(32, data.lfFaceName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfFaceName))), true);
  return buf;
}

export class LOGFONTAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get lfHeight(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: i32
  get lfWidth(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get lfEscapement(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get lfOrientation(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: i32
  get lfWeight(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: u8
  get lfItalic(): number {
    return this.view.getUint8(20);
  }

  // 0x15: u8
  get lfUnderline(): number {
    return this.view.getUint8(21);
  }

  // 0x16: u8
  get lfStrikeOut(): number {
    return this.view.getUint8(22);
  }

  // 0x17: u8
  get lfCharSet(): number {
    return this.view.getUint8(23);
  }

  // 0x18: u8
  get lfOutPrecision(): number {
    return this.view.getUint8(24);
  }

  // 0x19: u8
  get lfClipPrecision(): number {
    return this.view.getUint8(25);
  }

  // 0x1a: u8
  get lfQuality(): number {
    return this.view.getUint8(26);
  }

  // 0x1b: u8
  get lfPitchAndFamily(): number {
    return this.view.getUint8(27);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get lfFaceName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set lfHeight(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: i32
  set lfWidth(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set lfEscapement(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set lfOrientation(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: i32
  set lfWeight(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: u8
  set lfItalic(value: number) {
    this.view.setUint8(20, value);
  }

  // 0x15: u8
  set lfUnderline(value: number) {
    this.view.setUint8(21, value);
  }

  // 0x16: u8
  set lfStrikeOut(value: number) {
    this.view.setUint8(22, value);
  }

  // 0x17: u8
  set lfCharSet(value: number) {
    this.view.setUint8(23, value);
  }

  // 0x18: u8
  set lfOutPrecision(value: number) {
    this.view.setUint8(24, value);
  }

  // 0x19: u8
  set lfClipPrecision(value: number) {
    this.view.setUint8(25, value);
  }

  // 0x1a: u8
  set lfQuality(value: number) {
    this.view.setUint8(26, value);
  }

  // 0x1b: u8
  set lfPitchAndFamily(value: number) {
    this.view.setUint8(27, value);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set lfFaceName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.NONCLIENTMETRICSA (size: 88)
 */
export interface NONCLIENTMETRICSA {
  /** u32 */
  cbSize: number;
  /** i32 */
  iBorderWidth: number;
  /** i32 */
  iScrollWidth: number;
  /** i32 */
  iScrollHeight: number;
  /** i32 */
  iCaptionWidth: number;
  /** i32 */
  iCaptionHeight: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTA */
  lfCaptionFont: Uint8Array | Deno.PointerValue;
  /** i32 */
  iSmCaptionWidth: number;
  /** i32 */
  iSmCaptionHeight: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTA */
  lfSmCaptionFont: Uint8Array | Deno.PointerValue;
  /** i32 */
  iMenuWidth: number;
  /** i32 */
  iMenuHeight: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTA */
  lfMenuFont: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.LOGFONTA */
  lfStatusFont: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.LOGFONTA */
  lfMessageFont: Uint8Array | Deno.PointerValue;
  /** i32 */
  iPaddedBorderWidth: number;
}

export const sizeofNONCLIENTMETRICSA = 88;

export function allocNONCLIENTMETRICSA(data?: Partial<NONCLIENTMETRICSA>): Uint8Array {
  const buf = new Uint8Array(sizeofNONCLIENTMETRICSA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.iBorderWidth !== undefined) view.setInt32(4, Number(data.iBorderWidth), true);
  // 0x08: i32
  if (data?.iScrollWidth !== undefined) view.setInt32(8, Number(data.iScrollWidth), true);
  // 0x0c: i32
  if (data?.iScrollHeight !== undefined) view.setInt32(12, Number(data.iScrollHeight), true);
  // 0x10: i32
  if (data?.iCaptionWidth !== undefined) view.setInt32(16, Number(data.iCaptionWidth), true);
  // 0x14: i32
  if (data?.iCaptionHeight !== undefined) view.setInt32(20, Number(data.iCaptionHeight), true);
  // 0x18: pointer
  if (data?.lfCaptionFont !== undefined) view.setBigUint64(24, data.lfCaptionFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfCaptionFont))), true);
  // 0x20: i32
  if (data?.iSmCaptionWidth !== undefined) view.setInt32(32, Number(data.iSmCaptionWidth), true);
  // 0x24: i32
  if (data?.iSmCaptionHeight !== undefined) view.setInt32(36, Number(data.iSmCaptionHeight), true);
  // 0x28: pointer
  if (data?.lfSmCaptionFont !== undefined) view.setBigUint64(40, data.lfSmCaptionFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfSmCaptionFont))), true);
  // 0x30: i32
  if (data?.iMenuWidth !== undefined) view.setInt32(48, Number(data.iMenuWidth), true);
  // 0x34: i32
  if (data?.iMenuHeight !== undefined) view.setInt32(52, Number(data.iMenuHeight), true);
  // 0x38: pointer
  if (data?.lfMenuFont !== undefined) view.setBigUint64(56, data.lfMenuFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfMenuFont))), true);
  // 0x40: pointer
  if (data?.lfStatusFont !== undefined) view.setBigUint64(64, data.lfStatusFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfStatusFont))), true);
  // 0x48: pointer
  if (data?.lfMessageFont !== undefined) view.setBigUint64(72, data.lfMessageFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfMessageFont))), true);
  // 0x50: i32
  if (data?.iPaddedBorderWidth !== undefined) view.setInt32(80, Number(data.iPaddedBorderWidth), true);
  // 0x54: pad4
  return buf;
}

export class NONCLIENTMETRICSAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get iBorderWidth(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get iScrollWidth(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get iScrollHeight(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: i32
  get iCaptionWidth(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get iCaptionHeight(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: pointer
  get lfCaptionFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get iSmCaptionWidth(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get iSmCaptionHeight(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: pointer
  get lfSmCaptionFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: i32
  get iMenuWidth(): number {
    return this.view.getInt32(48, true);
  }

  // 0x34: i32
  get iMenuHeight(): number {
    return this.view.getInt32(52, true);
  }

  // 0x38: pointer
  get lfMenuFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get lfStatusFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get lfMessageFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: i32
  get iPaddedBorderWidth(): number {
    return this.view.getInt32(80, true);
  }

  // 0x54: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set iBorderWidth(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set iScrollWidth(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set iScrollHeight(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: i32
  set iCaptionWidth(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set iCaptionHeight(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: pointer
  set lfCaptionFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set iSmCaptionWidth(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set iSmCaptionHeight(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: pointer
  set lfSmCaptionFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: i32
  set iMenuWidth(value: number) {
    this.view.setInt32(48, value, true);
  }

  // 0x34: i32
  set iMenuHeight(value: number) {
    this.view.setInt32(52, value, true);
  }

  // 0x38: pointer
  set lfMenuFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set lfStatusFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set lfMessageFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: i32
  set iPaddedBorderWidth(value: number) {
    this.view.setInt32(80, value, true);
  }

  // 0x54: pad4
}

/**
 * Windows.Win32.Graphics.Gdi.LOGFONTW (size: 40)
 */
export interface LOGFONTW {
  /** i32 */
  lfHeight: number;
  /** i32 */
  lfWidth: number;
  /** i32 */
  lfEscapement: number;
  /** i32 */
  lfOrientation: number;
  /** i32 */
  lfWeight: number;
  /** u8 */
  lfItalic: number;
  /** u8 */
  lfUnderline: number;
  /** u8 */
  lfStrikeOut: number;
  /** Windows.Win32.Graphics.Gdi.FONT_CHARSET */
  lfCharSet: FONT_CHARSET;
  /** Windows.Win32.Graphics.Gdi.FONT_OUTPUT_PRECISION */
  lfOutPrecision: FONT_OUTPUT_PRECISION;
  /** Windows.Win32.Graphics.Gdi.FONT_CLIP_PRECISION */
  lfClipPrecision: FONT_CLIP_PRECISION;
  /** Windows.Win32.Graphics.Gdi.FONT_QUALITY */
  lfQuality: FONT_QUALITY;
  /** u8 */
  lfPitchAndFamily: number;
  /** array */
  lfFaceName: Deno.PointerValue;
}

export const sizeofLOGFONTW = 40;

export function allocLOGFONTW(data?: Partial<LOGFONTW>): Uint8Array {
  const buf = new Uint8Array(sizeofLOGFONTW);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.lfHeight !== undefined) view.setInt32(0, Number(data.lfHeight), true);
  // 0x04: i32
  if (data?.lfWidth !== undefined) view.setInt32(4, Number(data.lfWidth), true);
  // 0x08: i32
  if (data?.lfEscapement !== undefined) view.setInt32(8, Number(data.lfEscapement), true);
  // 0x0c: i32
  if (data?.lfOrientation !== undefined) view.setInt32(12, Number(data.lfOrientation), true);
  // 0x10: i32
  if (data?.lfWeight !== undefined) view.setInt32(16, Number(data.lfWeight), true);
  // 0x14: u8
  if (data?.lfItalic !== undefined) view.setUint8(20, Number(data.lfItalic));
  // 0x15: u8
  if (data?.lfUnderline !== undefined) view.setUint8(21, Number(data.lfUnderline));
  // 0x16: u8
  if (data?.lfStrikeOut !== undefined) view.setUint8(22, Number(data.lfStrikeOut));
  // 0x17: u8
  if (data?.lfCharSet !== undefined) view.setUint8(23, Number(data.lfCharSet));
  // 0x18: u8
  if (data?.lfOutPrecision !== undefined) view.setUint8(24, Number(data.lfOutPrecision));
  // 0x19: u8
  if (data?.lfClipPrecision !== undefined) view.setUint8(25, Number(data.lfClipPrecision));
  // 0x1a: u8
  if (data?.lfQuality !== undefined) view.setUint8(26, Number(data.lfQuality));
  // 0x1b: u8
  if (data?.lfPitchAndFamily !== undefined) view.setUint8(27, Number(data.lfPitchAndFamily));
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.lfFaceName !== undefined) view.setBigUint64(32, data.lfFaceName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfFaceName))), true);
  return buf;
}

export class LOGFONTWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get lfHeight(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: i32
  get lfWidth(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get lfEscapement(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get lfOrientation(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: i32
  get lfWeight(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: u8
  get lfItalic(): number {
    return this.view.getUint8(20);
  }

  // 0x15: u8
  get lfUnderline(): number {
    return this.view.getUint8(21);
  }

  // 0x16: u8
  get lfStrikeOut(): number {
    return this.view.getUint8(22);
  }

  // 0x17: u8
  get lfCharSet(): number {
    return this.view.getUint8(23);
  }

  // 0x18: u8
  get lfOutPrecision(): number {
    return this.view.getUint8(24);
  }

  // 0x19: u8
  get lfClipPrecision(): number {
    return this.view.getUint8(25);
  }

  // 0x1a: u8
  get lfQuality(): number {
    return this.view.getUint8(26);
  }

  // 0x1b: u8
  get lfPitchAndFamily(): number {
    return this.view.getUint8(27);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get lfFaceName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set lfHeight(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: i32
  set lfWidth(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set lfEscapement(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set lfOrientation(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: i32
  set lfWeight(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: u8
  set lfItalic(value: number) {
    this.view.setUint8(20, value);
  }

  // 0x15: u8
  set lfUnderline(value: number) {
    this.view.setUint8(21, value);
  }

  // 0x16: u8
  set lfStrikeOut(value: number) {
    this.view.setUint8(22, value);
  }

  // 0x17: u8
  set lfCharSet(value: number) {
    this.view.setUint8(23, value);
  }

  // 0x18: u8
  set lfOutPrecision(value: number) {
    this.view.setUint8(24, value);
  }

  // 0x19: u8
  set lfClipPrecision(value: number) {
    this.view.setUint8(25, value);
  }

  // 0x1a: u8
  set lfQuality(value: number) {
    this.view.setUint8(26, value);
  }

  // 0x1b: u8
  set lfPitchAndFamily(value: number) {
    this.view.setUint8(27, value);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set lfFaceName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.NONCLIENTMETRICSW (size: 88)
 */
export interface NONCLIENTMETRICSW {
  /** u32 */
  cbSize: number;
  /** i32 */
  iBorderWidth: number;
  /** i32 */
  iScrollWidth: number;
  /** i32 */
  iScrollHeight: number;
  /** i32 */
  iCaptionWidth: number;
  /** i32 */
  iCaptionHeight: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTW */
  lfCaptionFont: Uint8Array | Deno.PointerValue;
  /** i32 */
  iSmCaptionWidth: number;
  /** i32 */
  iSmCaptionHeight: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTW */
  lfSmCaptionFont: Uint8Array | Deno.PointerValue;
  /** i32 */
  iMenuWidth: number;
  /** i32 */
  iMenuHeight: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTW */
  lfMenuFont: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.LOGFONTW */
  lfStatusFont: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Graphics.Gdi.LOGFONTW */
  lfMessageFont: Uint8Array | Deno.PointerValue;
  /** i32 */
  iPaddedBorderWidth: number;
}

export const sizeofNONCLIENTMETRICSW = 88;

export function allocNONCLIENTMETRICSW(data?: Partial<NONCLIENTMETRICSW>): Uint8Array {
  const buf = new Uint8Array(sizeofNONCLIENTMETRICSW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.iBorderWidth !== undefined) view.setInt32(4, Number(data.iBorderWidth), true);
  // 0x08: i32
  if (data?.iScrollWidth !== undefined) view.setInt32(8, Number(data.iScrollWidth), true);
  // 0x0c: i32
  if (data?.iScrollHeight !== undefined) view.setInt32(12, Number(data.iScrollHeight), true);
  // 0x10: i32
  if (data?.iCaptionWidth !== undefined) view.setInt32(16, Number(data.iCaptionWidth), true);
  // 0x14: i32
  if (data?.iCaptionHeight !== undefined) view.setInt32(20, Number(data.iCaptionHeight), true);
  // 0x18: pointer
  if (data?.lfCaptionFont !== undefined) view.setBigUint64(24, data.lfCaptionFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfCaptionFont))), true);
  // 0x20: i32
  if (data?.iSmCaptionWidth !== undefined) view.setInt32(32, Number(data.iSmCaptionWidth), true);
  // 0x24: i32
  if (data?.iSmCaptionHeight !== undefined) view.setInt32(36, Number(data.iSmCaptionHeight), true);
  // 0x28: pointer
  if (data?.lfSmCaptionFont !== undefined) view.setBigUint64(40, data.lfSmCaptionFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfSmCaptionFont))), true);
  // 0x30: i32
  if (data?.iMenuWidth !== undefined) view.setInt32(48, Number(data.iMenuWidth), true);
  // 0x34: i32
  if (data?.iMenuHeight !== undefined) view.setInt32(52, Number(data.iMenuHeight), true);
  // 0x38: pointer
  if (data?.lfMenuFont !== undefined) view.setBigUint64(56, data.lfMenuFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfMenuFont))), true);
  // 0x40: pointer
  if (data?.lfStatusFont !== undefined) view.setBigUint64(64, data.lfStatusFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfStatusFont))), true);
  // 0x48: pointer
  if (data?.lfMessageFont !== undefined) view.setBigUint64(72, data.lfMessageFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfMessageFont))), true);
  // 0x50: i32
  if (data?.iPaddedBorderWidth !== undefined) view.setInt32(80, Number(data.iPaddedBorderWidth), true);
  // 0x54: pad4
  return buf;
}

export class NONCLIENTMETRICSWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get iBorderWidth(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get iScrollWidth(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get iScrollHeight(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: i32
  get iCaptionWidth(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get iCaptionHeight(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: pointer
  get lfCaptionFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get iSmCaptionWidth(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get iSmCaptionHeight(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: pointer
  get lfSmCaptionFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: i32
  get iMenuWidth(): number {
    return this.view.getInt32(48, true);
  }

  // 0x34: i32
  get iMenuHeight(): number {
    return this.view.getInt32(52, true);
  }

  // 0x38: pointer
  get lfMenuFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get lfStatusFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get lfMessageFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: i32
  get iPaddedBorderWidth(): number {
    return this.view.getInt32(80, true);
  }

  // 0x54: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set iBorderWidth(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set iScrollWidth(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set iScrollHeight(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: i32
  set iCaptionWidth(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set iCaptionHeight(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: pointer
  set lfCaptionFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set iSmCaptionWidth(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set iSmCaptionHeight(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: pointer
  set lfSmCaptionFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: i32
  set iMenuWidth(value: number) {
    this.view.setInt32(48, value, true);
  }

  // 0x34: i32
  set iMenuHeight(value: number) {
    this.view.setInt32(52, value, true);
  }

  // 0x38: pointer
  set lfMenuFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set lfStatusFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set lfMessageFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: i32
  set iPaddedBorderWidth(value: number) {
    this.view.setInt32(80, value, true);
  }

  // 0x54: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MINIMIZEDMETRICS (size: 24)
 */
export interface MINIMIZEDMETRICS {
  /** u32 */
  cbSize: number;
  /** i32 */
  iWidth: number;
  /** i32 */
  iHorzGap: number;
  /** i32 */
  iVertGap: number;
  /** Windows.Win32.UI.WindowsAndMessaging.MINIMIZEDMETRICS_ARRANGE */
  iArrange: MINIMIZEDMETRICS_ARRANGE;
}

export const sizeofMINIMIZEDMETRICS = 24;

export function allocMINIMIZEDMETRICS(data?: Partial<MINIMIZEDMETRICS>): Uint8Array {
  const buf = new Uint8Array(sizeofMINIMIZEDMETRICS);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.iWidth !== undefined) view.setInt32(4, Number(data.iWidth), true);
  // 0x08: i32
  if (data?.iHorzGap !== undefined) view.setInt32(8, Number(data.iHorzGap), true);
  // 0x0c: i32
  if (data?.iVertGap !== undefined) view.setInt32(12, Number(data.iVertGap), true);
  // 0x10: i32
  if (data?.iArrange !== undefined) view.setInt32(16, Number(data.iArrange), true);
  // 0x14: pad4
  return buf;
}

export class MINIMIZEDMETRICSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get iWidth(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get iHorzGap(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get iVertGap(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: i32
  get iArrange(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set iWidth(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set iHorzGap(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set iVertGap(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: i32
  set iArrange(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ICONMETRICSA (size: 24)
 */
export interface ICONMETRICSA {
  /** u32 */
  cbSize: number;
  /** i32 */
  iHorzSpacing: number;
  /** i32 */
  iVertSpacing: number;
  /** i32 */
  iTitleWrap: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTA */
  lfFont: Uint8Array | Deno.PointerValue;
}

export const sizeofICONMETRICSA = 24;

export function allocICONMETRICSA(data?: Partial<ICONMETRICSA>): Uint8Array {
  const buf = new Uint8Array(sizeofICONMETRICSA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.iHorzSpacing !== undefined) view.setInt32(4, Number(data.iHorzSpacing), true);
  // 0x08: i32
  if (data?.iVertSpacing !== undefined) view.setInt32(8, Number(data.iVertSpacing), true);
  // 0x0c: i32
  if (data?.iTitleWrap !== undefined) view.setInt32(12, Number(data.iTitleWrap), true);
  // 0x10: pointer
  if (data?.lfFont !== undefined) view.setBigUint64(16, data.lfFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfFont))), true);
  return buf;
}

export class ICONMETRICSAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get iHorzSpacing(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get iVertSpacing(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get iTitleWrap(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: pointer
  get lfFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set iHorzSpacing(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set iVertSpacing(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set iTitleWrap(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: pointer
  set lfFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ICONMETRICSW (size: 24)
 */
export interface ICONMETRICSW {
  /** u32 */
  cbSize: number;
  /** i32 */
  iHorzSpacing: number;
  /** i32 */
  iVertSpacing: number;
  /** i32 */
  iTitleWrap: number;
  /** Windows.Win32.Graphics.Gdi.LOGFONTW */
  lfFont: Uint8Array | Deno.PointerValue;
}

export const sizeofICONMETRICSW = 24;

export function allocICONMETRICSW(data?: Partial<ICONMETRICSW>): Uint8Array {
  const buf = new Uint8Array(sizeofICONMETRICSW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.iHorzSpacing !== undefined) view.setInt32(4, Number(data.iHorzSpacing), true);
  // 0x08: i32
  if (data?.iVertSpacing !== undefined) view.setInt32(8, Number(data.iVertSpacing), true);
  // 0x0c: i32
  if (data?.iTitleWrap !== undefined) view.setInt32(12, Number(data.iTitleWrap), true);
  // 0x10: pointer
  if (data?.lfFont !== undefined) view.setBigUint64(16, data.lfFont === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lfFont))), true);
  return buf;
}

export class ICONMETRICSWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get iHorzSpacing(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get iVertSpacing(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get iTitleWrap(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: pointer
  get lfFont(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set iHorzSpacing(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set iVertSpacing(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set iTitleWrap(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: pointer
  set lfFont(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ANIMATIONINFO (size: 8)
 */
export interface ANIMATIONINFO {
  /** u32 */
  cbSize: number;
  /** i32 */
  iMinAnimate: number;
}

export const sizeofANIMATIONINFO = 8;

export function allocANIMATIONINFO(data?: Partial<ANIMATIONINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofANIMATIONINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.iMinAnimate !== undefined) view.setInt32(4, Number(data.iMinAnimate), true);
  return buf;
}

export class ANIMATIONINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get iMinAnimate(): number {
    return this.view.getInt32(4, true);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set iMinAnimate(value: number) {
    this.view.setInt32(4, value, true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.AUDIODESCRIPTION (size: 16)
 */
export interface AUDIODESCRIPTION {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.BOOL */
  Enabled: boolean;
  /** u32 */
  Locale: number;
}

export const sizeofAUDIODESCRIPTION = 16;

export function allocAUDIODESCRIPTION(data?: Partial<AUDIODESCRIPTION>): Uint8Array {
  const buf = new Uint8Array(sizeofAUDIODESCRIPTION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.Enabled !== undefined) view.setInt32(4, Number(data.Enabled), true);
  // 0x08: u32
  if (data?.Locale !== undefined) view.setUint32(8, Number(data.Locale), true);
  // 0x0c: pad4
  return buf;
}

export class AUDIODESCRIPTIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get Enabled(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: u32
  get Locale(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set Enabled(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: u32
  set Locale(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.GUITHREADINFO (size: 64)
 */
export interface GUITHREADINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.GUITHREADINFO_FLAGS */
  flags: GUITHREADINFO_FLAGS;
  /** Windows.Win32.Foundation.HWND */
  hwndActive: Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndFocus: Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndCapture: Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndMenuOwner: Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndMoveSize: Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndCaret: Deno.PointerValue;
  /** Windows.Win32.Foundation.RECT */
  rcCaret: Uint8Array | Deno.PointerValue;
}

export const sizeofGUITHREADINFO = 64;

export function allocGUITHREADINFO(data?: Partial<GUITHREADINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofGUITHREADINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.flags !== undefined) view.setUint32(4, Number(data.flags), true);
  // 0x08: pointer
  if (data?.hwndActive !== undefined) view.setBigUint64(8, data.hwndActive === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndActive))), true);
  // 0x10: pointer
  if (data?.hwndFocus !== undefined) view.setBigUint64(16, data.hwndFocus === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndFocus))), true);
  // 0x18: pointer
  if (data?.hwndCapture !== undefined) view.setBigUint64(24, data.hwndCapture === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndCapture))), true);
  // 0x20: pointer
  if (data?.hwndMenuOwner !== undefined) view.setBigUint64(32, data.hwndMenuOwner === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndMenuOwner))), true);
  // 0x28: pointer
  if (data?.hwndMoveSize !== undefined) view.setBigUint64(40, data.hwndMoveSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndMoveSize))), true);
  // 0x30: pointer
  if (data?.hwndCaret !== undefined) view.setBigUint64(48, data.hwndCaret === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndCaret))), true);
  // 0x38: pointer
  if (data?.rcCaret !== undefined) view.setBigUint64(56, data.rcCaret === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcCaret))), true);
  return buf;
}

export class GUITHREADINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get flags(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get hwndActive(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hwndFocus(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hwndCapture(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get hwndMenuOwner(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get hwndMoveSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get hwndCaret(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get rcCaret(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set flags(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set hwndActive(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set hwndFocus(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hwndCapture(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set hwndMenuOwner(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set hwndMoveSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set hwndCaret(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set rcCaret(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.CURSORINFO (size: 24)
 */
export interface CURSORINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.CURSORINFO_FLAGS */
  flags: CURSORINFO_FLAGS;
  /** Windows.Win32.UI.WindowsAndMessaging.HCURSOR */
  hCursor: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.POINT */
  ptScreenPos: Uint8Array | Deno.PointerValue;
}

export const sizeofCURSORINFO = 24;

export function allocCURSORINFO(data?: Partial<CURSORINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofCURSORINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.flags !== undefined) view.setUint32(4, Number(data.flags), true);
  // 0x08: pointer
  if (data?.hCursor !== undefined) view.setBigUint64(8, data.hCursor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hCursor))), true);
  // 0x10: pointer
  if (data?.ptScreenPos !== undefined) view.setBigUint64(16, data.ptScreenPos === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptScreenPos))), true);
  return buf;
}

export class CURSORINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get flags(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get hCursor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get ptScreenPos(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set flags(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set hCursor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set ptScreenPos(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.WINDOWINFO (size: 48)
 */
export interface WINDOWINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.RECT */
  rcWindow: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.RECT */
  rcClient: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwStyle: number;
  /** u32 */
  dwExStyle: number;
  /** u32 */
  dwWindowStatus: number;
  /** u32 */
  cxWindowBorders: number;
  /** u32 */
  cyWindowBorders: number;
  /** u16 */
  atomWindowType: number;
  /** u16 */
  wCreatorVersion: number;
}

export const sizeofWINDOWINFO = 48;

export function allocWINDOWINFO(data?: Partial<WINDOWINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofWINDOWINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.rcWindow !== undefined) view.setBigUint64(8, data.rcWindow === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcWindow))), true);
  // 0x10: pointer
  if (data?.rcClient !== undefined) view.setBigUint64(16, data.rcClient === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcClient))), true);
  // 0x18: u32
  if (data?.dwStyle !== undefined) view.setUint32(24, Number(data.dwStyle), true);
  // 0x1c: u32
  if (data?.dwExStyle !== undefined) view.setUint32(28, Number(data.dwExStyle), true);
  // 0x20: u32
  if (data?.dwWindowStatus !== undefined) view.setUint32(32, Number(data.dwWindowStatus), true);
  // 0x24: u32
  if (data?.cxWindowBorders !== undefined) view.setUint32(36, Number(data.cxWindowBorders), true);
  // 0x28: u32
  if (data?.cyWindowBorders !== undefined) view.setUint32(40, Number(data.cyWindowBorders), true);
  // 0x2c: u16
  if (data?.atomWindowType !== undefined) view.setUint16(44, Number(data.atomWindowType), true);
  // 0x2e: u16
  if (data?.wCreatorVersion !== undefined) view.setUint16(46, Number(data.wCreatorVersion), true);
  return buf;
}

export class WINDOWINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get rcWindow(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get rcClient(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get dwStyle(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get dwExStyle(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: u32
  get dwWindowStatus(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get cxWindowBorders(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get cyWindowBorders(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u16
  get atomWindowType(): number {
    return this.view.getUint16(44, true);
  }

  // 0x2e: u16
  get wCreatorVersion(): number {
    return this.view.getUint16(46, true);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set rcWindow(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set rcClient(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set dwStyle(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set dwExStyle(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: u32
  set dwWindowStatus(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set cxWindowBorders(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set cyWindowBorders(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u16
  set atomWindowType(value: number) {
    this.view.setUint16(44, value, true);
  }

  // 0x2e: u16
  set wCreatorVersion(value: number) {
    this.view.setUint16(46, value, true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.TITLEBARINFO (size: 24)
 */
export interface TITLEBARINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.RECT */
  rcTitleBar: Uint8Array | Deno.PointerValue;
  /** array */
  rgstate: Deno.PointerValue;
}

export const sizeofTITLEBARINFO = 24;

export function allocTITLEBARINFO(data?: Partial<TITLEBARINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofTITLEBARINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.rcTitleBar !== undefined) view.setBigUint64(8, data.rcTitleBar === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcTitleBar))), true);
  // 0x10: pointer
  if (data?.rgstate !== undefined) view.setBigUint64(16, data.rgstate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rgstate))), true);
  return buf;
}

export class TITLEBARINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get rcTitleBar(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get rgstate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set rcTitleBar(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set rgstate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.TITLEBARINFOEX (size: 32)
 */
export interface TITLEBARINFOEX {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.RECT */
  rcTitleBar: Uint8Array | Deno.PointerValue;
  /** array */
  rgstate: Deno.PointerValue;
  /** array */
  rgrect: Deno.PointerValue;
}

export const sizeofTITLEBARINFOEX = 32;

export function allocTITLEBARINFOEX(data?: Partial<TITLEBARINFOEX>): Uint8Array {
  const buf = new Uint8Array(sizeofTITLEBARINFOEX);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.rcTitleBar !== undefined) view.setBigUint64(8, data.rcTitleBar === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcTitleBar))), true);
  // 0x10: pointer
  if (data?.rgstate !== undefined) view.setBigUint64(16, data.rgstate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rgstate))), true);
  // 0x18: pointer
  if (data?.rgrect !== undefined) view.setBigUint64(24, data.rgrect === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rgrect))), true);
  return buf;
}

export class TITLEBARINFOEXView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get rcTitleBar(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get rgstate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get rgrect(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set rcTitleBar(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set rgstate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set rgrect(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MENUBARINFO (size: 40)
 */
export interface MENUBARINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.RECT */
  rcBar: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.UI.WindowsAndMessaging.HMENU */
  hMenu: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.HWND */
  hwndMenu: Deno.PointerValue;
  /** i32 */
  _bitfield: number;
}

export const sizeofMENUBARINFO = 40;

export function allocMENUBARINFO(data?: Partial<MENUBARINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofMENUBARINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.rcBar !== undefined) view.setBigUint64(8, data.rcBar === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcBar))), true);
  // 0x10: pointer
  if (data?.hMenu !== undefined) view.setBigUint64(16, data.hMenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hMenu))), true);
  // 0x18: pointer
  if (data?.hwndMenu !== undefined) view.setBigUint64(24, data.hwndMenu === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hwndMenu))), true);
  // 0x20: i32
  if (data?._bitfield !== undefined) view.setInt32(32, Number(data._bitfield), true);
  // 0x24: pad4
  return buf;
}

export class MENUBARINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get rcBar(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get hMenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hwndMenu(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get _bitfield(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: pad4

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set rcBar(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set hMenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hwndMenu(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set _bitfield(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: pad4
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.SCROLLBARINFO (size: 40)
 */
export interface SCROLLBARINFO {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.Foundation.RECT */
  rcScrollBar: Uint8Array | Deno.PointerValue;
  /** i32 */
  dxyLineButton: number;
  /** i32 */
  xyThumbTop: number;
  /** i32 */
  xyThumbBottom: number;
  /** i32 */
  reserved: number;
  /** array */
  rgstate: Deno.PointerValue;
}

export const sizeofSCROLLBARINFO = 40;

export function allocSCROLLBARINFO(data?: Partial<SCROLLBARINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofSCROLLBARINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.rcScrollBar !== undefined) view.setBigUint64(8, data.rcScrollBar === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rcScrollBar))), true);
  // 0x10: i32
  if (data?.dxyLineButton !== undefined) view.setInt32(16, Number(data.dxyLineButton), true);
  // 0x14: i32
  if (data?.xyThumbTop !== undefined) view.setInt32(20, Number(data.xyThumbTop), true);
  // 0x18: i32
  if (data?.xyThumbBottom !== undefined) view.setInt32(24, Number(data.xyThumbBottom), true);
  // 0x1c: i32
  if (data?.reserved !== undefined) view.setInt32(28, Number(data.reserved), true);
  // 0x20: pointer
  if (data?.rgstate !== undefined) view.setBigUint64(32, data.rgstate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.rgstate))), true);
  return buf;
}

export class SCROLLBARINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get rcScrollBar(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get dxyLineButton(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get xyThumbTop(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: i32
  get xyThumbBottom(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: i32
  get reserved(): number {
    return this.view.getInt32(28, true);
  }

  // 0x20: pointer
  get rgstate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set rcScrollBar(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set dxyLineButton(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set xyThumbTop(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: i32
  set xyThumbBottom(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: i32
  set reserved(value: number) {
    this.view.setInt32(28, value, true);
  }

  // 0x20: pointer
  set rgstate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.ALTTABINFO (size: 40)
 */
export interface ALTTABINFO {
  /** u32 */
  cbSize: number;
  /** i32 */
  cItems: number;
  /** i32 */
  cColumns: number;
  /** i32 */
  cRows: number;
  /** i32 */
  iColFocus: number;
  /** i32 */
  iRowFocus: number;
  /** i32 */
  cxItem: number;
  /** i32 */
  cyItem: number;
  /** Windows.Win32.Foundation.POINT */
  ptStart: Uint8Array | Deno.PointerValue;
}

export const sizeofALTTABINFO = 40;

export function allocALTTABINFO(data?: Partial<ALTTABINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofALTTABINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: i32
  if (data?.cItems !== undefined) view.setInt32(4, Number(data.cItems), true);
  // 0x08: i32
  if (data?.cColumns !== undefined) view.setInt32(8, Number(data.cColumns), true);
  // 0x0c: i32
  if (data?.cRows !== undefined) view.setInt32(12, Number(data.cRows), true);
  // 0x10: i32
  if (data?.iColFocus !== undefined) view.setInt32(16, Number(data.iColFocus), true);
  // 0x14: i32
  if (data?.iRowFocus !== undefined) view.setInt32(20, Number(data.iRowFocus), true);
  // 0x18: i32
  if (data?.cxItem !== undefined) view.setInt32(24, Number(data.cxItem), true);
  // 0x1c: i32
  if (data?.cyItem !== undefined) view.setInt32(28, Number(data.cyItem), true);
  // 0x20: pointer
  if (data?.ptStart !== undefined) view.setBigUint64(32, data.ptStart === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ptStart))), true);
  return buf;
}

export class ALTTABINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get cItems(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get cColumns(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: i32
  get cRows(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: i32
  get iColFocus(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: i32
  get iRowFocus(): number {
    return this.view.getInt32(20, true);
  }

  // 0x18: i32
  get cxItem(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: i32
  get cyItem(): number {
    return this.view.getInt32(28, true);
  }

  // 0x20: pointer
  get ptStart(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set cItems(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set cColumns(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: i32
  set cRows(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: i32
  set iColFocus(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: i32
  set iRowFocus(value: number) {
    this.view.setInt32(20, value, true);
  }

  // 0x18: i32
  set cxItem(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: i32
  set cyItem(value: number) {
    this.view.setInt32(28, value, true);
  }

  // 0x20: pointer
  set ptStart(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.CHANGEFILTERSTRUCT (size: 8)
 */
export interface CHANGEFILTERSTRUCT {
  /** u32 */
  cbSize: number;
  /** Windows.Win32.UI.WindowsAndMessaging.MSGFLTINFO_STATUS */
  ExtStatus: MSGFLTINFO_STATUS;
}

export const sizeofCHANGEFILTERSTRUCT = 8;

export function allocCHANGEFILTERSTRUCT(data?: Partial<CHANGEFILTERSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofCHANGEFILTERSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbSize !== undefined) view.setUint32(0, Number(data.cbSize), true);
  // 0x04: u32
  if (data?.ExtStatus !== undefined) view.setUint32(4, Number(data.ExtStatus), true);
  return buf;
}

export class CHANGEFILTERSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get ExtStatus(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set cbSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set ExtStatus(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.IndexedResourceQualifier (size: 16)
 */
export interface IndexedResourceQualifier {
  /** Windows.Win32.Foundation.PWSTR */
  name: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  value: string | null | Uint8Array | Uint16Array;
}

export const sizeofIndexedResourceQualifier = 16;

export function allocIndexedResourceQualifier(data?: Partial<IndexedResourceQualifier>): Uint8Array {
  const buf = new Uint8Array(sizeofIndexedResourceQualifier);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.name !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.name);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.value !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.value);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  return buf;
}

export class IndexedResourceQualifierView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get name(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get value(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set name(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set value(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle (size: 8)
 */
export interface MrmResourceIndexerHandle {
  /** ptr */
  handle: Deno.PointerValue | Uint8Array;
}

export const sizeofMrmResourceIndexerHandle = 8;

export function allocMrmResourceIndexerHandle(data?: Partial<MrmResourceIndexerHandle>): Uint8Array {
  const buf = new Uint8Array(sizeofMrmResourceIndexerHandle);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.handle !== undefined) view.setBigUint64(0, data.handle === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.handle))), true);
  return buf;
}

export class MrmResourceIndexerHandleView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get handle(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set handle(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerMessage (size: 16)
 */
export interface MrmResourceIndexerMessage {
  /** Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerMessageSeverity */
  severity: MrmResourceIndexerMessageSeverity;
  /** u32 */
  id: number;
  /** Windows.Win32.Foundation.PWSTR */
  text: string | null | Uint8Array | Uint16Array;
}

export const sizeofMrmResourceIndexerMessage = 16;

export function allocMrmResourceIndexerMessage(data?: Partial<MrmResourceIndexerMessage>): Uint8Array {
  const buf = new Uint8Array(sizeofMrmResourceIndexerMessage);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.severity !== undefined) view.setInt32(0, Number(data.severity), true);
  // 0x04: u32
  if (data?.id !== undefined) view.setUint32(4, Number(data.id), true);
  // 0x08: buffer
  if (data?.text !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.text);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  return buf;
}

export class MrmResourceIndexerMessageView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get severity(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get id(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: buffer
  get text(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set severity(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set id(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: buffer
  set text(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }
}

export type CHAR = number;

export type HRGN = bigint | number;

export type HRESULT = number;

// Native Libraries

try {
  var libUSER32_dll = Deno.dlopen("USER32.dll", {
    LoadStringA: {
      parameters: ["pointer", "u32", "buffer", "i32"],
      result: "i32",
    },
    LoadStringW: {
      parameters: ["pointer", "u32", "buffer", "i32"],
      result: "i32",
    },
    GetWindowLongPtrA: {
      parameters: ["pointer", "i32"],
      result: "isize",
    },
    GetWindowLongPtrW: {
      parameters: ["pointer", "i32"],
      result: "isize",
    },
    SetWindowLongPtrA: {
      parameters: ["pointer", "i32", "isize"],
      result: "isize",
    },
    SetWindowLongPtrW: {
      parameters: ["pointer", "i32", "isize"],
      result: "isize",
    },
    GetClassLongPtrA: {
      parameters: ["pointer", "i32"],
      result: "usize",
    },
    GetClassLongPtrW: {
      parameters: ["pointer", "i32"],
      result: "usize",
    },
    SetClassLongPtrA: {
      parameters: ["pointer", "i32", "isize"],
      result: "usize",
    },
    SetClassLongPtrW: {
      parameters: ["pointer", "i32", "isize"],
      result: "usize",
    },
    wvsprintfA: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "i32",
    },
    wvsprintfW: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "i32",
    },
    wsprintfA: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    wsprintfW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    IsHungAppWindow: {
      parameters: ["pointer"],
      result: "i32",
    },
    DisableProcessWindowsGhosting: {
      parameters: [],
      result: "void",
    },
    RegisterWindowMessageA: {
      parameters: ["buffer"],
      result: "u32",
    },
    RegisterWindowMessageW: {
      parameters: ["buffer"],
      result: "u32",
    },
    GetMessageA: {
      callback: true,
      parameters: ["pointer", "pointer", "u32", "u32"],
      result: "i32",
    },
    GetMessageW: {
      callback: true,
      parameters: ["pointer", "pointer", "u32", "u32"],
      result: "i32",
    },
    TranslateMessage: {
      callback: true,
      parameters: ["pointer"],
      result: "i32",
    },
    DispatchMessageA: {
      callback: true,
      parameters: ["pointer"],
      result: "pointer",
    },
    DispatchMessageW: {
      callback: true,
      parameters: ["pointer"],
      result: "pointer",
    },
    SetMessageQueue: {
      parameters: ["i32"],
      result: "i32",
    },
    PeekMessageA: {
      callback: true,
      parameters: ["pointer", "pointer", "u32", "u32", "u32"],
      result: "i32",
    },
    PeekMessageW: {
      callback: true,
      parameters: ["pointer", "pointer", "u32", "u32", "u32"],
      result: "i32",
    },
    GetMessagePos: {
      parameters: [],
      result: "u32",
    },
    GetMessageTime: {
      parameters: [],
      result: "i32",
    },
    GetMessageExtraInfo: {
      parameters: [],
      result: "pointer",
    },
    IsWow64Message: {
      parameters: [],
      result: "i32",
    },
    SetMessageExtraInfo: {
      parameters: ["pointer"],
      result: "pointer",
    },
    SendMessageA: {
      callback: true,
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    SendMessageW: {
      callback: true,
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    SendMessageTimeoutA: {
      parameters: ["pointer", "u32", "pointer", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    SendMessageTimeoutW: {
      parameters: ["pointer", "u32", "pointer", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    SendNotifyMessageA: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    SendNotifyMessageW: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    SendMessageCallbackA: {
      parameters: ["pointer", "u32", "pointer", "pointer", "pointer", "usize"],
      result: "i32",
    },
    SendMessageCallbackW: {
      parameters: ["pointer", "u32", "pointer", "pointer", "pointer", "usize"],
      result: "i32",
    },
    RegisterDeviceNotificationA: {
      parameters: ["pointer", "pointer", "u32"],
      result: "pointer",
    },
    RegisterDeviceNotificationW: {
      parameters: ["pointer", "pointer", "u32"],
      result: "pointer",
    },
    PostMessageA: {
      callback: true,
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    PostMessageW: {
      callback: true,
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    PostThreadMessageA: {
      parameters: ["u32", "u32", "pointer", "pointer"],
      result: "i32",
    },
    PostThreadMessageW: {
      parameters: ["u32", "u32", "pointer", "pointer"],
      result: "i32",
    },
    ReplyMessage: {
      parameters: ["pointer"],
      result: "i32",
    },
    WaitMessage: {
      parameters: [],
      result: "i32",
    },
    DefWindowProcA: {
      callback: true,
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    DefWindowProcW: {
      callback: true,
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    PostQuitMessage: {
      callback: true,
      parameters: ["i32"],
      result: "void",
    },
    CallWindowProcA: {
      callback: true,
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    CallWindowProcW: {
      callback: true,
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    InSendMessage: {
      parameters: [],
      result: "i32",
    },
    InSendMessageEx: {
      parameters: ["pointer"],
      result: "u32",
    },
    RegisterClassA: {
      parameters: ["pointer"],
      result: "u16",
    },
    RegisterClassW: {
      parameters: ["pointer"],
      result: "u16",
    },
    UnregisterClassA: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    UnregisterClassW: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    GetClassInfoA: {
      parameters: ["pointer", "buffer", "pointer"],
      result: "i32",
    },
    GetClassInfoW: {
      parameters: ["pointer", "buffer", "pointer"],
      result: "i32",
    },
    RegisterClassExA: {
      parameters: ["pointer"],
      result: "u16",
    },
    RegisterClassExW: {
      parameters: ["pointer"],
      result: "u16",
    },
    GetClassInfoExA: {
      parameters: ["pointer", "buffer", "pointer"],
      result: "i32",
    },
    GetClassInfoExW: {
      parameters: ["pointer", "buffer", "pointer"],
      result: "i32",
    },
    CreateWindowExA: {
      parameters: ["u32", "buffer", "buffer", "u32", "i32", "i32", "i32", "i32", "pointer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    CreateWindowExW: {
      parameters: ["u32", "buffer", "buffer", "u32", "i32", "i32", "i32", "i32", "pointer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    IsWindow: {
      parameters: ["pointer"],
      result: "i32",
    },
    IsMenu: {
      parameters: ["pointer"],
      result: "i32",
    },
    IsChild: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    DestroyWindow: {
      parameters: ["pointer"],
      result: "i32",
    },
    ShowWindow: {
      parameters: ["pointer", "u32"],
      result: "i32",
    },
    AnimateWindow: {
      parameters: ["pointer", "u32", "u32"],
      result: "i32",
    },
    UpdateLayeredWindow: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "u32"],
      result: "i32",
    },
    UpdateLayeredWindowIndirect: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetLayeredWindowAttributes: {
      parameters: ["pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    SetLayeredWindowAttributes: {
      parameters: ["pointer", "pointer", "u8", "u32"],
      result: "i32",
    },
    ShowWindowAsync: {
      parameters: ["pointer", "u32"],
      result: "i32",
    },
    FlashWindow: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    FlashWindowEx: {
      parameters: ["pointer"],
      result: "i32",
    },
    ShowOwnedPopups: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    OpenIcon: {
      parameters: ["pointer"],
      result: "i32",
    },
    CloseWindow: {
      parameters: ["pointer"],
      result: "i32",
    },
    MoveWindow: {
      parameters: ["pointer", "i32", "i32", "i32", "i32", "i32"],
      result: "i32",
    },
    SetWindowPos: {
      parameters: ["pointer", "pointer", "i32", "i32", "i32", "i32", "u32"],
      result: "i32",
    },
    GetWindowPlacement: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    SetWindowPlacement: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetWindowDisplayAffinity: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    SetWindowDisplayAffinity: {
      parameters: ["pointer", "u32"],
      result: "i32",
    },
    BeginDeferWindowPos: {
      parameters: ["i32"],
      result: "isize",
    },
    DeferWindowPos: {
      parameters: ["isize", "pointer", "pointer", "i32", "i32", "i32", "i32", "u32"],
      result: "isize",
    },
    EndDeferWindowPos: {
      parameters: ["isize"],
      result: "i32",
    },
    IsWindowVisible: {
      parameters: ["pointer"],
      result: "i32",
    },
    IsIconic: {
      parameters: ["pointer"],
      result: "i32",
    },
    AnyPopup: {
      parameters: [],
      result: "i32",
    },
    BringWindowToTop: {
      parameters: ["pointer"],
      result: "i32",
    },
    IsZoomed: {
      parameters: ["pointer"],
      result: "i32",
    },
    CreateDialogParamA: {
      parameters: ["pointer", "buffer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    CreateDialogParamW: {
      parameters: ["pointer", "buffer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    CreateDialogIndirectParamA: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    CreateDialogIndirectParamW: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    DialogBoxParamA: {
      parameters: ["pointer", "buffer", "pointer", "pointer", "pointer"],
      result: "isize",
    },
    DialogBoxParamW: {
      parameters: ["pointer", "buffer", "pointer", "pointer", "pointer"],
      result: "isize",
    },
    DialogBoxIndirectParamA: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "isize",
    },
    DialogBoxIndirectParamW: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "isize",
    },
    EndDialog: {
      parameters: ["pointer", "isize"],
      result: "i32",
    },
    GetDlgItem: {
      parameters: ["pointer", "i32"],
      result: "pointer",
    },
    SetDlgItemInt: {
      parameters: ["pointer", "i32", "u32", "i32"],
      result: "i32",
    },
    GetDlgItemInt: {
      parameters: ["pointer", "i32", "pointer", "i32"],
      result: "u32",
    },
    SetDlgItemTextA: {
      parameters: ["pointer", "i32", "buffer"],
      result: "i32",
    },
    SetDlgItemTextW: {
      parameters: ["pointer", "i32", "buffer"],
      result: "i32",
    },
    GetDlgItemTextA: {
      parameters: ["pointer", "i32", "buffer", "i32"],
      result: "u32",
    },
    GetDlgItemTextW: {
      parameters: ["pointer", "i32", "buffer", "i32"],
      result: "u32",
    },
    SendDlgItemMessageA: {
      parameters: ["pointer", "i32", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    SendDlgItemMessageW: {
      parameters: ["pointer", "i32", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    GetNextDlgGroupItem: {
      parameters: ["pointer", "pointer", "i32"],
      result: "pointer",
    },
    GetNextDlgTabItem: {
      parameters: ["pointer", "pointer", "i32"],
      result: "pointer",
    },
    GetDlgCtrlID: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetDialogBaseUnits: {
      parameters: [],
      result: "i32",
    },
    DefDlgProcA: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    DefDlgProcW: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    CallMsgFilterA: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    CallMsgFilterW: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    CharToOemA: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    CharToOemW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    OemToCharA: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    OemToCharW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    CharToOemBuffA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    CharToOemBuffW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    OemToCharBuffA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    OemToCharBuffW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    CharUpperA: {
      parameters: ["buffer"],
      result: "buffer",
    },
    CharUpperW: {
      parameters: ["buffer"],
      result: "buffer",
    },
    CharUpperBuffA: {
      parameters: ["buffer", "u32"],
      result: "u32",
    },
    CharUpperBuffW: {
      parameters: ["buffer", "u32"],
      result: "u32",
    },
    CharLowerA: {
      parameters: ["buffer"],
      result: "buffer",
    },
    CharLowerW: {
      parameters: ["buffer"],
      result: "buffer",
    },
    CharLowerBuffA: {
      parameters: ["buffer", "u32"],
      result: "u32",
    },
    CharLowerBuffW: {
      parameters: ["buffer", "u32"],
      result: "u32",
    },
    CharNextA: {
      parameters: ["buffer"],
      result: "buffer",
    },
    CharNextW: {
      parameters: ["buffer"],
      result: "buffer",
    },
    CharPrevA: {
      parameters: ["buffer", "buffer"],
      result: "buffer",
    },
    CharPrevW: {
      parameters: ["buffer", "buffer"],
      result: "buffer",
    },
    CharNextExA: {
      parameters: ["u16", "buffer", "u32"],
      result: "buffer",
    },
    CharPrevExA: {
      parameters: ["u16", "buffer", "buffer", "u32"],
      result: "buffer",
    },
    IsCharAlphaA: {
      parameters: ["u8"],
      result: "i32",
    },
    IsCharAlphaW: {
      parameters: ["pointer"],
      result: "i32",
    },
    IsCharAlphaNumericA: {
      parameters: ["u8"],
      result: "i32",
    },
    IsCharAlphaNumericW: {
      parameters: ["pointer"],
      result: "i32",
    },
    IsCharUpperA: {
      parameters: ["u8"],
      result: "i32",
    },
    IsCharUpperW: {
      parameters: ["pointer"],
      result: "i32",
    },
    IsCharLowerA: {
      parameters: ["u8"],
      result: "i32",
    },
    GetInputState: {
      parameters: [],
      result: "i32",
    },
    GetQueueStatus: {
      parameters: ["u32"],
      result: "u32",
    },
    MsgWaitForMultipleObjects: {
      parameters: ["u32", "pointer", "i32", "u32", "u32"],
      result: "u32",
    },
    MsgWaitForMultipleObjectsEx: {
      parameters: ["u32", "pointer", "u32", "u32", "u32"],
      result: "u32",
    },
    SetTimer: {
      parameters: ["pointer", "usize", "u32", "pointer"],
      result: "usize",
    },
    SetCoalescableTimer: {
      parameters: ["pointer", "usize", "u32", "pointer", "u32"],
      result: "usize",
    },
    KillTimer: {
      parameters: ["pointer", "usize"],
      result: "i32",
    },
    IsWindowUnicode: {
      parameters: ["pointer"],
      result: "i32",
    },
    LoadAcceleratorsA: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    LoadAcceleratorsW: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    CreateAcceleratorTableA: {
      parameters: ["pointer", "i32"],
      result: "pointer",
    },
    CreateAcceleratorTableW: {
      parameters: ["pointer", "i32"],
      result: "pointer",
    },
    DestroyAcceleratorTable: {
      parameters: ["pointer"],
      result: "i32",
    },
    CopyAcceleratorTableA: {
      parameters: ["pointer", "pointer", "i32"],
      result: "i32",
    },
    CopyAcceleratorTableW: {
      parameters: ["pointer", "pointer", "i32"],
      result: "i32",
    },
    TranslateAcceleratorA: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    TranslateAcceleratorW: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetSystemMetrics: {
      parameters: ["u32"],
      result: "i32",
    },
    LoadMenuA: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    LoadMenuW: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    LoadMenuIndirectA: {
      parameters: ["pointer"],
      result: "pointer",
    },
    LoadMenuIndirectW: {
      parameters: ["pointer"],
      result: "pointer",
    },
    GetMenu: {
      parameters: ["pointer"],
      result: "pointer",
    },
    SetMenu: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    ChangeMenuA: {
      parameters: ["pointer", "u32", "buffer", "u32", "u32"],
      result: "i32",
    },
    ChangeMenuW: {
      parameters: ["pointer", "u32", "buffer", "u32", "u32"],
      result: "i32",
    },
    HiliteMenuItem: {
      parameters: ["pointer", "pointer", "u32", "u32"],
      result: "i32",
    },
    GetMenuStringA: {
      parameters: ["pointer", "u32", "buffer", "i32", "u32"],
      result: "i32",
    },
    GetMenuStringW: {
      parameters: ["pointer", "u32", "buffer", "i32", "u32"],
      result: "i32",
    },
    GetMenuState: {
      parameters: ["pointer", "u32", "u32"],
      result: "u32",
    },
    DrawMenuBar: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetSystemMenu: {
      parameters: ["pointer", "i32"],
      result: "pointer",
    },
    CreateMenu: {
      parameters: [],
      result: "pointer",
    },
    CreatePopupMenu: {
      parameters: [],
      result: "pointer",
    },
    DestroyMenu: {
      parameters: ["pointer"],
      result: "i32",
    },
    CheckMenuItem: {
      parameters: ["pointer", "u32", "u32"],
      result: "u32",
    },
    EnableMenuItem: {
      parameters: ["pointer", "u32", "u32"],
      result: "i32",
    },
    GetSubMenu: {
      parameters: ["pointer", "i32"],
      result: "pointer",
    },
    GetMenuItemID: {
      parameters: ["pointer", "i32"],
      result: "u32",
    },
    GetMenuItemCount: {
      parameters: ["pointer"],
      result: "i32",
    },
    InsertMenuA: {
      parameters: ["pointer", "u32", "u32", "usize", "buffer"],
      result: "i32",
    },
    InsertMenuW: {
      parameters: ["pointer", "u32", "u32", "usize", "buffer"],
      result: "i32",
    },
    AppendMenuA: {
      parameters: ["pointer", "u32", "usize", "buffer"],
      result: "i32",
    },
    AppendMenuW: {
      parameters: ["pointer", "u32", "usize", "buffer"],
      result: "i32",
    },
    ModifyMenuA: {
      parameters: ["pointer", "u32", "u32", "usize", "buffer"],
      result: "i32",
    },
    ModifyMenuW: {
      parameters: ["pointer", "u32", "u32", "usize", "buffer"],
      result: "i32",
    },
    RemoveMenu: {
      parameters: ["pointer", "u32", "u32"],
      result: "i32",
    },
    DeleteMenu: {
      parameters: ["pointer", "u32", "u32"],
      result: "i32",
    },
    SetMenuItemBitmaps: {
      parameters: ["pointer", "u32", "u32", "pointer", "pointer"],
      result: "i32",
    },
    GetMenuCheckMarkDimensions: {
      parameters: [],
      result: "i32",
    },
    TrackPopupMenu: {
      parameters: ["pointer", "u32", "i32", "i32", "i32", "pointer", "pointer"],
      result: "i32",
    },
    TrackPopupMenuEx: {
      parameters: ["pointer", "u32", "i32", "i32", "pointer", "pointer"],
      result: "i32",
    },
    CalculatePopupWindowPosition: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    GetMenuInfo: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    SetMenuInfo: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    EndMenu: {
      parameters: [],
      result: "i32",
    },
    InsertMenuItemA: {
      parameters: ["pointer", "u32", "i32", "pointer"],
      result: "i32",
    },
    InsertMenuItemW: {
      parameters: ["pointer", "u32", "i32", "pointer"],
      result: "i32",
    },
    GetMenuItemInfoA: {
      parameters: ["pointer", "u32", "i32", "pointer"],
      result: "i32",
    },
    GetMenuItemInfoW: {
      parameters: ["pointer", "u32", "i32", "pointer"],
      result: "i32",
    },
    SetMenuItemInfoA: {
      parameters: ["pointer", "u32", "i32", "pointer"],
      result: "i32",
    },
    SetMenuItemInfoW: {
      parameters: ["pointer", "u32", "i32", "pointer"],
      result: "i32",
    },
    GetMenuDefaultItem: {
      parameters: ["pointer", "u32", "u32"],
      result: "u32",
    },
    SetMenuDefaultItem: {
      parameters: ["pointer", "u32", "u32"],
      result: "i32",
    },
    GetMenuItemRect: {
      parameters: ["pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    MenuItemFromPoint: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    DragObject: {
      parameters: ["pointer", "pointer", "u32", "usize", "pointer"],
      result: "u32",
    },
    DrawIcon: {
      parameters: ["pointer", "i32", "i32", "pointer"],
      result: "i32",
    },
    GetForegroundWindow: {
      parameters: [],
      result: "pointer",
    },
    SwitchToThisWindow: {
      parameters: ["pointer", "i32"],
      result: "void",
    },
    SetForegroundWindow: {
      parameters: ["pointer"],
      result: "i32",
    },
    AllowSetForegroundWindow: {
      parameters: ["u32"],
      result: "i32",
    },
    LockSetForegroundWindow: {
      parameters: ["u32"],
      result: "i32",
    },
    ScrollWindow: {
      parameters: ["pointer", "i32", "i32", "pointer", "pointer"],
      result: "i32",
    },
    ScrollDC: {
      parameters: ["pointer", "i32", "i32", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    ScrollWindowEx: {
      parameters: ["pointer", "i32", "i32", "pointer", "pointer", "pointer", "pointer", "u32"],
      result: "i32",
    },
    GetScrollPos: {
      parameters: ["pointer", "u32"],
      result: "i32",
    },
    GetScrollRange: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    SetPropA: {
      parameters: ["pointer", "buffer", "pointer"],
      result: "i32",
    },
    SetPropW: {
      parameters: ["pointer", "buffer", "pointer"],
      result: "i32",
    },
    GetPropA: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    GetPropW: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    RemovePropA: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    RemovePropW: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    EnumPropsExA: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    EnumPropsExW: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    EnumPropsA: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    EnumPropsW: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    SetWindowTextA: {
      parameters: ["pointer", "buffer"],
      result: "i32",
    },
    SetWindowTextW: {
      parameters: ["pointer", "buffer"],
      result: "i32",
    },
    GetWindowTextA: {
      parameters: ["pointer", "buffer", "i32"],
      result: "i32",
    },
    GetWindowTextW: {
      parameters: ["pointer", "buffer", "i32"],
      result: "i32",
    },
    GetWindowTextLengthA: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetWindowTextLengthW: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetClientRect: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetWindowRect: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    AdjustWindowRect: {
      parameters: ["pointer", "u32", "i32"],
      result: "i32",
    },
    AdjustWindowRectEx: {
      parameters: ["pointer", "u32", "i32", "u32"],
      result: "i32",
    },
    MessageBoxA: {
      parameters: ["pointer", "buffer", "buffer", "u32"],
      result: "i32",
    },
    MessageBoxW: {
      parameters: ["pointer", "buffer", "buffer", "u32"],
      result: "i32",
    },
    MessageBoxExA: {
      parameters: ["pointer", "buffer", "buffer", "u32", "u16"],
      result: "i32",
    },
    MessageBoxExW: {
      parameters: ["pointer", "buffer", "buffer", "u32", "u16"],
      result: "i32",
    },
    MessageBoxIndirectA: {
      parameters: ["pointer"],
      result: "i32",
    },
    MessageBoxIndirectW: {
      parameters: ["pointer"],
      result: "i32",
    },
    ShowCursor: {
      parameters: ["i32"],
      result: "i32",
    },
    SetCursorPos: {
      parameters: ["i32", "i32"],
      result: "i32",
    },
    SetPhysicalCursorPos: {
      parameters: ["i32", "i32"],
      result: "i32",
    },
    SetCursor: {
      parameters: ["pointer"],
      result: "pointer",
    },
    GetCursorPos: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetPhysicalCursorPos: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetClipCursor: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetCursor: {
      parameters: [],
      result: "pointer",
    },
    CreateCaret: {
      parameters: ["pointer", "pointer", "i32", "i32"],
      result: "i32",
    },
    GetCaretBlinkTime: {
      parameters: [],
      result: "u32",
    },
    SetCaretBlinkTime: {
      parameters: ["u32"],
      result: "i32",
    },
    DestroyCaret: {
      parameters: [],
      result: "i32",
    },
    HideCaret: {
      parameters: ["pointer"],
      result: "i32",
    },
    ShowCaret: {
      parameters: ["pointer"],
      result: "i32",
    },
    SetCaretPos: {
      parameters: ["i32", "i32"],
      result: "i32",
    },
    GetCaretPos: {
      parameters: ["pointer"],
      result: "i32",
    },
    LogicalToPhysicalPoint: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    PhysicalToLogicalPoint: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    WindowFromPoint: {
      parameters: ["pointer"],
      result: "pointer",
    },
    WindowFromPhysicalPoint: {
      parameters: ["pointer"],
      result: "pointer",
    },
    ChildWindowFromPoint: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    ClipCursor: {
      parameters: ["pointer"],
      result: "i32",
    },
    ChildWindowFromPointEx: {
      parameters: ["pointer", "pointer", "u32"],
      result: "pointer",
    },
    GetWindowWord: {
      parameters: ["pointer", "i32"],
      result: "u16",
    },
    SetWindowWord: {
      parameters: ["pointer", "i32", "u16"],
      result: "u16",
    },
    GetWindowLongA: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    GetWindowLongW: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    SetWindowLongA: {
      parameters: ["pointer", "i32", "i32"],
      result: "i32",
    },
    SetWindowLongW: {
      parameters: ["pointer", "i32", "i32"],
      result: "i32",
    },
    GetClassWord: {
      parameters: ["pointer", "i32"],
      result: "u16",
    },
    SetClassWord: {
      parameters: ["pointer", "i32", "u16"],
      result: "u16",
    },
    GetClassLongA: {
      parameters: ["pointer", "i32"],
      result: "u32",
    },
    GetClassLongW: {
      parameters: ["pointer", "i32"],
      result: "u32",
    },
    SetClassLongA: {
      parameters: ["pointer", "i32", "i32"],
      result: "u32",
    },
    SetClassLongW: {
      parameters: ["pointer", "i32", "i32"],
      result: "u32",
    },
    GetProcessDefaultLayout: {
      parameters: ["pointer"],
      result: "i32",
    },
    SetProcessDefaultLayout: {
      parameters: ["u32"],
      result: "i32",
    },
    GetDesktopWindow: {
      parameters: [],
      result: "pointer",
    },
    GetParent: {
      parameters: ["pointer"],
      result: "pointer",
    },
    SetParent: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    EnumChildWindows: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    FindWindowA: {
      parameters: ["buffer", "buffer"],
      result: "pointer",
    },
    FindWindowW: {
      parameters: ["buffer", "buffer"],
      result: "pointer",
    },
    FindWindowExA: {
      parameters: ["pointer", "pointer", "buffer", "buffer"],
      result: "pointer",
    },
    FindWindowExW: {
      parameters: ["pointer", "pointer", "buffer", "buffer"],
      result: "pointer",
    },
    GetShellWindow: {
      parameters: [],
      result: "pointer",
    },
    RegisterShellHookWindow: {
      parameters: ["pointer"],
      result: "i32",
    },
    DeregisterShellHookWindow: {
      parameters: ["pointer"],
      result: "i32",
    },
    EnumWindows: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    EnumThreadWindows: {
      parameters: ["u32", "pointer", "pointer"],
      result: "i32",
    },
    GetClassNameA: {
      parameters: ["pointer", "buffer", "i32"],
      result: "i32",
    },
    GetClassNameW: {
      parameters: ["pointer", "buffer", "i32"],
      result: "i32",
    },
    GetTopWindow: {
      parameters: ["pointer"],
      result: "pointer",
    },
    GetWindowThreadProcessId: {
      parameters: ["pointer", "pointer"],
      result: "u32",
    },
    IsGUIThread: {
      parameters: ["i32"],
      result: "i32",
    },
    GetLastActivePopup: {
      parameters: ["pointer"],
      result: "pointer",
    },
    GetWindow: {
      parameters: ["pointer", "u32"],
      result: "pointer",
    },
    SetWindowsHookA: {
      parameters: ["i32", "pointer"],
      result: "pointer",
    },
    SetWindowsHookW: {
      parameters: ["i32", "pointer"],
      result: "pointer",
    },
    UnhookWindowsHook: {
      parameters: ["i32", "pointer"],
      result: "i32",
    },
    SetWindowsHookExA: {
      parameters: ["i32", "pointer", "pointer", "u32"],
      result: "pointer",
    },
    SetWindowsHookExW: {
      parameters: ["i32", "pointer", "pointer", "u32"],
      result: "pointer",
    },
    UnhookWindowsHookEx: {
      parameters: ["pointer"],
      result: "i32",
    },
    CallNextHookEx: {
      parameters: ["pointer", "i32", "pointer", "pointer"],
      result: "pointer",
    },
    CheckMenuRadioItem: {
      parameters: ["pointer", "u32", "u32", "u32", "u32"],
      result: "i32",
    },
    LoadCursorA: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    LoadCursorW: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    LoadCursorFromFileA: {
      parameters: ["buffer"],
      result: "pointer",
    },
    LoadCursorFromFileW: {
      parameters: ["buffer"],
      result: "pointer",
    },
    CreateCursor: {
      parameters: ["pointer", "i32", "i32", "i32", "i32", "pointer", "pointer"],
      result: "pointer",
    },
    DestroyCursor: {
      parameters: ["pointer"],
      result: "i32",
    },
    SetSystemCursor: {
      parameters: ["pointer", "u32"],
      result: "i32",
    },
    LoadIconA: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    LoadIconW: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    PrivateExtractIconsA: {
      parameters: ["buffer", "i32", "i32", "i32", "pointer", "pointer", "u32", "u32"],
      result: "u32",
    },
    PrivateExtractIconsW: {
      parameters: ["buffer", "i32", "i32", "i32", "pointer", "pointer", "u32", "u32"],
      result: "u32",
    },
    CreateIcon: {
      parameters: ["pointer", "i32", "i32", "u8", "u8", "pointer", "pointer"],
      result: "pointer",
    },
    DestroyIcon: {
      parameters: ["pointer"],
      result: "i32",
    },
    LookupIconIdFromDirectory: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    LookupIconIdFromDirectoryEx: {
      parameters: ["pointer", "i32", "i32", "i32", "u32"],
      result: "i32",
    },
    CreateIconFromResource: {
      parameters: ["pointer", "u32", "i32", "u32"],
      result: "pointer",
    },
    CreateIconFromResourceEx: {
      parameters: ["pointer", "u32", "i32", "u32", "i32", "i32", "u32"],
      result: "pointer",
    },
    LoadImageA: {
      parameters: ["pointer", "buffer", "u32", "i32", "i32", "u32"],
      result: "pointer",
    },
    LoadImageW: {
      parameters: ["pointer", "buffer", "u32", "i32", "i32", "u32"],
      result: "pointer",
    },
    CopyImage: {
      parameters: ["pointer", "u32", "i32", "i32", "u32"],
      result: "pointer",
    },
    DrawIconEx: {
      parameters: ["pointer", "i32", "i32", "pointer", "i32", "i32", "u32", "pointer", "u32"],
      result: "i32",
    },
    CreateIconIndirect: {
      parameters: ["pointer"],
      result: "pointer",
    },
    CopyIcon: {
      parameters: ["pointer"],
      result: "pointer",
    },
    GetIconInfo: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetIconInfoExA: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetIconInfoExW: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    IsDialogMessageA: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    IsDialogMessageW: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    MapDialogRect: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetScrollInfo: {
      parameters: ["pointer", "u32", "pointer"],
      result: "i32",
    },
    DefFrameProcA: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    DefFrameProcW: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    DefMDIChildProcA: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    DefMDIChildProcW: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    TranslateMDISysAccel: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    ArrangeIconicWindows: {
      parameters: ["pointer"],
      result: "u32",
    },
    CreateMDIWindowA: {
      parameters: ["buffer", "buffer", "u32", "i32", "i32", "i32", "i32", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    CreateMDIWindowW: {
      parameters: ["buffer", "buffer", "u32", "i32", "i32", "i32", "i32", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    TileWindows: {
      parameters: ["pointer", "u32", "pointer", "u32", "pointer"],
      result: "u16",
    },
    CascadeWindows: {
      parameters: ["pointer", "u32", "pointer", "u32", "pointer"],
      result: "u16",
    },
    SystemParametersInfoA: {
      parameters: ["u32", "u32", "pointer", "u32"],
      result: "i32",
    },
    SystemParametersInfoW: {
      parameters: ["u32", "u32", "pointer", "u32"],
      result: "i32",
    },
    SoundSentry: {
      parameters: [],
      result: "i32",
    },
    SetDebugErrorLevel: {
      parameters: ["u32"],
      result: "void",
    },
    InternalGetWindowText: {
      parameters: ["pointer", "buffer", "i32"],
      result: "i32",
    },
    CancelShutdown: {
      parameters: [],
      result: "i32",
    },
    GetGUIThreadInfo: {
      parameters: ["u32", "pointer"],
      result: "i32",
    },
    SetProcessDPIAware: {
      parameters: [],
      result: "i32",
    },
    IsProcessDPIAware: {
      parameters: [],
      result: "i32",
    },
    InheritWindowMonitor: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetWindowModuleFileNameA: {
      parameters: ["pointer", "buffer", "u32"],
      result: "u32",
    },
    GetWindowModuleFileNameW: {
      parameters: ["pointer", "buffer", "u32"],
      result: "u32",
    },
    GetCursorInfo: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetWindowInfo: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetTitleBarInfo: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetMenuBarInfo: {
      parameters: ["pointer", "i32", "i32", "pointer"],
      result: "i32",
    },
    GetScrollBarInfo: {
      parameters: ["pointer", "i32", "pointer"],
      result: "i32",
    },
    GetAncestor: {
      parameters: ["pointer", "u32"],
      result: "pointer",
    },
    RealChildWindowFromPoint: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    RealGetWindowClassA: {
      parameters: ["pointer", "buffer", "u32"],
      result: "u32",
    },
    RealGetWindowClassW: {
      parameters: ["pointer", "buffer", "u32"],
      result: "u32",
    },
    GetAltTabInfoA: {
      parameters: ["pointer", "i32", "pointer", "buffer", "u32"],
      result: "i32",
    },
    GetAltTabInfoW: {
      parameters: ["pointer", "i32", "pointer", "buffer", "u32"],
      result: "i32",
    },
    ChangeWindowMessageFilter: {
      parameters: ["u32", "u32"],
      result: "i32",
    },
    ChangeWindowMessageFilterEx: {
      parameters: ["pointer", "u32", "u32", "pointer"],
      result: "i32",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libMrmSupport_dll = Deno.dlopen("MrmSupport.dll", {
    CreateResourceIndexer: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "pointer",
    },
    DestroyResourceIndexer: {
      parameters: ["pointer"],
      result: "void",
    },
    IndexFilePath: {
      parameters: ["pointer", "buffer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    DestroyIndexedResults: {
      parameters: ["buffer", "u32", "pointer"],
      result: "void",
    },
    MrmCreateResourceIndexer: {
      parameters: ["buffer", "buffer", "i32", "buffer", "pointer"],
      result: "pointer",
    },
    MrmCreateResourceIndexerFromPreviousSchemaFile: {
      parameters: ["buffer", "i32", "buffer", "buffer", "pointer"],
      result: "pointer",
    },
    MrmCreateResourceIndexerFromPreviousPriFile: {
      parameters: ["buffer", "i32", "buffer", "buffer", "pointer"],
      result: "pointer",
    },
    MrmCreateResourceIndexerFromPreviousSchemaData: {
      parameters: ["buffer", "i32", "buffer", "pointer", "u32", "pointer"],
      result: "pointer",
    },
    MrmCreateResourceIndexerFromPreviousPriData: {
      parameters: ["buffer", "i32", "buffer", "pointer", "u32", "pointer"],
      result: "pointer",
    },
    MrmCreateResourceIndexerWithFlags: {
      parameters: ["buffer", "buffer", "i32", "buffer", "i32", "pointer"],
      result: "pointer",
    },
    MrmIndexString: {
      parameters: ["pointer", "buffer", "buffer", "buffer"],
      result: "pointer",
    },
    MrmIndexEmbeddedData: {
      parameters: ["pointer", "buffer", "pointer", "u32", "buffer"],
      result: "pointer",
    },
    MrmIndexFile: {
      parameters: ["pointer", "buffer", "buffer", "buffer"],
      result: "pointer",
    },
    MrmIndexFileAutoQualifiers: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    MrmIndexResourceContainerAutoQualifiers: {
      parameters: ["pointer", "buffer"],
      result: "pointer",
    },
    MrmCreateResourceFile: {
      parameters: ["pointer", "i32", "i32", "buffer"],
      result: "pointer",
    },
    MrmCreateResourceFileWithChecksum: {
      parameters: ["pointer", "i32", "i32", "u32", "buffer"],
      result: "pointer",
    },
    MrmCreateResourceFileInMemory: {
      parameters: ["pointer", "i32", "i32", "pointer", "pointer"],
      result: "pointer",
    },
    MrmPeekResourceIndexerMessages: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "pointer",
    },
    MrmDestroyIndexerAndMessages: {
      parameters: ["pointer"],
      result: "pointer",
    },
    MrmFreeMemory: {
      parameters: ["pointer"],
      result: "pointer",
    },
    MrmDumpPriFile: {
      parameters: ["buffer", "buffer", "i32", "buffer"],
      result: "pointer",
    },
    MrmDumpPriFileInMemory: {
      parameters: ["buffer", "buffer", "i32", "pointer", "pointer"],
      result: "pointer",
    },
    MrmDumpPriDataInMemory: {
      parameters: ["pointer", "u32", "pointer", "u32", "i32", "pointer", "pointer"],
      result: "pointer",
    },
    MrmCreateConfig: {
      parameters: ["i32", "buffer", "buffer"],
      result: "pointer",
    },
    MrmCreateConfigInMemory: {
      parameters: ["i32", "buffer", "pointer", "pointer"],
      result: "pointer",
    },
    MrmGetPriFileContentChecksum: {
      parameters: ["buffer", "pointer"],
      result: "pointer",
    },
  }).symbols;
} catch(e) { /* ignore */ }

// Symbols

export function LoadStringA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  uID: number /* u32 */,
  lpBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferMax: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.LoadStringA(util.toPointer(hInstance), uID, util.pstrToFfi(lpBuffer), cchBufferMax);
}

export function LoadStringW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  uID: number /* u32 */,
  lpBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferMax: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.LoadStringW(util.toPointer(hInstance), uID, util.pwstrToFfi(lpBuffer), cchBufferMax);
}

export function GetWindowLongPtrA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
): bigint | number /* isize */ {
  return libUSER32_dll.GetWindowLongPtrA((hWnd), nIndex);
}

export function GetWindowLongPtrW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
): bigint | number /* isize */ {
  return libUSER32_dll.GetWindowLongPtrW((hWnd), nIndex);
}

export function SetWindowLongPtrA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
  dwNewLong: bigint | number /* isize */,
): bigint | number /* isize */ {
  return libUSER32_dll.SetWindowLongPtrA((hWnd), nIndex, dwNewLong);
}

export function SetWindowLongPtrW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
  dwNewLong: bigint | number /* isize */,
): bigint | number /* isize */ {
  return libUSER32_dll.SetWindowLongPtrW((hWnd), nIndex, dwNewLong);
}

export function GetClassLongPtrA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
): bigint | number /* usize */ {
  return libUSER32_dll.GetClassLongPtrA((hWnd), nIndex);
}

export function GetClassLongPtrW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
): bigint | number /* usize */ {
  return libUSER32_dll.GetClassLongPtrW((hWnd), nIndex);
}

export function SetClassLongPtrA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
  dwNewLong: bigint | number /* isize */,
): bigint | number /* usize */ {
  return libUSER32_dll.SetClassLongPtrA((hWnd), nIndex, dwNewLong);
}

export function SetClassLongPtrW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
  dwNewLong: bigint | number /* isize */,
): bigint | number /* usize */ {
  return libUSER32_dll.SetClassLongPtrW((hWnd), nIndex, dwNewLong);
}

export function wvsprintfA(
  param0: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  param1: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  arglist: Deno.PointerValue | Uint8Array /* ptr */,
): number /* i32 */ {
  return libUSER32_dll.wvsprintfA(util.pstrToFfi(param0), util.pstrToFfi(param1), util.toPointer(arglist));
}

export function wvsprintfW(
  param0: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  param1: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  arglist: Deno.PointerValue | Uint8Array /* ptr */,
): number /* i32 */ {
  return libUSER32_dll.wvsprintfW(util.pwstrToFfi(param0), util.pwstrToFfi(param1), util.toPointer(arglist));
}

export function wsprintfA(
  param0: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  param1: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* i32 */ {
  return libUSER32_dll.wsprintfA(util.pstrToFfi(param0), util.pstrToFfi(param1));
}

export function wsprintfW(
  param0: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  param1: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* i32 */ {
  return libUSER32_dll.wsprintfW(util.pwstrToFfi(param0), util.pwstrToFfi(param1));
}

export function IsHungAppWindow(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsHungAppWindow((hwnd)));
}

export function DisableProcessWindowsGhosting(): void /* void */ {
  return libUSER32_dll.DisableProcessWindowsGhosting();
}

export function RegisterWindowMessageA(
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* u32 */ {
  return libUSER32_dll.RegisterWindowMessageA(util.pstrToFfi(lpString));
}

export function RegisterWindowMessageW(
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libUSER32_dll.RegisterWindowMessageW(util.pwstrToFfi(lpString));
}

export function GetMessageA(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  wMsgFilterMin: number /* u32 */,
  wMsgFilterMax: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetMessageA(util.toPointer(lpMsg), (hWnd), wMsgFilterMin, wMsgFilterMax));
}

export function GetMessageW(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  wMsgFilterMin: number /* u32 */,
  wMsgFilterMax: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetMessageW(util.toPointer(lpMsg), (hWnd), wMsgFilterMin, wMsgFilterMax));
}

export function TranslateMessage(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.TranslateMessage(util.toPointer(lpMsg)));
}

export function DispatchMessageA(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DispatchMessageA(util.toPointer(lpMsg));
}

export function DispatchMessageW(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DispatchMessageW(util.toPointer(lpMsg));
}

export function SetMessageQueue(
  cMessagesMax: number /* i32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetMessageQueue(cMessagesMax));
}

export function PeekMessageA(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  wMsgFilterMin: number /* u32 */,
  wMsgFilterMax: number /* u32 */,
  wRemoveMsg: PEEK_MESSAGE_REMOVE_TYPE /* Windows.Win32.UI.WindowsAndMessaging.PEEK_MESSAGE_REMOVE_TYPE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.PeekMessageA(util.toPointer(lpMsg), (hWnd), wMsgFilterMin, wMsgFilterMax, wRemoveMsg));
}

export function PeekMessageW(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  wMsgFilterMin: number /* u32 */,
  wMsgFilterMax: number /* u32 */,
  wRemoveMsg: PEEK_MESSAGE_REMOVE_TYPE /* Windows.Win32.UI.WindowsAndMessaging.PEEK_MESSAGE_REMOVE_TYPE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.PeekMessageW(util.toPointer(lpMsg), (hWnd), wMsgFilterMin, wMsgFilterMax, wRemoveMsg));
}

export function GetMessagePos(): number /* u32 */ {
  return libUSER32_dll.GetMessagePos();
}

export function GetMessageTime(): number /* i32 */ {
  return libUSER32_dll.GetMessageTime();
}

export function GetMessageExtraInfo(): Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */ {
  return libUSER32_dll.GetMessageExtraInfo();
}

export function IsWow64Message(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsWow64Message());
}

export function SetMessageExtraInfo(
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */ {
  return libUSER32_dll.SetMessageExtraInfo(util.toPointer(lParam));
}

export function SendMessageA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.SendMessageA((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function SendMessageW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.SendMessageW((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function SendMessageTimeoutA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
  fuFlags: SEND_MESSAGE_TIMEOUT_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.SEND_MESSAGE_TIMEOUT_FLAGS */,
  uTimeout: number /* u32 */,
  lpdwResult: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.SendMessageTimeoutA((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam), fuFlags, uTimeout, util.toPointer(lpdwResult));
}

export function SendMessageTimeoutW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
  fuFlags: SEND_MESSAGE_TIMEOUT_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.SEND_MESSAGE_TIMEOUT_FLAGS */,
  uTimeout: number /* u32 */,
  lpdwResult: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.SendMessageTimeoutW((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam), fuFlags, uTimeout, util.toPointer(lpdwResult));
}

export function SendNotifyMessageA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SendNotifyMessageA((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam)));
}

export function SendNotifyMessageW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SendNotifyMessageW((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam)));
}

export function SendMessageCallbackA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
  lpResultCallBack: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.SENDASYNCPROC */,
  dwData: bigint | number /* usize */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SendMessageCallbackA((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam), util.toPointer(lpResultCallBack), dwData));
}

export function SendMessageCallbackW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
  lpResultCallBack: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.SENDASYNCPROC */,
  dwData: bigint | number /* usize */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SendMessageCallbackW((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam), util.toPointer(lpResultCallBack), dwData));
}

export function RegisterDeviceNotificationA(
  hRecipient: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  NotificationFilter: Deno.PointerValue | Uint8Array /* ptr */,
  Flags: POWER_SETTING_REGISTER_NOTIFICATION_FLAGS /* Windows.Win32.System.Power.POWER_SETTING_REGISTER_NOTIFICATION_FLAGS */,
): Deno.PointerValue /* ptr */ {
  return libUSER32_dll.RegisterDeviceNotificationA(util.toPointer(hRecipient), util.toPointer(NotificationFilter), Flags);
}

export function RegisterDeviceNotificationW(
  hRecipient: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  NotificationFilter: Deno.PointerValue | Uint8Array /* ptr */,
  Flags: POWER_SETTING_REGISTER_NOTIFICATION_FLAGS /* Windows.Win32.System.Power.POWER_SETTING_REGISTER_NOTIFICATION_FLAGS */,
): Deno.PointerValue /* ptr */ {
  return libUSER32_dll.RegisterDeviceNotificationW(util.toPointer(hRecipient), util.toPointer(NotificationFilter), Flags);
}

export function PostMessageA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.PostMessageA((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam)));
}

export function PostMessageW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.PostMessageW((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam)));
}

export function PostThreadMessageA(
  idThread: number /* u32 */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.PostThreadMessageA(idThread, Msg, util.toPointer(wParam), util.toPointer(lParam)));
}

export function PostThreadMessageW(
  idThread: number /* u32 */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.PostThreadMessageW(idThread, Msg, util.toPointer(wParam), util.toPointer(lParam)));
}

export function ReplyMessage(
  lResult: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ReplyMessage(util.toPointer(lResult)));
}

export function WaitMessage(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.WaitMessage());
}

export function DefWindowProcA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefWindowProcA((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function DefWindowProcW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefWindowProcW((hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function PostQuitMessage(
  nExitCode: number /* i32 */,
): void /* void */ {
  return libUSER32_dll.PostQuitMessage(nExitCode);
}

export function CallWindowProcA(
  lpPrevWndFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.WNDPROC */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.CallWindowProcA(util.toPointer(lpPrevWndFunc), (hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function CallWindowProcW(
  lpPrevWndFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.WNDPROC */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.CallWindowProcW(util.toPointer(lpPrevWndFunc), (hWnd), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function InSendMessage(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.InSendMessage());
}

export function InSendMessageEx(
  lpReserved: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libUSER32_dll.InSendMessageEx(util.toPointer(lpReserved));
}

export function RegisterClassA(
  lpWndClass: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u16 */ {
  return libUSER32_dll.RegisterClassA(util.toPointer(lpWndClass));
}

export function RegisterClassW(
  lpWndClass: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u16 */ {
  return libUSER32_dll.RegisterClassW(util.toPointer(lpWndClass));
}

export function UnregisterClassA(
  lpClassName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.UnregisterClassA(util.pstrToFfi(lpClassName), util.toPointer(hInstance)));
}

export function UnregisterClassW(
  lpClassName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.UnregisterClassW(util.pwstrToFfi(lpClassName), util.toPointer(hInstance)));
}

export function GetClassInfoA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpClassName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpWndClass: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetClassInfoA(util.toPointer(hInstance), util.pstrToFfi(lpClassName), util.toPointer(lpWndClass)));
}

export function GetClassInfoW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpClassName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpWndClass: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetClassInfoW(util.toPointer(hInstance), util.pwstrToFfi(lpClassName), util.toPointer(lpWndClass)));
}

export function RegisterClassExA(
  param0: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u16 */ {
  return libUSER32_dll.RegisterClassExA(util.toPointer(param0));
}

export function RegisterClassExW(
  param0: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u16 */ {
  return libUSER32_dll.RegisterClassExW(util.toPointer(param0));
}

export function GetClassInfoExA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpszClass: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpwcx: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetClassInfoExA(util.toPointer(hInstance), util.pstrToFfi(lpszClass), util.toPointer(lpwcx)));
}

export function GetClassInfoExW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpszClass: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpwcx: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetClassInfoExW(util.toPointer(hInstance), util.pwstrToFfi(lpszClass), util.toPointer(lpwcx)));
}

export function CreateWindowExA(
  dwExStyle: WINDOW_EX_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_EX_STYLE */,
  lpClassName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpWindowName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwStyle: WINDOW_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */,
  X: number /* i32 */,
  Y: number /* i32 */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpParam: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateWindowExA(dwExStyle, util.pstrToFfi(lpClassName), util.pstrToFfi(lpWindowName), dwStyle, X, Y, nWidth, nHeight, (hWndParent), util.toPointer(hMenu), util.toPointer(hInstance), util.toPointer(lpParam)));
}

export function CreateWindowExW(
  dwExStyle: WINDOW_EX_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_EX_STYLE */,
  lpClassName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpWindowName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwStyle: WINDOW_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */,
  X: number /* i32 */,
  Y: number /* i32 */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpParam: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateWindowExW(dwExStyle, util.pwstrToFfi(lpClassName), util.pwstrToFfi(lpWindowName), dwStyle, X, Y, nWidth, nHeight, (hWndParent), util.toPointer(hMenu), util.toPointer(hInstance), util.toPointer(lpParam)));
}

export function IsWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsWindow((hWnd)));
}

export function IsMenu(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsMenu(util.toPointer(hMenu)));
}

export function IsChild(
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsChild((hWndParent), (hWnd)));
}

export function DestroyWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DestroyWindow((hWnd)));
}

export function ShowWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nCmdShow: SHOW_WINDOW_CMD /* Windows.Win32.UI.WindowsAndMessaging.SHOW_WINDOW_CMD */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ShowWindow((hWnd), nCmdShow));
}

export function AnimateWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  dwTime: number /* u32 */,
  dwFlags: ANIMATE_WINDOW_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.ANIMATE_WINDOW_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.AnimateWindow((hWnd), dwTime, dwFlags));
}

export function UpdateLayeredWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hdcDst: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HDC */,
  pptDst: Deno.PointerValue | Uint8Array /* ptr */,
  psize: Deno.PointerValue | Uint8Array /* ptr */,
  hdcSrc: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HDC */,
  pptSrc: Deno.PointerValue | Uint8Array /* ptr */,
  crKey: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.COLORREF */,
  pblend: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlags: UPDATE_LAYERED_WINDOW_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.UPDATE_LAYERED_WINDOW_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.UpdateLayeredWindow((hWnd), util.toPointer(hdcDst), util.toPointer(pptDst), util.toPointer(psize), util.toPointer(hdcSrc), util.toPointer(pptSrc), util.toPointer(crKey), util.toPointer(pblend), dwFlags));
}

export function UpdateLayeredWindowIndirect(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pULWInfo: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.UpdateLayeredWindowIndirect((hWnd), util.toPointer(pULWInfo)));
}

export function GetLayeredWindowAttributes(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pcrKey: Deno.PointerValue | Uint8Array /* ptr */,
  pbAlpha: Deno.PointerValue | Uint8Array /* ptr */,
  pdwFlags: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetLayeredWindowAttributes((hwnd), util.toPointer(pcrKey), util.toPointer(pbAlpha), util.toPointer(pdwFlags)));
}

export function SetLayeredWindowAttributes(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  crKey: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.COLORREF */,
  bAlpha: number /* u8 */,
  dwFlags: LAYERED_WINDOW_ATTRIBUTES_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.LAYERED_WINDOW_ATTRIBUTES_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetLayeredWindowAttributes((hwnd), util.toPointer(crKey), bAlpha, dwFlags));
}

export function ShowWindowAsync(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nCmdShow: SHOW_WINDOW_CMD /* Windows.Win32.UI.WindowsAndMessaging.SHOW_WINDOW_CMD */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ShowWindowAsync((hWnd), nCmdShow));
}

export function FlashWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  bInvert: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.FlashWindow((hWnd), util.boolToFfi(bInvert)));
}

export function FlashWindowEx(
  pfwi: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.FlashWindowEx(util.toPointer(pfwi)));
}

export function ShowOwnedPopups(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  fShow: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ShowOwnedPopups((hWnd), util.boolToFfi(fShow)));
}

export function OpenIcon(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.OpenIcon((hWnd)));
}

export function CloseWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CloseWindow((hWnd)));
}

export function MoveWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  X: number /* i32 */,
  Y: number /* i32 */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
  bRepaint: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.MoveWindow((hWnd), X, Y, nWidth, nHeight, util.boolToFfi(bRepaint)));
}

export function SetWindowPos(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWndInsertAfter: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  X: number /* i32 */,
  Y: number /* i32 */,
  cx: number /* i32 */,
  cy: number /* i32 */,
  uFlags: SET_WINDOW_POS_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.SET_WINDOW_POS_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetWindowPos((hWnd), (hWndInsertAfter), X, Y, cx, cy, uFlags));
}

export function GetWindowPlacement(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpwndpl: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetWindowPlacement((hWnd), util.toPointer(lpwndpl)));
}

export function SetWindowPlacement(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpwndpl: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetWindowPlacement((hWnd), util.toPointer(lpwndpl)));
}

export function GetWindowDisplayAffinity(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pdwAffinity: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetWindowDisplayAffinity((hWnd), util.toPointer(pdwAffinity)));
}

export function SetWindowDisplayAffinity(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  dwAffinity: WINDOW_DISPLAY_AFFINITY /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_DISPLAY_AFFINITY */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetWindowDisplayAffinity((hWnd), dwAffinity));
}

export function BeginDeferWindowPos(
  nNumWindows: number /* i32 */,
): bigint | number /* isize */ {
  return libUSER32_dll.BeginDeferWindowPos(nNumWindows);
}

export function DeferWindowPos(
  hWinPosInfo: bigint | number /* isize */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWndInsertAfter: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  x: number /* i32 */,
  y: number /* i32 */,
  cx: number /* i32 */,
  cy: number /* i32 */,
  uFlags: SET_WINDOW_POS_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.SET_WINDOW_POS_FLAGS */,
): bigint | number /* isize */ {
  return libUSER32_dll.DeferWindowPos(hWinPosInfo, (hWnd), (hWndInsertAfter), x, y, cx, cy, uFlags);
}

export function EndDeferWindowPos(
  hWinPosInfo: bigint | number /* isize */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.EndDeferWindowPos(hWinPosInfo));
}

export function IsWindowVisible(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsWindowVisible((hWnd)));
}

export function IsIconic(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsIconic((hWnd)));
}

export function AnyPopup(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.AnyPopup());
}

export function BringWindowToTop(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.BringWindowToTop((hWnd)));
}

export function IsZoomed(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsZoomed((hWnd)));
}

export function CreateDialogParamA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTemplateName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateDialogParamA(util.toPointer(hInstance), util.pstrToFfi(lpTemplateName), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam)));
}

export function CreateDialogParamW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTemplateName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateDialogParamW(util.toPointer(hInstance), util.pwstrToFfi(lpTemplateName), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam)));
}

export function CreateDialogIndirectParamA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTemplate: Deno.PointerValue | Uint8Array /* ptr */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateDialogIndirectParamA(util.toPointer(hInstance), util.toPointer(lpTemplate), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam)));
}

export function CreateDialogIndirectParamW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTemplate: Deno.PointerValue | Uint8Array /* ptr */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateDialogIndirectParamW(util.toPointer(hInstance), util.toPointer(lpTemplate), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam)));
}

export function DialogBoxParamA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTemplateName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): bigint | number /* isize */ {
  return libUSER32_dll.DialogBoxParamA(util.toPointer(hInstance), util.pstrToFfi(lpTemplateName), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam));
}

export function DialogBoxParamW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTemplateName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): bigint | number /* isize */ {
  return libUSER32_dll.DialogBoxParamW(util.toPointer(hInstance), util.pwstrToFfi(lpTemplateName), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam));
}

export function DialogBoxIndirectParamA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  hDialogTemplate: Deno.PointerValue | Uint8Array /* ptr */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): bigint | number /* isize */ {
  return libUSER32_dll.DialogBoxIndirectParamA(util.toPointer(hInstance), util.toPointer(hDialogTemplate), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam));
}

export function DialogBoxIndirectParamW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  hDialogTemplate: Deno.PointerValue | Uint8Array /* ptr */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpDialogFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.DLGPROC */,
  dwInitParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): bigint | number /* isize */ {
  return libUSER32_dll.DialogBoxIndirectParamW(util.toPointer(hInstance), util.toPointer(hDialogTemplate), (hWndParent), util.toPointer(lpDialogFunc), util.toPointer(dwInitParam));
}

export function EndDialog(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nResult: bigint | number /* isize */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.EndDialog((hDlg), nResult));
}

export function GetDlgItem(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetDlgItem((hDlg), nIDDlgItem));
}

export function SetDlgItemInt(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  uValue: number /* u32 */,
  bSigned: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetDlgItemInt((hDlg), nIDDlgItem, uValue, util.boolToFfi(bSigned)));
}

export function GetDlgItemInt(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  lpTranslated: Deno.PointerValue | Uint8Array /* ptr */,
  bSigned: boolean /* Windows.Win32.Foundation.BOOL */,
): number /* u32 */ {
  return libUSER32_dll.GetDlgItemInt((hDlg), nIDDlgItem, util.toPointer(lpTranslated), util.boolToFfi(bSigned));
}

export function SetDlgItemTextA(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetDlgItemTextA((hDlg), nIDDlgItem, util.pstrToFfi(lpString)));
}

export function SetDlgItemTextW(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetDlgItemTextW((hDlg), nIDDlgItem, util.pwstrToFfi(lpString)));
}

export function GetDlgItemTextA(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchMax: number /* i32 */,
): number /* u32 */ {
  return libUSER32_dll.GetDlgItemTextA((hDlg), nIDDlgItem, util.pstrToFfi(lpString), cchMax);
}

export function GetDlgItemTextW(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchMax: number /* i32 */,
): number /* u32 */ {
  return libUSER32_dll.GetDlgItemTextW((hDlg), nIDDlgItem, util.pwstrToFfi(lpString), cchMax);
}

export function SendDlgItemMessageA(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.SendDlgItemMessageA((hDlg), nIDDlgItem, Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function SendDlgItemMessageW(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDDlgItem: number /* i32 */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.SendDlgItemMessageW((hDlg), nIDDlgItem, Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function GetNextDlgGroupItem(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hCtl: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  bPrevious: boolean /* Windows.Win32.Foundation.BOOL */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetNextDlgGroupItem((hDlg), (hCtl), util.boolToFfi(bPrevious)));
}

export function GetNextDlgTabItem(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hCtl: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  bPrevious: boolean /* Windows.Win32.Foundation.BOOL */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetNextDlgTabItem((hDlg), (hCtl), util.boolToFfi(bPrevious)));
}

export function GetDlgCtrlID(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): number /* i32 */ {
  return libUSER32_dll.GetDlgCtrlID((hWnd));
}

export function GetDialogBaseUnits(): number /* i32 */ {
  return libUSER32_dll.GetDialogBaseUnits();
}

export function DefDlgProcA(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefDlgProcA((hDlg), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function DefDlgProcW(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Msg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefDlgProcW((hDlg), Msg, util.toPointer(wParam), util.toPointer(lParam));
}

export function CallMsgFilterA(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
  nCode: number /* i32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CallMsgFilterA(util.toPointer(lpMsg), nCode));
}

export function CallMsgFilterW(
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
  nCode: number /* i32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CallMsgFilterW(util.toPointer(lpMsg), nCode));
}

export function CharToOemA(
  pSrc: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  pDst: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CharToOemA(util.pstrToFfi(pSrc), util.pstrToFfi(pDst)));
}

export function CharToOemW(
  pSrc: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pDst: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CharToOemW(util.pwstrToFfi(pSrc), util.pstrToFfi(pDst)));
}

export function OemToCharA(
  pSrc: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  pDst: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.OemToCharA(util.pstrToFfi(pSrc), util.pstrToFfi(pDst)));
}

export function OemToCharW(
  pSrc: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  pDst: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.OemToCharW(util.pstrToFfi(pSrc), util.pwstrToFfi(pDst)));
}

export function CharToOemBuffA(
  lpszSrc: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszDst: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchDstLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CharToOemBuffA(util.pstrToFfi(lpszSrc), util.pstrToFfi(lpszDst), cchDstLength));
}

export function CharToOemBuffW(
  lpszSrc: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszDst: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchDstLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CharToOemBuffW(util.pwstrToFfi(lpszSrc), util.pstrToFfi(lpszDst), cchDstLength));
}

export function OemToCharBuffA(
  lpszSrc: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszDst: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchDstLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.OemToCharBuffA(util.pstrToFfi(lpszSrc), util.pstrToFfi(lpszDst), cchDstLength));
}

export function OemToCharBuffW(
  lpszSrc: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszDst: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchDstLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.OemToCharBuffW(util.pstrToFfi(lpszSrc), util.pwstrToFfi(lpszDst), cchDstLength));
}

export function CharUpperA(
  lpsz: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): string | null /* Windows.Win32.Foundation.PSTR */ {
  return util.pstrFromFfi(libUSER32_dll.CharUpperA(util.pstrToFfi(lpsz)));
}

export function CharUpperW(
  lpsz: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): string | null /* Windows.Win32.Foundation.PWSTR */ {
  return util.pwstrFromFfi(libUSER32_dll.CharUpperW(util.pwstrToFfi(lpsz)));
}

export function CharUpperBuffA(
  lpsz: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchLength: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.CharUpperBuffA(util.pstrToFfi(lpsz), cchLength);
}

export function CharUpperBuffW(
  lpsz: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchLength: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.CharUpperBuffW(util.pwstrToFfi(lpsz), cchLength);
}

export function CharLowerA(
  lpsz: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): string | null /* Windows.Win32.Foundation.PSTR */ {
  return util.pstrFromFfi(libUSER32_dll.CharLowerA(util.pstrToFfi(lpsz)));
}

export function CharLowerW(
  lpsz: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): string | null /* Windows.Win32.Foundation.PWSTR */ {
  return util.pwstrFromFfi(libUSER32_dll.CharLowerW(util.pwstrToFfi(lpsz)));
}

export function CharLowerBuffA(
  lpsz: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchLength: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.CharLowerBuffA(util.pstrToFfi(lpsz), cchLength);
}

export function CharLowerBuffW(
  lpsz: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchLength: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.CharLowerBuffW(util.pwstrToFfi(lpsz), cchLength);
}

export function CharNextA(
  lpsz: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): string | null /* Windows.Win32.Foundation.PSTR */ {
  return util.pstrFromFfi(libUSER32_dll.CharNextA(util.pstrToFfi(lpsz)));
}

export function CharNextW(
  lpsz: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): string | null /* Windows.Win32.Foundation.PWSTR */ {
  return util.pwstrFromFfi(libUSER32_dll.CharNextW(util.pwstrToFfi(lpsz)));
}

export function CharPrevA(
  lpszStart: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszCurrent: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): string | null /* Windows.Win32.Foundation.PSTR */ {
  return util.pstrFromFfi(libUSER32_dll.CharPrevA(util.pstrToFfi(lpszStart), util.pstrToFfi(lpszCurrent)));
}

export function CharPrevW(
  lpszStart: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszCurrent: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): string | null /* Windows.Win32.Foundation.PWSTR */ {
  return util.pwstrFromFfi(libUSER32_dll.CharPrevW(util.pwstrToFfi(lpszStart), util.pwstrToFfi(lpszCurrent)));
}

export function CharNextExA(
  CodePage: number /* u16 */,
  lpCurrentChar: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwFlags: number /* u32 */,
): string | null /* Windows.Win32.Foundation.PSTR */ {
  return util.pstrFromFfi(libUSER32_dll.CharNextExA(CodePage, util.pstrToFfi(lpCurrentChar), dwFlags));
}

export function CharPrevExA(
  CodePage: number /* u16 */,
  lpStart: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpCurrentChar: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwFlags: number /* u32 */,
): string | null /* Windows.Win32.Foundation.PSTR */ {
  return util.pstrFromFfi(libUSER32_dll.CharPrevExA(CodePage, util.pstrToFfi(lpStart), util.pstrToFfi(lpCurrentChar), dwFlags));
}

export function IsCharAlphaA(
  ch: string | number /* Windows.Win32.Foundation.CHAR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsCharAlphaA(util.charToFfi(ch)));
}

export function IsCharAlphaW(
  ch: Uint8Array | Deno.PointerValue /* char */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsCharAlphaW(util.toPointer(ch)));
}

export function IsCharAlphaNumericA(
  ch: string | number /* Windows.Win32.Foundation.CHAR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsCharAlphaNumericA(util.charToFfi(ch)));
}

export function IsCharAlphaNumericW(
  ch: Uint8Array | Deno.PointerValue /* char */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsCharAlphaNumericW(util.toPointer(ch)));
}

export function IsCharUpperA(
  ch: string | number /* Windows.Win32.Foundation.CHAR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsCharUpperA(util.charToFfi(ch)));
}

export function IsCharUpperW(
  ch: Uint8Array | Deno.PointerValue /* char */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsCharUpperW(util.toPointer(ch)));
}

export function IsCharLowerA(
  ch: string | number /* Windows.Win32.Foundation.CHAR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsCharLowerA(util.charToFfi(ch)));
}

export function GetInputState(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetInputState());
}

export function GetQueueStatus(
  flags: QUEUE_STATUS_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.QUEUE_STATUS_FLAGS */,
): number /* u32 */ {
  return libUSER32_dll.GetQueueStatus(flags);
}

export function MsgWaitForMultipleObjects(
  nCount: number /* u32 */,
  pHandles: Deno.PointerValue | Uint8Array /* ptr */,
  fWaitAll: boolean /* Windows.Win32.Foundation.BOOL */,
  dwMilliseconds: number /* u32 */,
  dwWakeMask: QUEUE_STATUS_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.QUEUE_STATUS_FLAGS */,
): number /* u32 */ {
  return libUSER32_dll.MsgWaitForMultipleObjects(nCount, util.toPointer(pHandles), util.boolToFfi(fWaitAll), dwMilliseconds, dwWakeMask);
}

export function MsgWaitForMultipleObjectsEx(
  nCount: number /* u32 */,
  pHandles: Deno.PointerValue | Uint8Array /* ptr */,
  dwMilliseconds: number /* u32 */,
  dwWakeMask: QUEUE_STATUS_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.QUEUE_STATUS_FLAGS */,
  dwFlags: MSG_WAIT_FOR_MULTIPLE_OBJECTS_EX_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MSG_WAIT_FOR_MULTIPLE_OBJECTS_EX_FLAGS */,
): number /* u32 */ {
  return libUSER32_dll.MsgWaitForMultipleObjectsEx(nCount, util.toPointer(pHandles), dwMilliseconds, dwWakeMask, dwFlags);
}

export function SetTimer(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDEvent: bigint | number /* usize */,
  uElapse: number /* u32 */,
  lpTimerFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.TIMERPROC */,
): bigint | number /* usize */ {
  return libUSER32_dll.SetTimer((hWnd), nIDEvent, uElapse, util.toPointer(lpTimerFunc));
}

export function SetCoalescableTimer(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIDEvent: bigint | number /* usize */,
  uElapse: number /* u32 */,
  lpTimerFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.TIMERPROC */,
  uToleranceDelay: number /* u32 */,
): bigint | number /* usize */ {
  return libUSER32_dll.SetCoalescableTimer((hWnd), nIDEvent, uElapse, util.toPointer(lpTimerFunc), uToleranceDelay);
}

export function KillTimer(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  uIDEvent: bigint | number /* usize */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.KillTimer((hWnd), uIDEvent));
}

export function IsWindowUnicode(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsWindowUnicode((hWnd)));
}

export function LoadAcceleratorsA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTableName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */ {
  return libUSER32_dll.LoadAcceleratorsA(util.toPointer(hInstance), util.pstrToFfi(lpTableName));
}

export function LoadAcceleratorsW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpTableName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */ {
  return libUSER32_dll.LoadAcceleratorsW(util.toPointer(hInstance), util.pwstrToFfi(lpTableName));
}

export function CreateAcceleratorTableA(
  paccel: Deno.PointerValue | Uint8Array /* ptr */,
  cAccel: number /* i32 */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */ {
  return libUSER32_dll.CreateAcceleratorTableA(util.toPointer(paccel), cAccel);
}

export function CreateAcceleratorTableW(
  paccel: Deno.PointerValue | Uint8Array /* ptr */,
  cAccel: number /* i32 */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */ {
  return libUSER32_dll.CreateAcceleratorTableW(util.toPointer(paccel), cAccel);
}

export function DestroyAcceleratorTable(
  hAccel: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DestroyAcceleratorTable(util.toPointer(hAccel)));
}

export function CopyAcceleratorTableA(
  hAccelSrc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */,
  lpAccelDst: Deno.PointerValue | Uint8Array /* ptr */,
  cAccelEntries: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.CopyAcceleratorTableA(util.toPointer(hAccelSrc), util.toPointer(lpAccelDst), cAccelEntries);
}

export function CopyAcceleratorTableW(
  hAccelSrc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */,
  lpAccelDst: Deno.PointerValue | Uint8Array /* ptr */,
  cAccelEntries: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.CopyAcceleratorTableW(util.toPointer(hAccelSrc), util.toPointer(lpAccelDst), cAccelEntries);
}

export function TranslateAcceleratorA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hAccTable: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */,
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): number /* i32 */ {
  return libUSER32_dll.TranslateAcceleratorA((hWnd), util.toPointer(hAccTable), util.toPointer(lpMsg));
}

export function TranslateAcceleratorW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hAccTable: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HACCEL */,
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): number /* i32 */ {
  return libUSER32_dll.TranslateAcceleratorW((hWnd), util.toPointer(hAccTable), util.toPointer(lpMsg));
}

export function GetSystemMetrics(
  nIndex: SYSTEM_METRICS_INDEX /* Windows.Win32.UI.WindowsAndMessaging.SYSTEM_METRICS_INDEX */,
): number /* i32 */ {
  return libUSER32_dll.GetSystemMetrics(nIndex);
}

export function LoadMenuA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpMenuName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.LoadMenuA(util.toPointer(hInstance), util.pstrToFfi(lpMenuName));
}

export function LoadMenuW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpMenuName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.LoadMenuW(util.toPointer(hInstance), util.pwstrToFfi(lpMenuName));
}

export function LoadMenuIndirectA(
  lpMenuTemplate: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.LoadMenuIndirectA(util.toPointer(lpMenuTemplate));
}

export function LoadMenuIndirectW(
  lpMenuTemplate: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.LoadMenuIndirectW(util.toPointer(lpMenuTemplate));
}

export function GetMenu(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.GetMenu((hWnd));
}

export function SetMenu(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetMenu((hWnd), util.toPointer(hMenu)));
}

export function ChangeMenuA(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  cmd: number /* u32 */,
  lpszNewItem: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cmdInsert: number /* u32 */,
  flags: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ChangeMenuA(util.toPointer(hMenu), cmd, util.pstrToFfi(lpszNewItem), cmdInsert, flags));
}

export function ChangeMenuW(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  cmd: number /* u32 */,
  lpszNewItem: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cmdInsert: number /* u32 */,
  flags: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ChangeMenuW(util.toPointer(hMenu), cmd, util.pwstrToFfi(lpszNewItem), cmdInsert, flags));
}

export function HiliteMenuItem(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uIDHiliteItem: number /* u32 */,
  uHilite: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.HiliteMenuItem((hWnd), util.toPointer(hMenu), uIDHiliteItem, uHilite));
}

export function GetMenuStringA(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uIDItem: number /* u32 */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchMax: number /* i32 */,
  flags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
): number /* i32 */ {
  return libUSER32_dll.GetMenuStringA(util.toPointer(hMenu), uIDItem, util.pstrToFfi(lpString), cchMax, flags);
}

export function GetMenuStringW(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uIDItem: number /* u32 */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchMax: number /* i32 */,
  flags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
): number /* i32 */ {
  return libUSER32_dll.GetMenuStringW(util.toPointer(hMenu), uIDItem, util.pwstrToFfi(lpString), cchMax, flags);
}

export function GetMenuState(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uId: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
): number /* u32 */ {
  return libUSER32_dll.GetMenuState(util.toPointer(hMenu), uId, uFlags);
}

export function DrawMenuBar(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DrawMenuBar((hWnd)));
}

export function GetSystemMenu(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  bRevert: boolean /* Windows.Win32.Foundation.BOOL */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.GetSystemMenu((hWnd), util.boolToFfi(bRevert));
}

export function CreateMenu(): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.CreateMenu();
}

export function CreatePopupMenu(): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.CreatePopupMenu();
}

export function DestroyMenu(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DestroyMenu(util.toPointer(hMenu)));
}

export function CheckMenuItem(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uIDCheckItem: number /* u32 */,
  uCheck: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.CheckMenuItem(util.toPointer(hMenu), uIDCheckItem, uCheck);
}

export function EnableMenuItem(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uIDEnableItem: number /* u32 */,
  uEnable: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.EnableMenuItem(util.toPointer(hMenu), uIDEnableItem, uEnable));
}

export function GetSubMenu(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  nPos: number /* i32 */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */ {
  return libUSER32_dll.GetSubMenu(util.toPointer(hMenu), nPos);
}

export function GetMenuItemID(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  nPos: number /* i32 */,
): number /* u32 */ {
  return libUSER32_dll.GetMenuItemID(util.toPointer(hMenu), nPos);
}

export function GetMenuItemCount(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
): number /* i32 */ {
  return libUSER32_dll.GetMenuItemCount(util.toPointer(hMenu));
}

export function InsertMenuA(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uPosition: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
  uIDNewItem: bigint | number /* usize */,
  lpNewItem: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.InsertMenuA(util.toPointer(hMenu), uPosition, uFlags, uIDNewItem, util.pstrToFfi(lpNewItem)));
}

export function InsertMenuW(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uPosition: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
  uIDNewItem: bigint | number /* usize */,
  lpNewItem: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.InsertMenuW(util.toPointer(hMenu), uPosition, uFlags, uIDNewItem, util.pwstrToFfi(lpNewItem)));
}

export function AppendMenuA(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
  uIDNewItem: bigint | number /* usize */,
  lpNewItem: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.AppendMenuA(util.toPointer(hMenu), uFlags, uIDNewItem, util.pstrToFfi(lpNewItem)));
}

export function AppendMenuW(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
  uIDNewItem: bigint | number /* usize */,
  lpNewItem: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.AppendMenuW(util.toPointer(hMenu), uFlags, uIDNewItem, util.pwstrToFfi(lpNewItem)));
}

export function ModifyMenuA(
  hMnu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uPosition: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
  uIDNewItem: bigint | number /* usize */,
  lpNewItem: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ModifyMenuA(util.toPointer(hMnu), uPosition, uFlags, uIDNewItem, util.pstrToFfi(lpNewItem)));
}

export function ModifyMenuW(
  hMnu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uPosition: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
  uIDNewItem: bigint | number /* usize */,
  lpNewItem: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ModifyMenuW(util.toPointer(hMnu), uPosition, uFlags, uIDNewItem, util.pwstrToFfi(lpNewItem)));
}

export function RemoveMenu(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uPosition: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.RemoveMenu(util.toPointer(hMenu), uPosition, uFlags));
}

export function DeleteMenu(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uPosition: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DeleteMenu(util.toPointer(hMenu), uPosition, uFlags));
}

export function SetMenuItemBitmaps(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uPosition: number /* u32 */,
  uFlags: MENU_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.MENU_ITEM_FLAGS */,
  hBitmapUnchecked: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HBITMAP */,
  hBitmapChecked: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HBITMAP */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetMenuItemBitmaps(util.toPointer(hMenu), uPosition, uFlags, util.toPointer(hBitmapUnchecked), util.toPointer(hBitmapChecked)));
}

export function GetMenuCheckMarkDimensions(): number /* i32 */ {
  return libUSER32_dll.GetMenuCheckMarkDimensions();
}

export function TrackPopupMenu(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uFlags: TRACK_POPUP_MENU_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.TRACK_POPUP_MENU_FLAGS */,
  x: number /* i32 */,
  y: number /* i32 */,
  nReserved: number /* i32 */,
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  prcRect: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.TrackPopupMenu(util.toPointer(hMenu), uFlags, x, y, nReserved, (hWnd), util.toPointer(prcRect)));
}

export function TrackPopupMenuEx(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uFlags: number /* u32 */,
  x: number /* i32 */,
  y: number /* i32 */,
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lptpm: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.TrackPopupMenuEx(util.toPointer(hMenu), uFlags, x, y, (hwnd), util.toPointer(lptpm)));
}

export function CalculatePopupWindowPosition(
  anchorPoint: Deno.PointerValue | Uint8Array /* ptr */,
  windowSize: Deno.PointerValue | Uint8Array /* ptr */,
  flags: number /* u32 */,
  excludeRect: Deno.PointerValue | Uint8Array /* ptr */,
  popupWindowPosition: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CalculatePopupWindowPosition(util.toPointer(anchorPoint), util.toPointer(windowSize), flags, util.toPointer(excludeRect), util.toPointer(popupWindowPosition)));
}

export function GetMenuInfo(
  param0: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  param1: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetMenuInfo(util.toPointer(param0), util.toPointer(param1)));
}

export function SetMenuInfo(
  param0: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  param1: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetMenuInfo(util.toPointer(param0), util.toPointer(param1)));
}

export function EndMenu(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.EndMenu());
}

export function InsertMenuItemA(
  hmenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  item: number /* u32 */,
  fByPosition: boolean /* Windows.Win32.Foundation.BOOL */,
  lpmi: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.InsertMenuItemA(util.toPointer(hmenu), item, util.boolToFfi(fByPosition), util.toPointer(lpmi)));
}

export function InsertMenuItemW(
  hmenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  item: number /* u32 */,
  fByPosition: boolean /* Windows.Win32.Foundation.BOOL */,
  lpmi: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.InsertMenuItemW(util.toPointer(hmenu), item, util.boolToFfi(fByPosition), util.toPointer(lpmi)));
}

export function GetMenuItemInfoA(
  hmenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  item: number /* u32 */,
  fByPosition: boolean /* Windows.Win32.Foundation.BOOL */,
  lpmii: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetMenuItemInfoA(util.toPointer(hmenu), item, util.boolToFfi(fByPosition), util.toPointer(lpmii)));
}

export function GetMenuItemInfoW(
  hmenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  item: number /* u32 */,
  fByPosition: boolean /* Windows.Win32.Foundation.BOOL */,
  lpmii: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetMenuItemInfoW(util.toPointer(hmenu), item, util.boolToFfi(fByPosition), util.toPointer(lpmii)));
}

export function SetMenuItemInfoA(
  hmenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  item: number /* u32 */,
  fByPositon: boolean /* Windows.Win32.Foundation.BOOL */,
  lpmii: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetMenuItemInfoA(util.toPointer(hmenu), item, util.boolToFfi(fByPositon), util.toPointer(lpmii)));
}

export function SetMenuItemInfoW(
  hmenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  item: number /* u32 */,
  fByPositon: boolean /* Windows.Win32.Foundation.BOOL */,
  lpmii: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetMenuItemInfoW(util.toPointer(hmenu), item, util.boolToFfi(fByPositon), util.toPointer(lpmii)));
}

export function GetMenuDefaultItem(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  fByPos: number /* u32 */,
  gmdiFlags: GET_MENU_DEFAULT_ITEM_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.GET_MENU_DEFAULT_ITEM_FLAGS */,
): number /* u32 */ {
  return libUSER32_dll.GetMenuDefaultItem(util.toPointer(hMenu), fByPos, gmdiFlags);
}

export function SetMenuDefaultItem(
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uItem: number /* u32 */,
  fByPos: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetMenuDefaultItem(util.toPointer(hMenu), uItem, fByPos));
}

export function GetMenuItemRect(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  uItem: number /* u32 */,
  lprcItem: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetMenuItemRect((hWnd), util.toPointer(hMenu), uItem, util.toPointer(lprcItem)));
}

export function MenuItemFromPoint(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hMenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  ptScreen: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.POINT */,
): number /* i32 */ {
  return libUSER32_dll.MenuItemFromPoint((hWnd), util.toPointer(hMenu), util.toPointer(ptScreen));
}

export function DragObject(
  hwndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hwndFrom: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  fmt: number /* u32 */,
  data: bigint | number /* usize */,
  hcur: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */,
): number /* u32 */ {
  return libUSER32_dll.DragObject((hwndParent), (hwndFrom), fmt, data, util.toPointer(hcur));
}

export function DrawIcon(
  hDC: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HDC */,
  X: number /* i32 */,
  Y: number /* i32 */,
  hIcon: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DrawIcon(util.toPointer(hDC), X, Y, util.toPointer(hIcon)));
}

export function GetForegroundWindow(): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetForegroundWindow());
}

export function SwitchToThisWindow(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  fUnknown: boolean /* Windows.Win32.Foundation.BOOL */,
): void /* void */ {
  return libUSER32_dll.SwitchToThisWindow((hwnd), util.boolToFfi(fUnknown));
}

export function SetForegroundWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetForegroundWindow((hWnd)));
}

export function AllowSetForegroundWindow(
  dwProcessId: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.AllowSetForegroundWindow(dwProcessId));
}

export function LockSetForegroundWindow(
  uLockCode: FOREGROUND_WINDOW_LOCK_CODE /* Windows.Win32.UI.WindowsAndMessaging.FOREGROUND_WINDOW_LOCK_CODE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.LockSetForegroundWindow(uLockCode));
}

export function ScrollWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  XAmount: number /* i32 */,
  YAmount: number /* i32 */,
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
  lpClipRect: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ScrollWindow((hWnd), XAmount, YAmount, util.toPointer(lpRect), util.toPointer(lpClipRect)));
}

export function ScrollDC(
  hDC: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HDC */,
  dx: number /* i32 */,
  dy: number /* i32 */,
  lprcScroll: Deno.PointerValue | Uint8Array /* ptr */,
  lprcClip: Deno.PointerValue | Uint8Array /* ptr */,
  hrgnUpdate: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HRGN */,
  lprcUpdate: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ScrollDC(util.toPointer(hDC), dx, dy, util.toPointer(lprcScroll), util.toPointer(lprcClip), util.toPointer(hrgnUpdate), util.toPointer(lprcUpdate)));
}

export function ScrollWindowEx(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  dx: number /* i32 */,
  dy: number /* i32 */,
  prcScroll: Deno.PointerValue | Uint8Array /* ptr */,
  prcClip: Deno.PointerValue | Uint8Array /* ptr */,
  hrgnUpdate: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HRGN */,
  prcUpdate: Deno.PointerValue | Uint8Array /* ptr */,
  flags: SHOW_WINDOW_CMD /* Windows.Win32.UI.WindowsAndMessaging.SHOW_WINDOW_CMD */,
): number /* i32 */ {
  return libUSER32_dll.ScrollWindowEx((hWnd), dx, dy, util.toPointer(prcScroll), util.toPointer(prcClip), util.toPointer(hrgnUpdate), util.toPointer(prcUpdate), flags);
}

export function GetScrollPos(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nBar: SCROLLBAR_CONSTANTS /* Windows.Win32.UI.WindowsAndMessaging.SCROLLBAR_CONSTANTS */,
): number /* i32 */ {
  return libUSER32_dll.GetScrollPos((hWnd), nBar);
}

export function GetScrollRange(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nBar: SCROLLBAR_CONSTANTS /* Windows.Win32.UI.WindowsAndMessaging.SCROLLBAR_CONSTANTS */,
  lpMinPos: Deno.PointerValue | Uint8Array /* ptr */,
  lpMaxPos: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetScrollRange((hWnd), nBar, util.toPointer(lpMinPos), util.toPointer(lpMaxPos)));
}

export function SetPropA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  hData: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetPropA((hWnd), util.pstrToFfi(lpString), util.toPointer(hData)));
}

export function SetPropW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  hData: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetPropW((hWnd), util.pwstrToFfi(lpString), util.toPointer(hData)));
}

export function GetPropA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libUSER32_dll.GetPropA((hWnd), util.pstrToFfi(lpString));
}

export function GetPropW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libUSER32_dll.GetPropW((hWnd), util.pwstrToFfi(lpString));
}

export function RemovePropA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libUSER32_dll.RemovePropA((hWnd), util.pstrToFfi(lpString));
}

export function RemovePropW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libUSER32_dll.RemovePropW((hWnd), util.pwstrToFfi(lpString));
}

export function EnumPropsExA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpEnumFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.PROPENUMPROCEXA */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): number /* i32 */ {
  return libUSER32_dll.EnumPropsExA((hWnd), util.toPointer(lpEnumFunc), util.toPointer(lParam));
}

export function EnumPropsExW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpEnumFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.PROPENUMPROCEXW */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): number /* i32 */ {
  return libUSER32_dll.EnumPropsExW((hWnd), util.toPointer(lpEnumFunc), util.toPointer(lParam));
}

export function EnumPropsA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpEnumFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.PROPENUMPROCA */,
): number /* i32 */ {
  return libUSER32_dll.EnumPropsA((hWnd), util.toPointer(lpEnumFunc));
}

export function EnumPropsW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpEnumFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.PROPENUMPROCW */,
): number /* i32 */ {
  return libUSER32_dll.EnumPropsW((hWnd), util.toPointer(lpEnumFunc));
}

export function SetWindowTextA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetWindowTextA((hWnd), util.pstrToFfi(lpString)));
}

export function SetWindowTextW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetWindowTextW((hWnd), util.pwstrToFfi(lpString)));
}

export function GetWindowTextA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nMaxCount: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.GetWindowTextA((hWnd), util.pstrToFfi(lpString), nMaxCount);
}

export function GetWindowTextW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nMaxCount: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.GetWindowTextW((hWnd), util.pwstrToFfi(lpString), nMaxCount);
}

export function GetWindowTextLengthA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): number /* i32 */ {
  return libUSER32_dll.GetWindowTextLengthA((hWnd));
}

export function GetWindowTextLengthW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): number /* i32 */ {
  return libUSER32_dll.GetWindowTextLengthW((hWnd));
}

export function GetClientRect(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetClientRect((hWnd), util.toPointer(lpRect)));
}

export function GetWindowRect(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetWindowRect((hWnd), util.toPointer(lpRect)));
}

export function AdjustWindowRect(
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
  dwStyle: WINDOW_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */,
  bMenu: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.AdjustWindowRect(util.toPointer(lpRect), dwStyle, util.boolToFfi(bMenu)));
}

export function AdjustWindowRectEx(
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
  dwStyle: WINDOW_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */,
  bMenu: boolean /* Windows.Win32.Foundation.BOOL */,
  dwExStyle: WINDOW_EX_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_EX_STYLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.AdjustWindowRectEx(util.toPointer(lpRect), dwStyle, util.boolToFfi(bMenu), dwExStyle));
}

export function MessageBoxA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpText: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpCaption: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  uType: MESSAGEBOX_STYLE /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_STYLE */,
): MESSAGEBOX_RESULT /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_RESULT */ {
  return libUSER32_dll.MessageBoxA((hWnd), util.pstrToFfi(lpText), util.pstrToFfi(lpCaption), uType);
}

export function MessageBoxW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpText: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpCaption: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  uType: MESSAGEBOX_STYLE /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_STYLE */,
): MESSAGEBOX_RESULT /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_RESULT */ {
  return libUSER32_dll.MessageBoxW((hWnd), util.pwstrToFfi(lpText), util.pwstrToFfi(lpCaption), uType);
}

export function MessageBoxExA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpText: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpCaption: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  uType: MESSAGEBOX_STYLE /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_STYLE */,
  wLanguageId: number /* u16 */,
): MESSAGEBOX_RESULT /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_RESULT */ {
  return libUSER32_dll.MessageBoxExA((hWnd), util.pstrToFfi(lpText), util.pstrToFfi(lpCaption), uType, wLanguageId);
}

export function MessageBoxExW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpText: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpCaption: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  uType: MESSAGEBOX_STYLE /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_STYLE */,
  wLanguageId: number /* u16 */,
): MESSAGEBOX_RESULT /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_RESULT */ {
  return libUSER32_dll.MessageBoxExW((hWnd), util.pwstrToFfi(lpText), util.pwstrToFfi(lpCaption), uType, wLanguageId);
}

export function MessageBoxIndirectA(
  lpmbp: Deno.PointerValue | Uint8Array /* ptr */,
): MESSAGEBOX_RESULT /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_RESULT */ {
  return libUSER32_dll.MessageBoxIndirectA(util.toPointer(lpmbp));
}

export function MessageBoxIndirectW(
  lpmbp: Deno.PointerValue | Uint8Array /* ptr */,
): MESSAGEBOX_RESULT /* Windows.Win32.UI.WindowsAndMessaging.MESSAGEBOX_RESULT */ {
  return libUSER32_dll.MessageBoxIndirectW(util.toPointer(lpmbp));
}

export function ShowCursor(
  bShow: boolean /* Windows.Win32.Foundation.BOOL */,
): number /* i32 */ {
  return libUSER32_dll.ShowCursor(util.boolToFfi(bShow));
}

export function SetCursorPos(
  X: number /* i32 */,
  Y: number /* i32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetCursorPos(X, Y));
}

export function SetPhysicalCursorPos(
  X: number /* i32 */,
  Y: number /* i32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetPhysicalCursorPos(X, Y));
}

export function SetCursor(
  hCursor: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */ {
  return libUSER32_dll.SetCursor(util.toPointer(hCursor));
}

export function GetCursorPos(
  lpPoint: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetCursorPos(util.toPointer(lpPoint)));
}

export function GetPhysicalCursorPos(
  lpPoint: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetPhysicalCursorPos(util.toPointer(lpPoint)));
}

export function GetClipCursor(
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetClipCursor(util.toPointer(lpRect)));
}

export function GetCursor(): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */ {
  return libUSER32_dll.GetCursor();
}

export function CreateCaret(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hBitmap: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HBITMAP */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CreateCaret((hWnd), util.toPointer(hBitmap), nWidth, nHeight));
}

export function GetCaretBlinkTime(): number /* u32 */ {
  return libUSER32_dll.GetCaretBlinkTime();
}

export function SetCaretBlinkTime(
  uMSeconds: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetCaretBlinkTime(uMSeconds));
}

export function DestroyCaret(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DestroyCaret());
}

export function HideCaret(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.HideCaret((hWnd)));
}

export function ShowCaret(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ShowCaret((hWnd)));
}

export function SetCaretPos(
  X: number /* i32 */,
  Y: number /* i32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetCaretPos(X, Y));
}

export function GetCaretPos(
  lpPoint: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetCaretPos(util.toPointer(lpPoint)));
}

export function LogicalToPhysicalPoint(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpPoint: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.LogicalToPhysicalPoint((hWnd), util.toPointer(lpPoint)));
}

export function PhysicalToLogicalPoint(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpPoint: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.PhysicalToLogicalPoint((hWnd), util.toPointer(lpPoint)));
}

export function WindowFromPoint(
  Point: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.POINT */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.WindowFromPoint(util.toPointer(Point)));
}

export function WindowFromPhysicalPoint(
  Point: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.POINT */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.WindowFromPhysicalPoint(util.toPointer(Point)));
}

export function ChildWindowFromPoint(
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  Point: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.POINT */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.ChildWindowFromPoint((hWndParent), util.toPointer(Point)));
}

export function ClipCursor(
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ClipCursor(util.toPointer(lpRect)));
}

export function ChildWindowFromPointEx(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pt: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.POINT */,
  flags: CWP_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.CWP_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.ChildWindowFromPointEx((hwnd), util.toPointer(pt), flags));
}

export function GetWindowWord(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: number /* i32 */,
): number /* u16 */ {
  return libUSER32_dll.GetWindowWord((hWnd), nIndex);
}

export function SetWindowWord(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: number /* i32 */,
  wNewWord: number /* u16 */,
): number /* u16 */ {
  return libUSER32_dll.SetWindowWord((hWnd), nIndex, wNewWord);
}

export function GetWindowLongA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
): number /* i32 */ {
  return libUSER32_dll.GetWindowLongA((hWnd), nIndex);
}

export function GetWindowLongW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
): number /* i32 */ {
  return libUSER32_dll.GetWindowLongW((hWnd), nIndex);
}

export function SetWindowLongA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
  dwNewLong: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.SetWindowLongA((hWnd), nIndex, dwNewLong);
}

export function SetWindowLongW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: WINDOW_LONG_PTR_INDEX /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX */,
  dwNewLong: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.SetWindowLongW((hWnd), nIndex, dwNewLong);
}

export function GetClassWord(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: number /* i32 */,
): number /* u16 */ {
  return libUSER32_dll.GetClassWord((hWnd), nIndex);
}

export function SetClassWord(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: number /* i32 */,
  wNewWord: number /* u16 */,
): number /* u16 */ {
  return libUSER32_dll.SetClassWord((hWnd), nIndex, wNewWord);
}

export function GetClassLongA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
): number /* u32 */ {
  return libUSER32_dll.GetClassLongA((hWnd), nIndex);
}

export function GetClassLongW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
): number /* u32 */ {
  return libUSER32_dll.GetClassLongW((hWnd), nIndex);
}

export function SetClassLongA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
  dwNewLong: number /* i32 */,
): number /* u32 */ {
  return libUSER32_dll.SetClassLongA((hWnd), nIndex, dwNewLong);
}

export function SetClassLongW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nIndex: GET_CLASS_LONG_INDEX /* Windows.Win32.UI.WindowsAndMessaging.GET_CLASS_LONG_INDEX */,
  dwNewLong: number /* i32 */,
): number /* u32 */ {
  return libUSER32_dll.SetClassLongW((hWnd), nIndex, dwNewLong);
}

export function GetProcessDefaultLayout(
  pdwDefaultLayout: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetProcessDefaultLayout(util.toPointer(pdwDefaultLayout)));
}

export function SetProcessDefaultLayout(
  dwDefaultLayout: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetProcessDefaultLayout(dwDefaultLayout));
}

export function GetDesktopWindow(): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetDesktopWindow());
}

export function GetParent(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetParent((hWnd)));
}

export function SetParent(
  hWndChild: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWndNewParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.SetParent((hWndChild), (hWndNewParent)));
}

export function EnumChildWindows(
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpEnumFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.WNDENUMPROC */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.EnumChildWindows((hWndParent), util.toPointer(lpEnumFunc), util.toPointer(lParam)));
}

export function FindWindowA(
  lpClassName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpWindowName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.FindWindowA(util.pstrToFfi(lpClassName), util.pstrToFfi(lpWindowName)));
}

export function FindWindowW(
  lpClassName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpWindowName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.FindWindowW(util.pwstrToFfi(lpClassName), util.pwstrToFfi(lpWindowName)));
}

export function FindWindowExA(
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWndChildAfter: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpszClass: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszWindow: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.FindWindowExA((hWndParent), (hWndChildAfter), util.pstrToFfi(lpszClass), util.pstrToFfi(lpszWindow)));
}

export function FindWindowExW(
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWndChildAfter: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpszClass: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszWindow: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.FindWindowExW((hWndParent), (hWndChildAfter), util.pwstrToFfi(lpszClass), util.pwstrToFfi(lpszWindow)));
}

export function GetShellWindow(): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetShellWindow());
}

export function RegisterShellHookWindow(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.RegisterShellHookWindow((hwnd)));
}

export function DeregisterShellHookWindow(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DeregisterShellHookWindow((hwnd)));
}

export function EnumWindows(
  lpEnumFunc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.WNDENUMPROC */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.EnumWindows(util.toPointer(lpEnumFunc), util.toPointer(lParam)));
}

export function EnumThreadWindows(
  dwThreadId: number /* u32 */,
  lpfn: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.WNDENUMPROC */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.EnumThreadWindows(dwThreadId, util.toPointer(lpfn), util.toPointer(lParam)));
}

export function GetClassNameA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpClassName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nMaxCount: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.GetClassNameA((hWnd), util.pstrToFfi(lpClassName), nMaxCount);
}

export function GetClassNameW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpClassName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nMaxCount: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.GetClassNameW((hWnd), util.pwstrToFfi(lpClassName), nMaxCount);
}

export function GetTopWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetTopWindow((hWnd)));
}

export function GetWindowThreadProcessId(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpdwProcessId: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libUSER32_dll.GetWindowThreadProcessId((hWnd), util.toPointer(lpdwProcessId));
}

export function IsGUIThread(
  bConvert: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsGUIThread(util.boolToFfi(bConvert)));
}

export function GetLastActivePopup(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetLastActivePopup((hWnd)));
}

export function GetWindow(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  uCmd: GET_WINDOW_CMD /* Windows.Win32.UI.WindowsAndMessaging.GET_WINDOW_CMD */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetWindow((hWnd), uCmd));
}

export function SetWindowsHookA(
  nFilterType: number /* i32 */,
  pfnFilterProc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HOOKPROC */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HHOOK */ {
  return libUSER32_dll.SetWindowsHookA(nFilterType, util.toPointer(pfnFilterProc));
}

export function SetWindowsHookW(
  nFilterType: number /* i32 */,
  pfnFilterProc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HOOKPROC */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HHOOK */ {
  return libUSER32_dll.SetWindowsHookW(nFilterType, util.toPointer(pfnFilterProc));
}

export function UnhookWindowsHook(
  nCode: number /* i32 */,
  pfnFilterProc: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HOOKPROC */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.UnhookWindowsHook(nCode, util.toPointer(pfnFilterProc)));
}

export function SetWindowsHookExA(
  idHook: WINDOWS_HOOK_ID /* Windows.Win32.UI.WindowsAndMessaging.WINDOWS_HOOK_ID */,
  lpfn: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HOOKPROC */,
  hmod: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  dwThreadId: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HHOOK */ {
  return libUSER32_dll.SetWindowsHookExA(idHook, util.toPointer(lpfn), util.toPointer(hmod), dwThreadId);
}

export function SetWindowsHookExW(
  idHook: WINDOWS_HOOK_ID /* Windows.Win32.UI.WindowsAndMessaging.WINDOWS_HOOK_ID */,
  lpfn: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HOOKPROC */,
  hmod: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  dwThreadId: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HHOOK */ {
  return libUSER32_dll.SetWindowsHookExW(idHook, util.toPointer(lpfn), util.toPointer(hmod), dwThreadId);
}

export function UnhookWindowsHookEx(
  hhk: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HHOOK */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.UnhookWindowsHookEx(util.toPointer(hhk)));
}

export function CallNextHookEx(
  hhk: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HHOOK */,
  nCode: number /* i32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.CallNextHookEx(util.toPointer(hhk), nCode, util.toPointer(wParam), util.toPointer(lParam));
}

export function CheckMenuRadioItem(
  hmenu: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HMENU */,
  first: number /* u32 */,
  last: number /* u32 */,
  check: number /* u32 */,
  flags: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CheckMenuRadioItem(util.toPointer(hmenu), first, last, check, flags));
}

export function LoadCursorA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpCursorName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */ {
  return libUSER32_dll.LoadCursorA(util.toPointer(hInstance), util.pstrToFfi(lpCursorName));
}

export function LoadCursorW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpCursorName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */ {
  return libUSER32_dll.LoadCursorW(util.toPointer(hInstance), util.pwstrToFfi(lpCursorName));
}

export function LoadCursorFromFileA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */ {
  return libUSER32_dll.LoadCursorFromFileA(util.pstrToFfi(lpFileName));
}

export function LoadCursorFromFileW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */ {
  return libUSER32_dll.LoadCursorFromFileW(util.pwstrToFfi(lpFileName));
}

export function CreateCursor(
  hInst: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  xHotSpot: number /* i32 */,
  yHotSpot: number /* i32 */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
  pvANDPlane: Deno.PointerValue | Uint8Array /* ptr */,
  pvXORPlane: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */ {
  return libUSER32_dll.CreateCursor(util.toPointer(hInst), xHotSpot, yHotSpot, nWidth, nHeight, util.toPointer(pvANDPlane), util.toPointer(pvXORPlane));
}

export function DestroyCursor(
  hCursor: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DestroyCursor(util.toPointer(hCursor)));
}

export function SetSystemCursor(
  hcur: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HCURSOR */,
  id: SYSTEM_CURSOR_ID /* Windows.Win32.UI.WindowsAndMessaging.SYSTEM_CURSOR_ID */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetSystemCursor(util.toPointer(hcur), id));
}

export function LoadIconA(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpIconName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */ {
  return libUSER32_dll.LoadIconA(util.toPointer(hInstance), util.pstrToFfi(lpIconName));
}

export function LoadIconW(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lpIconName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */ {
  return libUSER32_dll.LoadIconW(util.toPointer(hInstance), util.pwstrToFfi(lpIconName));
}

export function PrivateExtractIconsA(
  szFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nIconIndex: number /* i32 */,
  cxIcon: number /* i32 */,
  cyIcon: number /* i32 */,
  phicon: Deno.PointerValue | Uint8Array /* ptr */,
  piconid: Deno.PointerValue | Uint8Array /* ptr */,
  nIcons: number /* u32 */,
  flags: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.PrivateExtractIconsA(util.pstrToFfi(szFileName), nIconIndex, cxIcon, cyIcon, util.toPointer(phicon), util.toPointer(piconid), nIcons, flags);
}

export function PrivateExtractIconsW(
  szFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nIconIndex: number /* i32 */,
  cxIcon: number /* i32 */,
  cyIcon: number /* i32 */,
  phicon: Deno.PointerValue | Uint8Array /* ptr */,
  piconid: Deno.PointerValue | Uint8Array /* ptr */,
  nIcons: number /* u32 */,
  flags: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.PrivateExtractIconsW(util.pwstrToFfi(szFileName), nIconIndex, cxIcon, cyIcon, util.toPointer(phicon), util.toPointer(piconid), nIcons, flags);
}

export function CreateIcon(
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
  cPlanes: number /* u8 */,
  cBitsPixel: number /* u8 */,
  lpbANDbits: Deno.PointerValue | Uint8Array /* ptr */,
  lpbXORbits: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */ {
  return libUSER32_dll.CreateIcon(util.toPointer(hInstance), nWidth, nHeight, cPlanes, cBitsPixel, util.toPointer(lpbANDbits), util.toPointer(lpbXORbits));
}

export function DestroyIcon(
  hIcon: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DestroyIcon(util.toPointer(hIcon)));
}

export function LookupIconIdFromDirectory(
  presbits: Deno.PointerValue | Uint8Array /* ptr */,
  fIcon: boolean /* Windows.Win32.Foundation.BOOL */,
): number /* i32 */ {
  return libUSER32_dll.LookupIconIdFromDirectory(util.toPointer(presbits), util.boolToFfi(fIcon));
}

export function LookupIconIdFromDirectoryEx(
  presbits: Deno.PointerValue | Uint8Array /* ptr */,
  fIcon: boolean /* Windows.Win32.Foundation.BOOL */,
  cxDesired: number /* i32 */,
  cyDesired: number /* i32 */,
  Flags: IMAGE_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.IMAGE_FLAGS */,
): number /* i32 */ {
  return libUSER32_dll.LookupIconIdFromDirectoryEx(util.toPointer(presbits), util.boolToFfi(fIcon), cxDesired, cyDesired, Flags);
}

export function CreateIconFromResource(
  presbits: Deno.PointerValue | Uint8Array /* ptr */,
  dwResSize: number /* u32 */,
  fIcon: boolean /* Windows.Win32.Foundation.BOOL */,
  dwVer: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */ {
  return libUSER32_dll.CreateIconFromResource(util.toPointer(presbits), dwResSize, util.boolToFfi(fIcon), dwVer);
}

export function CreateIconFromResourceEx(
  presbits: Deno.PointerValue | Uint8Array /* ptr */,
  dwResSize: number /* u32 */,
  fIcon: boolean /* Windows.Win32.Foundation.BOOL */,
  dwVer: number /* u32 */,
  cxDesired: number /* i32 */,
  cyDesired: number /* i32 */,
  Flags: IMAGE_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.IMAGE_FLAGS */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */ {
  return libUSER32_dll.CreateIconFromResourceEx(util.toPointer(presbits), dwResSize, util.boolToFfi(fIcon), dwVer, cxDesired, cyDesired, Flags);
}

export function LoadImageA(
  hInst: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  name: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  type: GDI_IMAGE_TYPE /* Windows.Win32.UI.WindowsAndMessaging.GDI_IMAGE_TYPE */,
  cx: number /* i32 */,
  cy: number /* i32 */,
  fuLoad: IMAGE_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.IMAGE_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libUSER32_dll.LoadImageA(util.toPointer(hInst), util.pstrToFfi(name), type, cx, cy, fuLoad);
}

export function LoadImageW(
  hInst: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  name: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  type: GDI_IMAGE_TYPE /* Windows.Win32.UI.WindowsAndMessaging.GDI_IMAGE_TYPE */,
  cx: number /* i32 */,
  cy: number /* i32 */,
  fuLoad: IMAGE_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.IMAGE_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libUSER32_dll.LoadImageW(util.toPointer(hInst), util.pwstrToFfi(name), type, cx, cy, fuLoad);
}

export function CopyImage(
  h: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  type: GDI_IMAGE_TYPE /* Windows.Win32.UI.WindowsAndMessaging.GDI_IMAGE_TYPE */,
  cx: number /* i32 */,
  cy: number /* i32 */,
  flags: IMAGE_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.IMAGE_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libUSER32_dll.CopyImage(util.toPointer(h), type, cx, cy, flags);
}

export function DrawIconEx(
  hdc: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HDC */,
  xLeft: number /* i32 */,
  yTop: number /* i32 */,
  hIcon: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */,
  cxWidth: number /* i32 */,
  cyWidth: number /* i32 */,
  istepIfAniCur: number /* u32 */,
  hbrFlickerFreeDraw: Uint8Array | Deno.PointerValue /* Windows.Win32.Graphics.Gdi.HBRUSH */,
  diFlags: DI_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.DI_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.DrawIconEx(util.toPointer(hdc), xLeft, yTop, util.toPointer(hIcon), cxWidth, cyWidth, istepIfAniCur, util.toPointer(hbrFlickerFreeDraw), diFlags));
}

export function CreateIconIndirect(
  piconinfo: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */ {
  return libUSER32_dll.CreateIconIndirect(util.toPointer(piconinfo));
}

export function CopyIcon(
  hIcon: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */,
): Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */ {
  return libUSER32_dll.CopyIcon(util.toPointer(hIcon));
}

export function GetIconInfo(
  hIcon: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */,
  piconinfo: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetIconInfo(util.toPointer(hIcon), util.toPointer(piconinfo)));
}

export function GetIconInfoExA(
  hicon: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */,
  piconinfo: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetIconInfoExA(util.toPointer(hicon), util.toPointer(piconinfo)));
}

export function GetIconInfoExW(
  hicon: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.HICON */,
  piconinfo: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetIconInfoExW(util.toPointer(hicon), util.toPointer(piconinfo)));
}

export function IsDialogMessageA(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsDialogMessageA((hDlg), util.toPointer(lpMsg)));
}

export function IsDialogMessageW(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsDialogMessageW((hDlg), util.toPointer(lpMsg)));
}

export function MapDialogRect(
  hDlg: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.MapDialogRect((hDlg), util.toPointer(lpRect)));
}

export function GetScrollInfo(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  nBar: SCROLLBAR_CONSTANTS /* Windows.Win32.UI.WindowsAndMessaging.SCROLLBAR_CONSTANTS */,
  lpsi: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetScrollInfo((hwnd), nBar, util.toPointer(lpsi)));
}

export function DefFrameProcA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWndMDIClient: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  uMsg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefFrameProcA((hWnd), (hWndMDIClient), uMsg, util.toPointer(wParam), util.toPointer(lParam));
}

export function DefFrameProcW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hWndMDIClient: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  uMsg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefFrameProcW((hWnd), (hWndMDIClient), uMsg, util.toPointer(wParam), util.toPointer(lParam));
}

export function DefMDIChildProcA(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  uMsg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefMDIChildProcA((hWnd), uMsg, util.toPointer(wParam), util.toPointer(lParam));
}

export function DefMDIChildProcW(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  uMsg: number /* u32 */,
  wParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.WPARAM */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.LRESULT */ {
  return libUSER32_dll.DefMDIChildProcW((hWnd), uMsg, util.toPointer(wParam), util.toPointer(lParam));
}

export function TranslateMDISysAccel(
  hWndClient: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  lpMsg: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.TranslateMDISysAccel((hWndClient), util.toPointer(lpMsg)));
}

export function ArrangeIconicWindows(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): number /* u32 */ {
  return libUSER32_dll.ArrangeIconicWindows((hWnd));
}

export function CreateMDIWindowA(
  lpClassName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpWindowName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwStyle: WINDOW_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */,
  X: number /* i32 */,
  Y: number /* i32 */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateMDIWindowA(util.pstrToFfi(lpClassName), util.pstrToFfi(lpWindowName), dwStyle, X, Y, nWidth, nHeight, (hWndParent), util.toPointer(hInstance), util.toPointer(lParam)));
}

export function CreateMDIWindowW(
  lpClassName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpWindowName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwStyle: WINDOW_STYLE /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE */,
  X: number /* i32 */,
  Y: number /* i32 */,
  nWidth: number /* i32 */,
  nHeight: number /* i32 */,
  hWndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hInstance: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HINSTANCE */,
  lParam: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LPARAM */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.CreateMDIWindowW(util.pwstrToFfi(lpClassName), util.pwstrToFfi(lpWindowName), dwStyle, X, Y, nWidth, nHeight, (hWndParent), util.toPointer(hInstance), util.toPointer(lParam)));
}

export function TileWindows(
  hwndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  wHow: TILE_WINDOWS_HOW /* Windows.Win32.UI.WindowsAndMessaging.TILE_WINDOWS_HOW */,
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
  cKids: number /* u32 */,
  lpKids: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u16 */ {
  return libUSER32_dll.TileWindows((hwndParent), wHow, util.toPointer(lpRect), cKids, util.toPointer(lpKids));
}

export function CascadeWindows(
  hwndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  wHow: CASCADE_WINDOWS_HOW /* Windows.Win32.UI.WindowsAndMessaging.CASCADE_WINDOWS_HOW */,
  lpRect: Deno.PointerValue | Uint8Array /* ptr */,
  cKids: number /* u32 */,
  lpKids: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u16 */ {
  return libUSER32_dll.CascadeWindows((hwndParent), wHow, util.toPointer(lpRect), cKids, util.toPointer(lpKids));
}

export function SystemParametersInfoA(
  uiAction: SYSTEM_PARAMETERS_INFO_ACTION /* Windows.Win32.UI.WindowsAndMessaging.SYSTEM_PARAMETERS_INFO_ACTION */,
  uiParam: number /* u32 */,
  pvParam: Deno.PointerValue | Uint8Array /* ptr */,
  fWinIni: SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SystemParametersInfoA(uiAction, uiParam, util.toPointer(pvParam), fWinIni));
}

export function SystemParametersInfoW(
  uiAction: SYSTEM_PARAMETERS_INFO_ACTION /* Windows.Win32.UI.WindowsAndMessaging.SYSTEM_PARAMETERS_INFO_ACTION */,
  uiParam: number /* u32 */,
  pvParam: Deno.PointerValue | Uint8Array /* ptr */,
  fWinIni: SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SystemParametersInfoW(uiAction, uiParam, util.toPointer(pvParam), fWinIni));
}

export function SoundSentry(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SoundSentry());
}

export function SetDebugErrorLevel(
  dwLevel: number /* u32 */,
): void /* void */ {
  return libUSER32_dll.SetDebugErrorLevel(dwLevel);
}

export function InternalGetWindowText(
  hWnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchMaxCount: number /* i32 */,
): number /* i32 */ {
  return libUSER32_dll.InternalGetWindowText((hWnd), util.pwstrToFfi(pString), cchMaxCount);
}

export function CancelShutdown(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.CancelShutdown());
}

export function GetGUIThreadInfo(
  idThread: number /* u32 */,
  pgui: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetGUIThreadInfo(idThread, util.toPointer(pgui)));
}

export function SetProcessDPIAware(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.SetProcessDPIAware());
}

export function IsProcessDPIAware(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.IsProcessDPIAware());
}

export function InheritWindowMonitor(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  hwndInherit: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.InheritWindowMonitor((hwnd), (hwndInherit)));
}

export function GetWindowModuleFileNameA(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pszFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchFileNameMax: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.GetWindowModuleFileNameA((hwnd), util.pstrToFfi(pszFileName), cchFileNameMax);
}

export function GetWindowModuleFileNameW(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pszFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchFileNameMax: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.GetWindowModuleFileNameW((hwnd), util.pwstrToFfi(pszFileName), cchFileNameMax);
}

export function GetCursorInfo(
  pci: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetCursorInfo(util.toPointer(pci)));
}

export function GetWindowInfo(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pwi: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetWindowInfo((hwnd), util.toPointer(pwi)));
}

export function GetTitleBarInfo(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  pti: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetTitleBarInfo((hwnd), util.toPointer(pti)));
}

export function GetMenuBarInfo(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  idObject: OBJECT_IDENTIFIER /* Windows.Win32.UI.WindowsAndMessaging.OBJECT_IDENTIFIER */,
  idItem: number /* i32 */,
  pmbi: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetMenuBarInfo((hwnd), idObject, idItem, util.toPointer(pmbi)));
}

export function GetScrollBarInfo(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  idObject: OBJECT_IDENTIFIER /* Windows.Win32.UI.WindowsAndMessaging.OBJECT_IDENTIFIER */,
  psbi: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetScrollBarInfo((hwnd), idObject, util.toPointer(psbi)));
}

export function GetAncestor(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  gaFlags: GET_ANCESTOR_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.GET_ANCESTOR_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.GetAncestor((hwnd), gaFlags));
}

export function RealChildWindowFromPoint(
  hwndParent: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  ptParentClientCoords: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.POINT */,
): Deno.PointerValue /* Windows.Win32.Foundation.HWND */ {
  return (libUSER32_dll.RealChildWindowFromPoint((hwndParent), util.toPointer(ptParentClientCoords)));
}

export function RealGetWindowClassA(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  ptszClassName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchClassNameMax: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.RealGetWindowClassA((hwnd), util.pstrToFfi(ptszClassName), cchClassNameMax);
}

export function RealGetWindowClassW(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  ptszClassName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchClassNameMax: number /* u32 */,
): number /* u32 */ {
  return libUSER32_dll.RealGetWindowClassW((hwnd), util.pwstrToFfi(ptszClassName), cchClassNameMax);
}

export function GetAltTabInfoA(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  iItem: number /* i32 */,
  pati: Deno.PointerValue | Uint8Array /* ptr */,
  pszItemText: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchItemText: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetAltTabInfoA((hwnd), iItem, util.toPointer(pati), util.pstrToFfi(pszItemText), cchItemText));
}

export function GetAltTabInfoW(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  iItem: number /* i32 */,
  pati: Deno.PointerValue | Uint8Array /* ptr */,
  pszItemText: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchItemText: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.GetAltTabInfoW((hwnd), iItem, util.toPointer(pati), util.pwstrToFfi(pszItemText), cchItemText));
}

export function ChangeWindowMessageFilter(
  message: number /* u32 */,
  dwFlag: CHANGE_WINDOW_MESSAGE_FILTER_FLAGS /* Windows.Win32.UI.WindowsAndMessaging.CHANGE_WINDOW_MESSAGE_FILTER_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ChangeWindowMessageFilter(message, dwFlag));
}

export function ChangeWindowMessageFilterEx(
  hwnd: Deno.PointerValue /* Windows.Win32.Foundation.HWND */,
  message: number /* u32 */,
  action: WINDOW_MESSAGE_FILTER_ACTION /* Windows.Win32.UI.WindowsAndMessaging.WINDOW_MESSAGE_FILTER_ACTION */,
  pChangeFilterStruct: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libUSER32_dll.ChangeWindowMessageFilterEx((hwnd), message, action, util.toPointer(pChangeFilterStruct)));
}

export function CreateResourceIndexer(
  projectRoot: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  extensionDllPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  ppResourceIndexer: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.CreateResourceIndexer(util.pwstrToFfi(projectRoot), util.pwstrToFfi(extensionDllPath), util.toPointer(ppResourceIndexer));
}

export function DestroyResourceIndexer(
  resourceIndexer: Deno.PointerValue | Uint8Array /* ptr */,
): void /* void */ {
  return libMrmSupport_dll.DestroyResourceIndexer(util.toPointer(resourceIndexer));
}

export function IndexFilePath(
  resourceIndexer: Deno.PointerValue | Uint8Array /* ptr */,
  filePath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  ppResourceUri: Deno.PointerValue | Uint8Array /* ptr */,
  pQualifierCount: Deno.PointerValue | Uint8Array /* ptr */,
  ppQualifiers: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.IndexFilePath(util.toPointer(resourceIndexer), util.pwstrToFfi(filePath), util.toPointer(ppResourceUri), util.toPointer(pQualifierCount), util.toPointer(ppQualifiers));
}

export function DestroyIndexedResults(
  resourceUri: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  qualifierCount: number /* u32 */,
  qualifiers: Deno.PointerValue | Uint8Array /* ptr */,
): void /* void */ {
  return libMrmSupport_dll.DestroyIndexedResults(util.pwstrToFfi(resourceUri), qualifierCount, util.toPointer(qualifiers));
}

export function MrmCreateResourceIndexer(
  packageFamilyName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  projectRoot: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  indexer: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceIndexer(util.pwstrToFfi(packageFamilyName), util.pwstrToFfi(projectRoot), platformVersion, util.pwstrToFfi(defaultQualifiers), util.toPointer(indexer));
}

export function MrmCreateResourceIndexerFromPreviousSchemaFile(
  projectRoot: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  schemaFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  indexer: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceIndexerFromPreviousSchemaFile(util.pwstrToFfi(projectRoot), platformVersion, util.pwstrToFfi(defaultQualifiers), util.pwstrToFfi(schemaFile), util.toPointer(indexer));
}

export function MrmCreateResourceIndexerFromPreviousPriFile(
  projectRoot: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  priFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  indexer: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceIndexerFromPreviousPriFile(util.pwstrToFfi(projectRoot), platformVersion, util.pwstrToFfi(defaultQualifiers), util.pwstrToFfi(priFile), util.toPointer(indexer));
}

export function MrmCreateResourceIndexerFromPreviousSchemaData(
  projectRoot: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  schemaXmlData: Deno.PointerValue | Uint8Array /* ptr */,
  schemaXmlSize: number /* u32 */,
  indexer: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceIndexerFromPreviousSchemaData(util.pwstrToFfi(projectRoot), platformVersion, util.pwstrToFfi(defaultQualifiers), util.toPointer(schemaXmlData), schemaXmlSize, util.toPointer(indexer));
}

export function MrmCreateResourceIndexerFromPreviousPriData(
  projectRoot: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  priData: Deno.PointerValue | Uint8Array /* ptr */,
  priSize: number /* u32 */,
  indexer: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceIndexerFromPreviousPriData(util.pwstrToFfi(projectRoot), platformVersion, util.pwstrToFfi(defaultQualifiers), util.toPointer(priData), priSize, util.toPointer(indexer));
}

export function MrmCreateResourceIndexerWithFlags(
  packageFamilyName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  projectRoot: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  flags: MrmIndexerFlags /* Windows.Win32.UI.WindowsAndMessaging.MrmIndexerFlags */,
  indexer: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceIndexerWithFlags(util.pwstrToFfi(packageFamilyName), util.pwstrToFfi(projectRoot), platformVersion, util.pwstrToFfi(defaultQualifiers), flags, util.toPointer(indexer));
}

export function MrmIndexString(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  resourceUri: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  resourceString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  qualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmIndexString(util.toPointer(indexer), util.pwstrToFfi(resourceUri), util.pwstrToFfi(resourceString), util.pwstrToFfi(qualifiers));
}

export function MrmIndexEmbeddedData(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  resourceUri: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  embeddedData: Deno.PointerValue | Uint8Array /* ptr */,
  embeddedDataSize: number /* u32 */,
  qualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmIndexEmbeddedData(util.toPointer(indexer), util.pwstrToFfi(resourceUri), util.toPointer(embeddedData), embeddedDataSize, util.pwstrToFfi(qualifiers));
}

export function MrmIndexFile(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  resourceUri: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  filePath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  qualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmIndexFile(util.toPointer(indexer), util.pwstrToFfi(resourceUri), util.pwstrToFfi(filePath), util.pwstrToFfi(qualifiers));
}

export function MrmIndexFileAutoQualifiers(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  filePath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmIndexFileAutoQualifiers(util.toPointer(indexer), util.pwstrToFfi(filePath));
}

export function MrmIndexResourceContainerAutoQualifiers(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  containerPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmIndexResourceContainerAutoQualifiers(util.toPointer(indexer), util.pwstrToFfi(containerPath));
}

export function MrmCreateResourceFile(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  packagingMode: MrmPackagingMode /* Windows.Win32.UI.WindowsAndMessaging.MrmPackagingMode */,
  packagingOptions: MrmPackagingOptions /* Windows.Win32.UI.WindowsAndMessaging.MrmPackagingOptions */,
  outputDirectory: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceFile(util.toPointer(indexer), packagingMode, packagingOptions, util.pwstrToFfi(outputDirectory));
}

export function MrmCreateResourceFileWithChecksum(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  packagingMode: MrmPackagingMode /* Windows.Win32.UI.WindowsAndMessaging.MrmPackagingMode */,
  packagingOptions: MrmPackagingOptions /* Windows.Win32.UI.WindowsAndMessaging.MrmPackagingOptions */,
  checksum: number /* u32 */,
  outputDirectory: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceFileWithChecksum(util.toPointer(indexer), packagingMode, packagingOptions, checksum, util.pwstrToFfi(outputDirectory));
}

export function MrmCreateResourceFileInMemory(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  packagingMode: MrmPackagingMode /* Windows.Win32.UI.WindowsAndMessaging.MrmPackagingMode */,
  packagingOptions: MrmPackagingOptions /* Windows.Win32.UI.WindowsAndMessaging.MrmPackagingOptions */,
  outputPriData: Deno.PointerValue | Uint8Array /* ptr */,
  outputPriSize: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateResourceFileInMemory(util.toPointer(indexer), packagingMode, packagingOptions, util.toPointer(outputPriData), util.toPointer(outputPriSize));
}

export function MrmPeekResourceIndexerMessages(
  handle: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
  messages: Deno.PointerValue | Uint8Array /* ptr */,
  numMsgs: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmPeekResourceIndexerMessages(util.toPointer(handle), util.toPointer(messages), util.toPointer(numMsgs));
}

export function MrmDestroyIndexerAndMessages(
  indexer: Uint8Array | Deno.PointerValue /* Windows.Win32.UI.WindowsAndMessaging.MrmResourceIndexerHandle */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmDestroyIndexerAndMessages(util.toPointer(indexer));
}

export function MrmFreeMemory(
  data: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmFreeMemory(util.toPointer(data));
}

export function MrmDumpPriFile(
  indexFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  schemaPriFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dumpType: MrmDumpType /* Windows.Win32.UI.WindowsAndMessaging.MrmDumpType */,
  outputXmlFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmDumpPriFile(util.pwstrToFfi(indexFileName), util.pwstrToFfi(schemaPriFile), dumpType, util.pwstrToFfi(outputXmlFile));
}

export function MrmDumpPriFileInMemory(
  indexFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  schemaPriFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dumpType: MrmDumpType /* Windows.Win32.UI.WindowsAndMessaging.MrmDumpType */,
  outputXmlData: Deno.PointerValue | Uint8Array /* ptr */,
  outputXmlSize: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmDumpPriFileInMemory(util.pwstrToFfi(indexFileName), util.pwstrToFfi(schemaPriFile), dumpType, util.toPointer(outputXmlData), util.toPointer(outputXmlSize));
}

export function MrmDumpPriDataInMemory(
  inputPriData: Deno.PointerValue | Uint8Array /* ptr */,
  inputPriSize: number /* u32 */,
  schemaPriData: Deno.PointerValue | Uint8Array /* ptr */,
  schemaPriSize: number /* u32 */,
  dumpType: MrmDumpType /* Windows.Win32.UI.WindowsAndMessaging.MrmDumpType */,
  outputXmlData: Deno.PointerValue | Uint8Array /* ptr */,
  outputXmlSize: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmDumpPriDataInMemory(util.toPointer(inputPriData), inputPriSize, util.toPointer(schemaPriData), schemaPriSize, dumpType, util.toPointer(outputXmlData), util.toPointer(outputXmlSize));
}

export function MrmCreateConfig(
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  outputXmlFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateConfig(platformVersion, util.pwstrToFfi(defaultQualifiers), util.pwstrToFfi(outputXmlFile));
}

export function MrmCreateConfigInMemory(
  platformVersion: MrmPlatformVersion /* Windows.Win32.UI.WindowsAndMessaging.MrmPlatformVersion */,
  defaultQualifiers: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  outputXmlData: Deno.PointerValue | Uint8Array /* ptr */,
  outputXmlSize: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmCreateConfigInMemory(platformVersion, util.pwstrToFfi(defaultQualifiers), util.toPointer(outputXmlData), util.toPointer(outputXmlSize));
}

export function MrmGetPriFileContentChecksum(
  priFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  checksum: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libMrmSupport_dll.MrmGetPriFileContentChecksum(util.pwstrToFfi(priFile), util.toPointer(checksum));
}

