//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (1728)
//--------------------------------------------------------------------------------
pub const TVI_ROOT = @import("../zig.zig").typedConst(HTREEITEM, @as(i32, -65536));
pub const TVI_FIRST = @import("../zig.zig").typedConst(HTREEITEM, @as(i32, -65535));
pub const TVI_LAST = @import("../zig.zig").typedConst(HTREEITEM, @as(i32, -65534));
pub const TVI_SORT = @import("../zig.zig").typedConst(HTREEITEM, @as(i32, -65533));
pub const BCN_FIRST = @as(u32, 4294966046);
pub const EM_SCROLLCARET = @as(u32, 183);
pub const EM_SETLIMITTEXT = @as(u32, 197);
pub const EM_GETLIMITTEXT = @as(u32, 213);
pub const EM_POSFROMCHAR = @as(u32, 214);
pub const EM_CHARFROMPOS = @as(u32, 215);
pub const FILEOPENORD = @as(u32, 1536);
pub const MULTIFILEOPENORD = @as(u32, 1537);
pub const PRINTDLGORD = @as(u32, 1538);
pub const PRNSETUPDLGORD = @as(u32, 1539);
pub const FINDDLGORD = @as(u32, 1540);
pub const REPLACEDLGORD = @as(u32, 1541);
pub const FONTDLGORD = @as(u32, 1542);
pub const FORMATDLGORD31 = @as(u32, 1543);
pub const FORMATDLGORD30 = @as(u32, 1544);
pub const RUNDLGORD = @as(u32, 1545);
pub const PAGESETUPDLGORD = @as(u32, 1546);
pub const NEWFILEOPENORD = @as(u32, 1547);
pub const PRINTDLGEXORD = @as(u32, 1549);
pub const PAGESETUPDLGORDMOTIF = @as(u32, 1550);
pub const COLORMGMTDLGORD = @as(u32, 1551);
pub const NEWFILEOPENV2ORD = @as(u32, 1552);
pub const NEWFILEOPENV3ORD = @as(u32, 1553);
pub const NEWFORMATDLGWITHLINK = @as(u32, 1591);
pub const IDC_MANAGE_LINK = @as(u32, 1592);
pub const WM_CTLCOLOR = @as(u32, 25);
pub const ILDRF_IMAGELOWQUALITY = @as(u32, 1);
pub const ILDRF_OVERLAYLOWQUALITY = @as(u32, 16);
pub const ILR_DEFAULT = @as(u32, 0);
pub const ILR_HORIZONTAL_LEFT = @as(u32, 0);
pub const ILR_HORIZONTAL_CENTER = @as(u32, 1);
pub const ILR_HORIZONTAL_RIGHT = @as(u32, 2);
pub const ILR_VERTICAL_TOP = @as(u32, 0);
pub const ILR_VERTICAL_CENTER = @as(u32, 16);
pub const ILR_VERTICAL_BOTTOM = @as(u32, 32);
pub const ILR_SCALE_CLIP = @as(u32, 0);
pub const ILR_SCALE_ASPECTRATIO = @as(u32, 256);
pub const ILGOS_ALWAYS = @as(u32, 0);
pub const ILGOS_FROMSTANDBY = @as(u32, 1);
pub const ILFIP_ALWAYS = @as(u32, 0);
pub const ILFIP_FROMSTANDBY = @as(u32, 1);
pub const ILDI_PURGE = @as(u32, 1);
pub const ILDI_STANDBY = @as(u32, 2);
pub const ILDI_RESETACCESS = @as(u32, 4);
pub const ILDI_QUERYACCESS = @as(u32, 8);
pub const MAXPROPPAGES = @as(u32, 100);
pub const PSP_DEFAULT = @as(u32, 0);
pub const PSP_DLGINDIRECT = @as(u32, 1);
pub const PSP_USEHICON = @as(u32, 2);
pub const PSP_USEICONID = @as(u32, 4);
pub const PSP_USETITLE = @as(u32, 8);
pub const PSP_RTLREADING = @as(u32, 16);
pub const PSP_HASHELP = @as(u32, 32);
pub const PSP_USEREFPARENT = @as(u32, 64);
pub const PSP_USECALLBACK = @as(u32, 128);
pub const PSP_PREMATURE = @as(u32, 1024);
pub const PSP_HIDEHEADER = @as(u32, 2048);
pub const PSP_USEHEADERTITLE = @as(u32, 4096);
pub const PSP_USEHEADERSUBTITLE = @as(u32, 8192);
pub const PSP_USEFUSIONCONTEXT = @as(u32, 16384);
pub const PSH_DEFAULT = @as(u32, 0);
pub const PSH_PROPTITLE = @as(u32, 1);
pub const PSH_USEHICON = @as(u32, 2);
pub const PSH_USEICONID = @as(u32, 4);
pub const PSH_PROPSHEETPAGE = @as(u32, 8);
pub const PSH_WIZARDHASFINISH = @as(u32, 16);
pub const PSH_WIZARD = @as(u32, 32);
pub const PSH_USEPSTARTPAGE = @as(u32, 64);
pub const PSH_NOAPPLYNOW = @as(u32, 128);
pub const PSH_USECALLBACK = @as(u32, 256);
pub const PSH_HASHELP = @as(u32, 512);
pub const PSH_MODELESS = @as(u32, 1024);
pub const PSH_RTLREADING = @as(u32, 2048);
pub const PSH_WIZARDCONTEXTHELP = @as(u32, 4096);
pub const PSH_WIZARD97 = @as(u32, 8192);
pub const PSH_WATERMARK = @as(u32, 32768);
pub const PSH_USEHBMWATERMARK = @as(u32, 65536);
pub const PSH_USEHPLWATERMARK = @as(u32, 131072);
pub const PSH_STRETCHWATERMARK = @as(u32, 262144);
pub const PSH_HEADER = @as(u32, 524288);
pub const PSH_USEHBMHEADER = @as(u32, 1048576);
pub const PSH_USEPAGELANG = @as(u32, 2097152);
pub const PSH_WIZARD_LITE = @as(u32, 4194304);
pub const PSH_NOCONTEXTHELP = @as(u32, 33554432);
pub const PSH_AEROWIZARD = @as(u32, 16384);
pub const PSH_RESIZABLE = @as(u32, 67108864);
pub const PSH_HEADERBITMAP = @as(u32, 134217728);
pub const PSH_NOMARGIN = @as(u32, 268435456);
pub const PSCB_INITIALIZED = @as(u32, 1);
pub const PSCB_PRECREATE = @as(u32, 2);
pub const PSCB_BUTTONPRESSED = @as(u32, 3);
pub const PSNRET_NOERROR = @as(u32, 0);
pub const PSNRET_INVALID = @as(u32, 1);
pub const PSNRET_INVALID_NOCHANGEPAGE = @as(u32, 2);
pub const PSNRET_MESSAGEHANDLED = @as(u32, 3);
pub const PSM_SETCURSEL = @as(u32, 1125);
pub const PSM_REMOVEPAGE = @as(u32, 1126);
pub const PSM_ADDPAGE = @as(u32, 1127);
pub const PSM_CHANGED = @as(u32, 1128);
pub const PSM_RESTARTWINDOWS = @as(u32, 1129);
pub const PSM_REBOOTSYSTEM = @as(u32, 1130);
pub const PSM_CANCELTOCLOSE = @as(u32, 1131);
pub const PSM_QUERYSIBLINGS = @as(u32, 1132);
pub const PSM_UNCHANGED = @as(u32, 1133);
pub const PSM_APPLY = @as(u32, 1134);
pub const PSM_SETTITLEA = @as(u32, 1135);
pub const PSM_SETTITLEW = @as(u32, 1144);
pub const PSM_SETTITLE = @as(u32, 1144);
pub const PSM_SETWIZBUTTONS = @as(u32, 1136);
pub const PSWIZB_BACK = @as(u32, 1);
pub const PSWIZB_NEXT = @as(u32, 2);
pub const PSWIZB_FINISH = @as(u32, 4);
pub const PSWIZB_DISABLEDFINISH = @as(u32, 8);
pub const PSWIZBF_ELEVATIONREQUIRED = @as(u32, 1);
pub const PSWIZB_CANCEL = @as(u32, 16);
pub const PSM_PRESSBUTTON = @as(u32, 1137);
pub const PSBTN_BACK = @as(u32, 0);
pub const PSBTN_NEXT = @as(u32, 1);
pub const PSBTN_FINISH = @as(u32, 2);
pub const PSBTN_OK = @as(u32, 3);
pub const PSBTN_APPLYNOW = @as(u32, 4);
pub const PSBTN_CANCEL = @as(u32, 5);
pub const PSBTN_HELP = @as(u32, 6);
pub const PSBTN_MAX = @as(u32, 6);
pub const PSM_SETCURSELID = @as(u32, 1138);
pub const PSM_SETFINISHTEXTA = @as(u32, 1139);
pub const PSM_SETFINISHTEXTW = @as(u32, 1145);
pub const PSM_SETFINISHTEXT = @as(u32, 1145);
pub const PSM_GETTABCONTROL = @as(u32, 1140);
pub const PSM_ISDIALOGMESSAGE = @as(u32, 1141);
pub const PSM_GETCURRENTPAGEHWND = @as(u32, 1142);
pub const PSM_INSERTPAGE = @as(u32, 1143);
pub const PSM_SETHEADERTITLEA = @as(u32, 1149);
pub const PSM_SETHEADERTITLEW = @as(u32, 1150);
pub const PSM_SETHEADERTITLE = @as(u32, 1150);
pub const PSM_SETHEADERSUBTITLEA = @as(u32, 1151);
pub const PSM_SETHEADERSUBTITLEW = @as(u32, 1152);
pub const PSM_SETHEADERSUBTITLE = @as(u32, 1152);
pub const PSM_HWNDTOINDEX = @as(u32, 1153);
pub const PSM_INDEXTOHWND = @as(u32, 1154);
pub const PSM_PAGETOINDEX = @as(u32, 1155);
pub const PSM_INDEXTOPAGE = @as(u32, 1156);
pub const PSM_IDTOINDEX = @as(u32, 1157);
pub const PSM_INDEXTOID = @as(u32, 1158);
pub const PSM_GETRESULT = @as(u32, 1159);
pub const PSM_RECALCPAGESIZES = @as(u32, 1160);
pub const PSM_SETNEXTTEXTW = @as(u32, 1161);
pub const PSM_SETNEXTTEXT = @as(u32, 1161);
pub const PSWIZB_SHOW = @as(u32, 0);
pub const PSWIZB_RESTORE = @as(u32, 1);
pub const PSM_SHOWWIZBUTTONS = @as(u32, 1162);
pub const PSM_ENABLEWIZBUTTONS = @as(u32, 1163);
pub const PSM_SETBUTTONTEXTW = @as(u32, 1164);
pub const PSM_SETBUTTONTEXT = @as(u32, 1164);
pub const ID_PSRESTARTWINDOWS = @as(u32, 2);
pub const WIZ_CXDLG = @as(u32, 276);
pub const WIZ_CYDLG = @as(u32, 140);
pub const WIZ_CXBMP = @as(u32, 80);
pub const WIZ_BODYX = @as(u32, 92);
pub const WIZ_BODYCX = @as(u32, 184);
pub const PROP_SM_CXDLG = @as(u32, 212);
pub const PROP_SM_CYDLG = @as(u32, 188);
pub const PROP_MED_CXDLG = @as(u32, 227);
pub const PROP_MED_CYDLG = @as(u32, 215);
pub const PROP_LG_CXDLG = @as(u32, 252);
pub const PROP_LG_CYDLG = @as(u32, 218);
pub const DA_LAST = @as(u32, 2147483647);
pub const DA_ERR = @as(i32, -1);
pub const DSA_APPEND = @as(u32, 2147483647);
pub const DSA_ERR = @as(i32, -1);
pub const DPAM_SORTED = @as(u32, 1);
pub const DPAM_NORMAL = @as(u32, 2);
pub const DPAM_UNION = @as(u32, 4);
pub const DPAM_INTERSECT = @as(u32, 8);
pub const DPAS_SORTED = @as(u32, 1);
pub const DPAS_INSERTBEFORE = @as(u32, 2);
pub const DPAS_INSERTAFTER = @as(u32, 4);
pub const DPA_APPEND = @as(u32, 2147483647);
pub const DPA_ERR = @as(i32, -1);
pub const MAX_THEMECOLOR = @as(u32, 64);
pub const MAX_THEMESIZE = @as(u32, 64);
pub const DTBG_CLIPRECT = @as(u32, 1);
pub const DTBG_DRAWSOLID = @as(u32, 2);
pub const DTBG_OMITBORDER = @as(u32, 4);
pub const DTBG_OMITCONTENT = @as(u32, 8);
pub const DTBG_COMPUTINGREGION = @as(u32, 16);
pub const DTBG_MIRRORDC = @as(u32, 32);
pub const DTBG_NOMIRROR = @as(u32, 64);
pub const DTT_GRAYED = @as(u32, 1);
pub const DTT_FLAGS2VALIDBITS = @as(u32, 1);
pub const HTTB_BACKGROUNDSEG = @as(u32, 0);
pub const HTTB_FIXEDBORDER = @as(u32, 2);
pub const HTTB_CAPTION = @as(u32, 4);
pub const HTTB_RESIZINGBORDER_LEFT = @as(u32, 16);
pub const HTTB_RESIZINGBORDER_TOP = @as(u32, 32);
pub const HTTB_RESIZINGBORDER_RIGHT = @as(u32, 64);
pub const HTTB_RESIZINGBORDER_BOTTOM = @as(u32, 128);
pub const HTTB_SIZINGTEMPLATE = @as(u32, 256);
pub const HTTB_SYSTEMSIZINGMARGINS = @as(u32, 512);
pub const MAX_INTLIST_COUNT = @as(u32, 402);
pub const ETDT_DISABLE = @as(u32, 1);
pub const ETDT_ENABLE = @as(u32, 2);
pub const ETDT_USETABTEXTURE = @as(u32, 4);
pub const ETDT_USEAEROWIZARDTABTEXTURE = @as(u32, 8);
pub const WTNCA_NODRAWCAPTION = @as(u32, 1);
pub const WTNCA_NODRAWICON = @as(u32, 2);
pub const WTNCA_NOSYSMENU = @as(u32, 4);
pub const WTNCA_NOMIRRORHELP = @as(u32, 8);
pub const ODT_HEADER = @as(u32, 100);
pub const LVM_FIRST = @as(u32, 4096);
pub const TV_FIRST = @as(u32, 4352);
pub const HDM_FIRST = @as(u32, 4608);
pub const TCM_FIRST = @as(u32, 4864);
pub const PGM_FIRST = @as(u32, 5120);
pub const ECM_FIRST = @as(u32, 5376);
pub const BCM_FIRST = @as(u32, 5632);
pub const CBM_FIRST = @as(u32, 5888);
pub const CCM_FIRST = @as(u32, 8192);
pub const CCM_LAST = @as(u32, 8704);
pub const CCM_SETBKCOLOR = @as(u32, 8193);
pub const CCM_SETCOLORSCHEME = @as(u32, 8194);
pub const CCM_GETCOLORSCHEME = @as(u32, 8195);
pub const CCM_GETDROPTARGET = @as(u32, 8196);
pub const CCM_SETUNICODEFORMAT = @as(u32, 8197);
pub const CCM_GETUNICODEFORMAT = @as(u32, 8198);
pub const COMCTL32_VERSION = @as(u32, 6);
pub const CCM_SETVERSION = @as(u32, 8199);
pub const CCM_GETVERSION = @as(u32, 8200);
pub const CCM_SETNOTIFYWINDOW = @as(u32, 8201);
pub const CCM_SETWINDOWTHEME = @as(u32, 8203);
pub const CCM_DPISCALE = @as(u32, 8204);
pub const INFOTIPSIZE = @as(u32, 1024);
pub const MSGF_COMMCTRL_BEGINDRAG = @as(u32, 16896);
pub const MSGF_COMMCTRL_SIZEHEADER = @as(u32, 16897);
pub const MSGF_COMMCTRL_DRAGSELECT = @as(u32, 16898);
pub const MSGF_COMMCTRL_TOOLBARCUST = @as(u32, 16899);
pub const CDRF_DODEFAULT = @as(u32, 0);
pub const CDRF_NEWFONT = @as(u32, 2);
pub const CDRF_SKIPDEFAULT = @as(u32, 4);
pub const CDRF_DOERASE = @as(u32, 8);
pub const CDRF_SKIPPOSTPAINT = @as(u32, 256);
pub const CDRF_NOTIFYPOSTPAINT = @as(u32, 16);
pub const CDRF_NOTIFYITEMDRAW = @as(u32, 32);
pub const CDRF_NOTIFYSUBITEMDRAW = @as(u32, 32);
pub const CDRF_NOTIFYPOSTERASE = @as(u32, 64);
pub const CDDS_POSTERASE = @as(u32, 4);
pub const CDDS_ITEM = @as(u32, 65536);
pub const CDIS_SELECTED = @as(u32, 1);
pub const CDIS_GRAYED = @as(u32, 2);
pub const CDIS_DISABLED = @as(u32, 4);
pub const CDIS_CHECKED = @as(u32, 8);
pub const CDIS_FOCUS = @as(u32, 16);
pub const CDIS_DEFAULT = @as(u32, 32);
pub const CDIS_HOT = @as(u32, 64);
pub const CDIS_MARKED = @as(u32, 128);
pub const CDIS_INDETERMINATE = @as(u32, 256);
pub const CDIS_SHOWKEYBOARDCUES = @as(u32, 512);
pub const CDIS_NEARHOT = @as(u32, 1024);
pub const CDIS_OTHERSIDEHOT = @as(u32, 2048);
pub const CDIS_DROPHILITED = @as(u32, 4096);
pub const NM_GETCUSTOMSPLITRECT = @as(u32, 4294966049);
pub const CLR_NONE = @as(i32, -1);
pub const CLR_DEFAULT = @as(i32, -16777216);
pub const ILD_TRANSPARENT = @as(u32, 1);
pub const ILD_IMAGE = @as(u32, 32);
pub const ILD_ROP = @as(u32, 64);
pub const ILD_BLEND25 = @as(u32, 2);
pub const ILD_OVERLAYMASK = @as(u32, 3840);
pub const ILD_PRESERVEALPHA = @as(u32, 4096);
pub const ILD_SCALE = @as(u32, 8192);
pub const ILD_DPISCALE = @as(u32, 16384);
pub const ILD_ASYNC = @as(u32, 32768);
pub const CLR_HILIGHT = @as(i32, -16777216);
pub const ILS_NORMAL = @as(u32, 0);
pub const ILS_GLOW = @as(u32, 1);
pub const ILS_SHADOW = @as(u32, 2);
pub const ILS_SATURATE = @as(u32, 4);
pub const ILS_ALPHA = @as(u32, 8);
pub const ILGT_NORMAL = @as(u32, 0);
pub const ILGT_ASYNC = @as(u32, 1);
pub const ILP_NORMAL = @as(u32, 0);
pub const ILP_DOWNLEVEL = @as(u32, 1);
pub const HDS_HORZ = @as(u32, 0);
pub const HDS_BUTTONS = @as(u32, 2);
pub const HDS_HOTTRACK = @as(u32, 4);
pub const HDS_HIDDEN = @as(u32, 8);
pub const HDS_DRAGDROP = @as(u32, 64);
pub const HDS_FULLDRAG = @as(u32, 128);
pub const HDS_FILTERBAR = @as(u32, 256);
pub const HDS_FLAT = @as(u32, 512);
pub const HDS_CHECKBOXES = @as(u32, 1024);
pub const HDS_NOSIZING = @as(u32, 2048);
pub const HDS_OVERFLOW = @as(u32, 4096);
pub const HDFT_ISSTRING = @as(u32, 0);
pub const HDFT_ISNUMBER = @as(u32, 1);
pub const HDFT_ISDATE = @as(u32, 2);
pub const HDFT_HASNOVALUE = @as(u32, 32768);
pub const HDF_LEFT = @as(u32, 0);
pub const HDF_RIGHT = @as(u32, 1);
pub const HDF_CENTER = @as(u32, 2);
pub const HDF_JUSTIFYMASK = @as(u32, 3);
pub const HDF_RTLREADING = @as(u32, 4);
pub const HDF_BITMAP = @as(u32, 8192);
pub const HDF_STRING = @as(u32, 16384);
pub const HDF_OWNERDRAW = @as(u32, 32768);
pub const HDF_IMAGE = @as(u32, 2048);
pub const HDF_BITMAP_ON_RIGHT = @as(u32, 4096);
pub const HDF_SORTUP = @as(u32, 1024);
pub const HDF_SORTDOWN = @as(u32, 512);
pub const HDF_CHECKBOX = @as(u32, 64);
pub const HDF_CHECKED = @as(u32, 128);
pub const HDF_FIXEDWIDTH = @as(u32, 256);
pub const HDF_SPLITBUTTON = @as(u32, 16777216);
pub const HDIS_FOCUSED = @as(u32, 1);
pub const HDM_GETITEMCOUNT = @as(u32, 4608);
pub const HDM_INSERTITEMA = @as(u32, 4609);
pub const HDM_INSERTITEMW = @as(u32, 4618);
pub const HDM_INSERTITEM = @as(u32, 4618);
pub const HDM_DELETEITEM = @as(u32, 4610);
pub const HDM_GETITEMA = @as(u32, 4611);
pub const HDM_GETITEMW = @as(u32, 4619);
pub const HDM_GETITEM = @as(u32, 4619);
pub const HDM_SETITEMA = @as(u32, 4612);
pub const HDM_SETITEMW = @as(u32, 4620);
pub const HDM_SETITEM = @as(u32, 4620);
pub const HDM_LAYOUT = @as(u32, 4613);
pub const HHT_NOWHERE = @as(u32, 1);
pub const HHT_ONHEADER = @as(u32, 2);
pub const HHT_ONDIVIDER = @as(u32, 4);
pub const HHT_ONDIVOPEN = @as(u32, 8);
pub const HHT_ONFILTER = @as(u32, 16);
pub const HHT_ONFILTERBUTTON = @as(u32, 32);
pub const HHT_ABOVE = @as(u32, 256);
pub const HHT_BELOW = @as(u32, 512);
pub const HHT_TORIGHT = @as(u32, 1024);
pub const HHT_TOLEFT = @as(u32, 2048);
pub const HHT_ONITEMSTATEICON = @as(u32, 4096);
pub const HHT_ONDROPDOWN = @as(u32, 8192);
pub const HHT_ONOVERFLOW = @as(u32, 16384);
pub const HDSIL_NORMAL = @as(u32, 0);
pub const HDSIL_STATE = @as(u32, 1);
pub const HDM_HITTEST = @as(u32, 4614);
pub const HDM_GETITEMRECT = @as(u32, 4615);
pub const HDM_SETIMAGELIST = @as(u32, 4616);
pub const HDM_GETIMAGELIST = @as(u32, 4617);
pub const HDM_ORDERTOINDEX = @as(u32, 4623);
pub const HDM_CREATEDRAGIMAGE = @as(u32, 4624);
pub const HDM_GETORDERARRAY = @as(u32, 4625);
pub const HDM_SETORDERARRAY = @as(u32, 4626);
pub const HDM_SETHOTDIVIDER = @as(u32, 4627);
pub const HDM_SETBITMAPMARGIN = @as(u32, 4628);
pub const HDM_GETBITMAPMARGIN = @as(u32, 4629);
pub const HDM_SETUNICODEFORMAT = @as(u32, 8197);
pub const HDM_GETUNICODEFORMAT = @as(u32, 8198);
pub const HDM_SETFILTERCHANGETIMEOUT = @as(u32, 4630);
pub const HDM_EDITFILTER = @as(u32, 4631);
pub const HDM_CLEARFILTER = @as(u32, 4632);
pub const HDM_GETITEMDROPDOWNRECT = @as(u32, 4633);
pub const HDM_GETOVERFLOWRECT = @as(u32, 4634);
pub const HDM_GETFOCUSEDITEM = @as(u32, 4635);
pub const HDM_SETFOCUSEDITEM = @as(u32, 4636);
pub const CMB_MASKED = @as(u32, 2);
pub const TBSTATE_CHECKED = @as(u32, 1);
pub const TBSTATE_PRESSED = @as(u32, 2);
pub const TBSTATE_ENABLED = @as(u32, 4);
pub const TBSTATE_HIDDEN = @as(u32, 8);
pub const TBSTATE_INDETERMINATE = @as(u32, 16);
pub const TBSTATE_WRAP = @as(u32, 32);
pub const TBSTATE_ELLIPSES = @as(u32, 64);
pub const TBSTATE_MARKED = @as(u32, 128);
pub const TBSTYLE_BUTTON = @as(u32, 0);
pub const TBSTYLE_SEP = @as(u32, 1);
pub const TBSTYLE_CHECK = @as(u32, 2);
pub const TBSTYLE_GROUP = @as(u32, 4);
pub const TBSTYLE_DROPDOWN = @as(u32, 8);
pub const TBSTYLE_AUTOSIZE = @as(u32, 16);
pub const TBSTYLE_NOPREFIX = @as(u32, 32);
pub const TBSTYLE_TOOLTIPS = @as(u32, 256);
pub const TBSTYLE_WRAPABLE = @as(u32, 512);
pub const TBSTYLE_ALTDRAG = @as(u32, 1024);
pub const TBSTYLE_FLAT = @as(u32, 2048);
pub const TBSTYLE_LIST = @as(u32, 4096);
pub const TBSTYLE_CUSTOMERASE = @as(u32, 8192);
pub const TBSTYLE_REGISTERDROP = @as(u32, 16384);
pub const TBSTYLE_TRANSPARENT = @as(u32, 32768);
pub const TBSTYLE_EX_DRAWDDARROWS = @as(u32, 1);
pub const BTNS_BUTTON = @as(u32, 0);
pub const BTNS_SEP = @as(u32, 1);
pub const BTNS_CHECK = @as(u32, 2);
pub const BTNS_GROUP = @as(u32, 4);
pub const BTNS_DROPDOWN = @as(u32, 8);
pub const BTNS_AUTOSIZE = @as(u32, 16);
pub const BTNS_NOPREFIX = @as(u32, 32);
pub const BTNS_SHOWTEXT = @as(u32, 64);
pub const BTNS_WHOLEDROPDOWN = @as(u32, 128);
pub const TBSTYLE_EX_MIXEDBUTTONS = @as(u32, 8);
pub const TBSTYLE_EX_HIDECLIPPEDBUTTONS = @as(u32, 16);
pub const TBSTYLE_EX_MULTICOLUMN = @as(u32, 2);
pub const TBSTYLE_EX_VERTICAL = @as(u32, 4);
pub const TBSTYLE_EX_DOUBLEBUFFER = @as(u32, 128);
pub const TBCDRF_NOEDGES = @as(u32, 65536);
pub const TBCDRF_HILITEHOTTRACK = @as(u32, 131072);
pub const TBCDRF_NOOFFSET = @as(u32, 262144);
pub const TBCDRF_NOMARK = @as(u32, 524288);
pub const TBCDRF_NOETCHEDEFFECT = @as(u32, 1048576);
pub const TBCDRF_BLENDICON = @as(u32, 2097152);
pub const TBCDRF_NOBACKGROUND = @as(u32, 4194304);
pub const TBCDRF_USECDCOLORS = @as(u32, 8388608);
pub const TB_ENABLEBUTTON = @as(u32, 1025);
pub const TB_CHECKBUTTON = @as(u32, 1026);
pub const TB_PRESSBUTTON = @as(u32, 1027);
pub const TB_HIDEBUTTON = @as(u32, 1028);
pub const TB_INDETERMINATE = @as(u32, 1029);
pub const TB_MARKBUTTON = @as(u32, 1030);
pub const TB_ISBUTTONENABLED = @as(u32, 1033);
pub const TB_ISBUTTONCHECKED = @as(u32, 1034);
pub const TB_ISBUTTONPRESSED = @as(u32, 1035);
pub const TB_ISBUTTONHIDDEN = @as(u32, 1036);
pub const TB_ISBUTTONINDETERMINATE = @as(u32, 1037);
pub const TB_ISBUTTONHIGHLIGHTED = @as(u32, 1038);
pub const TB_SETSTATE = @as(u32, 1041);
pub const TB_GETSTATE = @as(u32, 1042);
pub const TB_ADDBITMAP = @as(u32, 1043);
pub const IDB_STD_SMALL_COLOR = @as(u32, 0);
pub const IDB_STD_LARGE_COLOR = @as(u32, 1);
pub const IDB_VIEW_SMALL_COLOR = @as(u32, 4);
pub const IDB_VIEW_LARGE_COLOR = @as(u32, 5);
pub const IDB_HIST_SMALL_COLOR = @as(u32, 8);
pub const IDB_HIST_LARGE_COLOR = @as(u32, 9);
pub const IDB_HIST_NORMAL = @as(u32, 12);
pub const IDB_HIST_HOT = @as(u32, 13);
pub const IDB_HIST_DISABLED = @as(u32, 14);
pub const IDB_HIST_PRESSED = @as(u32, 15);
pub const STD_CUT = @as(u32, 0);
pub const STD_COPY = @as(u32, 1);
pub const STD_PASTE = @as(u32, 2);
pub const STD_UNDO = @as(u32, 3);
pub const STD_REDOW = @as(u32, 4);
pub const STD_DELETE = @as(u32, 5);
pub const STD_FILENEW = @as(u32, 6);
pub const STD_FILEOPEN = @as(u32, 7);
pub const STD_FILESAVE = @as(u32, 8);
pub const STD_PRINTPRE = @as(u32, 9);
pub const STD_PROPERTIES = @as(u32, 10);
pub const STD_HELP = @as(u32, 11);
pub const STD_FIND = @as(u32, 12);
pub const STD_REPLACE = @as(u32, 13);
pub const STD_PRINT = @as(u32, 14);
pub const VIEW_LARGEICONS = @as(u32, 0);
pub const VIEW_SMALLICONS = @as(u32, 1);
pub const VIEW_LIST = @as(u32, 2);
pub const VIEW_DETAILS = @as(u32, 3);
pub const VIEW_SORTNAME = @as(u32, 4);
pub const VIEW_SORTSIZE = @as(u32, 5);
pub const VIEW_SORTDATE = @as(u32, 6);
pub const VIEW_SORTTYPE = @as(u32, 7);
pub const VIEW_PARENTFOLDER = @as(u32, 8);
pub const VIEW_NETCONNECT = @as(u32, 9);
pub const VIEW_NETDISCONNECT = @as(u32, 10);
pub const VIEW_NEWFOLDER = @as(u32, 11);
pub const VIEW_VIEWMENU = @as(u32, 12);
pub const HIST_BACK = @as(u32, 0);
pub const HIST_FORWARD = @as(u32, 1);
pub const HIST_FAVORITES = @as(u32, 2);
pub const HIST_ADDTOFAVORITES = @as(u32, 3);
pub const HIST_VIEWTREE = @as(u32, 4);
pub const TB_ADDBUTTONSA = @as(u32, 1044);
pub const TB_INSERTBUTTONA = @as(u32, 1045);
pub const TB_DELETEBUTTON = @as(u32, 1046);
pub const TB_GETBUTTON = @as(u32, 1047);
pub const TB_BUTTONCOUNT = @as(u32, 1048);
pub const TB_COMMANDTOINDEX = @as(u32, 1049);
pub const TB_SAVERESTOREA = @as(u32, 1050);
pub const TB_SAVERESTOREW = @as(u32, 1100);
pub const TB_CUSTOMIZE = @as(u32, 1051);
pub const TB_ADDSTRINGA = @as(u32, 1052);
pub const TB_ADDSTRINGW = @as(u32, 1101);
pub const TB_GETITEMRECT = @as(u32, 1053);
pub const TB_BUTTONSTRUCTSIZE = @as(u32, 1054);
pub const TB_SETBUTTONSIZE = @as(u32, 1055);
pub const TB_SETBITMAPSIZE = @as(u32, 1056);
pub const TB_AUTOSIZE = @as(u32, 1057);
pub const TB_GETTOOLTIPS = @as(u32, 1059);
pub const TB_SETTOOLTIPS = @as(u32, 1060);
pub const TB_SETPARENT = @as(u32, 1061);
pub const TB_SETROWS = @as(u32, 1063);
pub const TB_GETROWS = @as(u32, 1064);
pub const TB_SETCMDID = @as(u32, 1066);
pub const TB_CHANGEBITMAP = @as(u32, 1067);
pub const TB_GETBITMAP = @as(u32, 1068);
pub const TB_GETBUTTONTEXTA = @as(u32, 1069);
pub const TB_GETBUTTONTEXTW = @as(u32, 1099);
pub const TB_REPLACEBITMAP = @as(u32, 1070);
pub const TB_SETINDENT = @as(u32, 1071);
pub const TB_SETIMAGELIST = @as(u32, 1072);
pub const TB_GETIMAGELIST = @as(u32, 1073);
pub const TB_LOADIMAGES = @as(u32, 1074);
pub const TB_GETRECT = @as(u32, 1075);
pub const TB_SETHOTIMAGELIST = @as(u32, 1076);
pub const TB_GETHOTIMAGELIST = @as(u32, 1077);
pub const TB_SETDISABLEDIMAGELIST = @as(u32, 1078);
pub const TB_GETDISABLEDIMAGELIST = @as(u32, 1079);
pub const TB_SETSTYLE = @as(u32, 1080);
pub const TB_GETSTYLE = @as(u32, 1081);
pub const TB_GETBUTTONSIZE = @as(u32, 1082);
pub const TB_SETBUTTONWIDTH = @as(u32, 1083);
pub const TB_SETMAXTEXTROWS = @as(u32, 1084);
pub const TB_GETTEXTROWS = @as(u32, 1085);
pub const TB_GETBUTTONTEXT = @as(u32, 1099);
pub const TB_SAVERESTORE = @as(u32, 1100);
pub const TB_ADDSTRING = @as(u32, 1101);
pub const TB_GETOBJECT = @as(u32, 1086);
pub const TB_GETHOTITEM = @as(u32, 1095);
pub const TB_SETHOTITEM = @as(u32, 1096);
pub const TB_SETANCHORHIGHLIGHT = @as(u32, 1097);
pub const TB_GETANCHORHIGHLIGHT = @as(u32, 1098);
pub const TB_MAPACCELERATORA = @as(u32, 1102);
pub const TB_GETINSERTMARK = @as(u32, 1103);
pub const TB_SETINSERTMARK = @as(u32, 1104);
pub const TB_INSERTMARKHITTEST = @as(u32, 1105);
pub const TB_MOVEBUTTON = @as(u32, 1106);
pub const TB_GETMAXSIZE = @as(u32, 1107);
pub const TB_SETEXTENDEDSTYLE = @as(u32, 1108);
pub const TB_GETEXTENDEDSTYLE = @as(u32, 1109);
pub const TB_GETPADDING = @as(u32, 1110);
pub const TB_SETPADDING = @as(u32, 1111);
pub const TB_SETINSERTMARKCOLOR = @as(u32, 1112);
pub const TB_GETINSERTMARKCOLOR = @as(u32, 1113);
pub const TB_SETCOLORSCHEME = @as(u32, 8194);
pub const TB_GETCOLORSCHEME = @as(u32, 8195);
pub const TB_SETUNICODEFORMAT = @as(u32, 8197);
pub const TB_GETUNICODEFORMAT = @as(u32, 8198);
pub const TB_MAPACCELERATORW = @as(u32, 1114);
pub const TB_MAPACCELERATOR = @as(u32, 1114);
pub const TBBF_LARGE = @as(u32, 1);
pub const TB_GETBITMAPFLAGS = @as(u32, 1065);
pub const TB_GETBUTTONINFOW = @as(u32, 1087);
pub const TB_SETBUTTONINFOW = @as(u32, 1088);
pub const TB_GETBUTTONINFOA = @as(u32, 1089);
pub const TB_SETBUTTONINFOA = @as(u32, 1090);
pub const TB_GETBUTTONINFO = @as(u32, 1087);
pub const TB_SETBUTTONINFO = @as(u32, 1088);
pub const TB_INSERTBUTTONW = @as(u32, 1091);
pub const TB_ADDBUTTONSW = @as(u32, 1092);
pub const TB_HITTEST = @as(u32, 1093);
pub const TB_INSERTBUTTON = @as(u32, 1091);
pub const TB_ADDBUTTONS = @as(u32, 1092);
pub const TB_SETDRAWTEXTFLAGS = @as(u32, 1094);
pub const TB_GETSTRINGW = @as(u32, 1115);
pub const TB_GETSTRINGA = @as(u32, 1116);
pub const TB_GETSTRING = @as(u32, 1115);
pub const TB_SETBOUNDINGSIZE = @as(u32, 1117);
pub const TB_SETHOTITEM2 = @as(u32, 1118);
pub const TB_HASACCELERATOR = @as(u32, 1119);
pub const TB_SETLISTGAP = @as(u32, 1120);
pub const TB_GETIMAGELISTCOUNT = @as(u32, 1122);
pub const TB_GETIDEALSIZE = @as(u32, 1123);
pub const TBMF_PAD = @as(u32, 1);
pub const TBMF_BARPAD = @as(u32, 2);
pub const TBMF_BUTTONSPACING = @as(u32, 4);
pub const TB_GETMETRICS = @as(u32, 1125);
pub const TB_SETMETRICS = @as(u32, 1126);
pub const TB_GETITEMDROPDOWNRECT = @as(u32, 1127);
pub const TB_SETPRESSEDIMAGELIST = @as(u32, 1128);
pub const TB_GETPRESSEDIMAGELIST = @as(u32, 1129);
pub const TB_SETWINDOWTHEME = @as(u32, 8203);
pub const TBNRF_HIDEHELP = @as(u32, 1);
pub const TBNRF_ENDCUSTOMIZE = @as(u32, 2);
pub const TBDDRET_DEFAULT = @as(u32, 0);
pub const TBDDRET_NODEFAULT = @as(u32, 1);
pub const TBDDRET_TREATPRESSED = @as(u32, 2);
pub const RBIM_IMAGELIST = @as(u32, 1);
pub const RBS_TOOLTIPS = @as(u32, 256);
pub const RBS_VARHEIGHT = @as(u32, 512);
pub const RBS_BANDBORDERS = @as(u32, 1024);
pub const RBS_FIXEDORDER = @as(u32, 2048);
pub const RBS_REGISTERDROP = @as(u32, 4096);
pub const RBS_AUTOSIZE = @as(u32, 8192);
pub const RBS_VERTICALGRIPPER = @as(u32, 16384);
pub const RBS_DBLCLKTOGGLE = @as(u32, 32768);
pub const RBBS_BREAK = @as(u32, 1);
pub const RBBS_FIXEDSIZE = @as(u32, 2);
pub const RBBS_CHILDEDGE = @as(u32, 4);
pub const RBBS_HIDDEN = @as(u32, 8);
pub const RBBS_NOVERT = @as(u32, 16);
pub const RBBS_FIXEDBMP = @as(u32, 32);
pub const RBBS_VARIABLEHEIGHT = @as(u32, 64);
pub const RBBS_GRIPPERALWAYS = @as(u32, 128);
pub const RBBS_NOGRIPPER = @as(u32, 256);
pub const RBBS_USECHEVRON = @as(u32, 512);
pub const RBBS_HIDETITLE = @as(u32, 1024);
pub const RBBS_TOPALIGN = @as(u32, 2048);
pub const RBBIM_STYLE = @as(u32, 1);
pub const RBBIM_COLORS = @as(u32, 2);
pub const RBBIM_TEXT = @as(u32, 4);
pub const RBBIM_IMAGE = @as(u32, 8);
pub const RBBIM_CHILD = @as(u32, 16);
pub const RBBIM_CHILDSIZE = @as(u32, 32);
pub const RBBIM_SIZE = @as(u32, 64);
pub const RBBIM_BACKGROUND = @as(u32, 128);
pub const RBBIM_ID = @as(u32, 256);
pub const RBBIM_IDEALSIZE = @as(u32, 512);
pub const RBBIM_LPARAM = @as(u32, 1024);
pub const RBBIM_HEADERSIZE = @as(u32, 2048);
pub const RBBIM_CHEVRONLOCATION = @as(u32, 4096);
pub const RBBIM_CHEVRONSTATE = @as(u32, 8192);
pub const RB_INSERTBANDA = @as(u32, 1025);
pub const RB_DELETEBAND = @as(u32, 1026);
pub const RB_GETBARINFO = @as(u32, 1027);
pub const RB_SETBARINFO = @as(u32, 1028);
pub const RB_SETBANDINFOA = @as(u32, 1030);
pub const RB_SETPARENT = @as(u32, 1031);
pub const RB_HITTEST = @as(u32, 1032);
pub const RB_GETRECT = @as(u32, 1033);
pub const RB_INSERTBANDW = @as(u32, 1034);
pub const RB_SETBANDINFOW = @as(u32, 1035);
pub const RB_GETBANDCOUNT = @as(u32, 1036);
pub const RB_GETROWCOUNT = @as(u32, 1037);
pub const RB_GETROWHEIGHT = @as(u32, 1038);
pub const RB_IDTOINDEX = @as(u32, 1040);
pub const RB_GETTOOLTIPS = @as(u32, 1041);
pub const RB_SETTOOLTIPS = @as(u32, 1042);
pub const RB_SETBKCOLOR = @as(u32, 1043);
pub const RB_GETBKCOLOR = @as(u32, 1044);
pub const RB_SETTEXTCOLOR = @as(u32, 1045);
pub const RB_GETTEXTCOLOR = @as(u32, 1046);
pub const RBSTR_CHANGERECT = @as(u32, 1);
pub const RB_SIZETORECT = @as(u32, 1047);
pub const RB_SETCOLORSCHEME = @as(u32, 8194);
pub const RB_GETCOLORSCHEME = @as(u32, 8195);
pub const RB_INSERTBAND = @as(u32, 1034);
pub const RB_SETBANDINFO = @as(u32, 1035);
pub const RB_BEGINDRAG = @as(u32, 1048);
pub const RB_ENDDRAG = @as(u32, 1049);
pub const RB_DRAGMOVE = @as(u32, 1050);
pub const RB_GETBARHEIGHT = @as(u32, 1051);
pub const RB_GETBANDINFOW = @as(u32, 1052);
pub const RB_GETBANDINFOA = @as(u32, 1053);
pub const RB_GETBANDINFO = @as(u32, 1052);
pub const RB_MINIMIZEBAND = @as(u32, 1054);
pub const RB_MAXIMIZEBAND = @as(u32, 1055);
pub const RB_GETDROPTARGET = @as(u32, 8196);
pub const RB_GETBANDBORDERS = @as(u32, 1058);
pub const RB_SHOWBAND = @as(u32, 1059);
pub const RB_SETPALETTE = @as(u32, 1061);
pub const RB_GETPALETTE = @as(u32, 1062);
pub const RB_MOVEBAND = @as(u32, 1063);
pub const RB_SETUNICODEFORMAT = @as(u32, 8197);
pub const RB_GETUNICODEFORMAT = @as(u32, 8198);
pub const RB_GETBANDMARGINS = @as(u32, 1064);
pub const RB_SETWINDOWTHEME = @as(u32, 8203);
pub const RB_SETEXTENDEDSTYLE = @as(u32, 1065);
pub const RB_GETEXTENDEDSTYLE = @as(u32, 1066);
pub const RB_PUSHCHEVRON = @as(u32, 1067);
pub const RB_SETBANDWIDTH = @as(u32, 1068);
pub const RBAB_AUTOSIZE = @as(u32, 1);
pub const RBAB_ADDBAND = @as(u32, 2);
pub const RBHT_NOWHERE = @as(u32, 1);
pub const RBHT_CAPTION = @as(u32, 2);
pub const RBHT_CLIENT = @as(u32, 3);
pub const RBHT_GRABBER = @as(u32, 4);
pub const RBHT_CHEVRON = @as(u32, 8);
pub const RBHT_SPLITTER = @as(u32, 16);
pub const TTS_ALWAYSTIP = @as(u32, 1);
pub const TTS_NOPREFIX = @as(u32, 2);
pub const TTS_NOANIMATE = @as(u32, 16);
pub const TTS_NOFADE = @as(u32, 32);
pub const TTS_BALLOON = @as(u32, 64);
pub const TTS_CLOSE = @as(u32, 128);
pub const TTS_USEVISUALSTYLE = @as(u32, 256);
pub const TTF_DI_SETITEM = @as(u32, 32768);
pub const TTDT_AUTOMATIC = @as(u32, 0);
pub const TTDT_RESHOW = @as(u32, 1);
pub const TTDT_AUTOPOP = @as(u32, 2);
pub const TTDT_INITIAL = @as(u32, 3);
pub const TTM_ACTIVATE = @as(u32, 1025);
pub const TTM_SETDELAYTIME = @as(u32, 1027);
pub const TTM_ADDTOOLA = @as(u32, 1028);
pub const TTM_ADDTOOLW = @as(u32, 1074);
pub const TTM_DELTOOLA = @as(u32, 1029);
pub const TTM_DELTOOLW = @as(u32, 1075);
pub const TTM_NEWTOOLRECTA = @as(u32, 1030);
pub const TTM_NEWTOOLRECTW = @as(u32, 1076);
pub const TTM_RELAYEVENT = @as(u32, 1031);
pub const TTM_GETTOOLINFOA = @as(u32, 1032);
pub const TTM_GETTOOLINFOW = @as(u32, 1077);
pub const TTM_SETTOOLINFOA = @as(u32, 1033);
pub const TTM_SETTOOLINFOW = @as(u32, 1078);
pub const TTM_HITTESTA = @as(u32, 1034);
pub const TTM_HITTESTW = @as(u32, 1079);
pub const TTM_GETTEXTA = @as(u32, 1035);
pub const TTM_GETTEXTW = @as(u32, 1080);
pub const TTM_UPDATETIPTEXTA = @as(u32, 1036);
pub const TTM_UPDATETIPTEXTW = @as(u32, 1081);
pub const TTM_GETTOOLCOUNT = @as(u32, 1037);
pub const TTM_ENUMTOOLSA = @as(u32, 1038);
pub const TTM_ENUMTOOLSW = @as(u32, 1082);
pub const TTM_GETCURRENTTOOLA = @as(u32, 1039);
pub const TTM_GETCURRENTTOOLW = @as(u32, 1083);
pub const TTM_WINDOWFROMPOINT = @as(u32, 1040);
pub const TTM_TRACKACTIVATE = @as(u32, 1041);
pub const TTM_TRACKPOSITION = @as(u32, 1042);
pub const TTM_SETTIPBKCOLOR = @as(u32, 1043);
pub const TTM_SETTIPTEXTCOLOR = @as(u32, 1044);
pub const TTM_GETDELAYTIME = @as(u32, 1045);
pub const TTM_GETTIPBKCOLOR = @as(u32, 1046);
pub const TTM_GETTIPTEXTCOLOR = @as(u32, 1047);
pub const TTM_SETMAXTIPWIDTH = @as(u32, 1048);
pub const TTM_GETMAXTIPWIDTH = @as(u32, 1049);
pub const TTM_SETMARGIN = @as(u32, 1050);
pub const TTM_GETMARGIN = @as(u32, 1051);
pub const TTM_POP = @as(u32, 1052);
pub const TTM_UPDATE = @as(u32, 1053);
pub const TTM_GETBUBBLESIZE = @as(u32, 1054);
pub const TTM_ADJUSTRECT = @as(u32, 1055);
pub const TTM_SETTITLEA = @as(u32, 1056);
pub const TTM_SETTITLEW = @as(u32, 1057);
pub const TTM_POPUP = @as(u32, 1058);
pub const TTM_GETTITLE = @as(u32, 1059);
pub const TTM_ADDTOOL = @as(u32, 1074);
pub const TTM_DELTOOL = @as(u32, 1075);
pub const TTM_NEWTOOLRECT = @as(u32, 1076);
pub const TTM_GETTOOLINFO = @as(u32, 1077);
pub const TTM_SETTOOLINFO = @as(u32, 1078);
pub const TTM_HITTEST = @as(u32, 1079);
pub const TTM_GETTEXT = @as(u32, 1080);
pub const TTM_UPDATETIPTEXT = @as(u32, 1081);
pub const TTM_ENUMTOOLS = @as(u32, 1082);
pub const TTM_GETCURRENTTOOL = @as(u32, 1083);
pub const TTM_SETTITLE = @as(u32, 1057);
pub const TTM_SETWINDOWTHEME = @as(u32, 8203);
pub const SBARS_SIZEGRIP = @as(u32, 256);
pub const SBARS_TOOLTIPS = @as(u32, 2048);
pub const SBT_TOOLTIPS = @as(u32, 2048);
pub const SB_SETTEXTA = @as(u32, 1025);
pub const SB_SETTEXTW = @as(u32, 1035);
pub const SB_GETTEXTA = @as(u32, 1026);
pub const SB_GETTEXTW = @as(u32, 1037);
pub const SB_GETTEXTLENGTHA = @as(u32, 1027);
pub const SB_GETTEXTLENGTHW = @as(u32, 1036);
pub const SB_GETTEXT = @as(u32, 1037);
pub const SB_SETTEXT = @as(u32, 1035);
pub const SB_GETTEXTLENGTH = @as(u32, 1036);
pub const SB_SETPARTS = @as(u32, 1028);
pub const SB_GETPARTS = @as(u32, 1030);
pub const SB_GETBORDERS = @as(u32, 1031);
pub const SB_SETMINHEIGHT = @as(u32, 1032);
pub const SB_SIMPLE = @as(u32, 1033);
pub const SB_GETRECT = @as(u32, 1034);
pub const SB_ISSIMPLE = @as(u32, 1038);
pub const SB_SETICON = @as(u32, 1039);
pub const SB_SETTIPTEXTA = @as(u32, 1040);
pub const SB_SETTIPTEXTW = @as(u32, 1041);
pub const SB_GETTIPTEXTA = @as(u32, 1042);
pub const SB_GETTIPTEXTW = @as(u32, 1043);
pub const SB_GETICON = @as(u32, 1044);
pub const SB_SETUNICODEFORMAT = @as(u32, 8197);
pub const SB_GETUNICODEFORMAT = @as(u32, 8198);
pub const SBT_OWNERDRAW = @as(u32, 4096);
pub const SBT_NOBORDERS = @as(u32, 256);
pub const SBT_POPOUT = @as(u32, 512);
pub const SBT_RTLREADING = @as(u32, 1024);
pub const SBT_NOTABPARSING = @as(u32, 2048);
pub const SB_SETBKCOLOR = @as(u32, 8193);
pub const SB_SIMPLEID = @as(u32, 255);
pub const TBS_AUTOTICKS = @as(u32, 1);
pub const TBS_VERT = @as(u32, 2);
pub const TBS_HORZ = @as(u32, 0);
pub const TBS_TOP = @as(u32, 4);
pub const TBS_BOTTOM = @as(u32, 0);
pub const TBS_LEFT = @as(u32, 4);
pub const TBS_RIGHT = @as(u32, 0);
pub const TBS_BOTH = @as(u32, 8);
pub const TBS_NOTICKS = @as(u32, 16);
pub const TBS_ENABLESELRANGE = @as(u32, 32);
pub const TBS_FIXEDLENGTH = @as(u32, 64);
pub const TBS_NOTHUMB = @as(u32, 128);
pub const TBS_TOOLTIPS = @as(u32, 256);
pub const TBS_REVERSED = @as(u32, 512);
pub const TBS_DOWNISLEFT = @as(u32, 1024);
pub const TBS_NOTIFYBEFOREMOVE = @as(u32, 2048);
pub const TBS_TRANSPARENTBKGND = @as(u32, 4096);
pub const TBM_GETRANGEMIN = @as(u32, 1025);
pub const TBM_GETRANGEMAX = @as(u32, 1026);
pub const TBM_GETTIC = @as(u32, 1027);
pub const TBM_SETTIC = @as(u32, 1028);
pub const TBM_SETPOS = @as(u32, 1029);
pub const TBM_SETRANGE = @as(u32, 1030);
pub const TBM_SETRANGEMIN = @as(u32, 1031);
pub const TBM_SETRANGEMAX = @as(u32, 1032);
pub const TBM_CLEARTICS = @as(u32, 1033);
pub const TBM_SETSEL = @as(u32, 1034);
pub const TBM_SETSELSTART = @as(u32, 1035);
pub const TBM_SETSELEND = @as(u32, 1036);
pub const TBM_GETPTICS = @as(u32, 1038);
pub const TBM_GETTICPOS = @as(u32, 1039);
pub const TBM_GETNUMTICS = @as(u32, 1040);
pub const TBM_GETSELSTART = @as(u32, 1041);
pub const TBM_GETSELEND = @as(u32, 1042);
pub const TBM_CLEARSEL = @as(u32, 1043);
pub const TBM_SETTICFREQ = @as(u32, 1044);
pub const TBM_SETPAGESIZE = @as(u32, 1045);
pub const TBM_GETPAGESIZE = @as(u32, 1046);
pub const TBM_SETLINESIZE = @as(u32, 1047);
pub const TBM_GETLINESIZE = @as(u32, 1048);
pub const TBM_GETTHUMBRECT = @as(u32, 1049);
pub const TBM_GETCHANNELRECT = @as(u32, 1050);
pub const TBM_SETTHUMBLENGTH = @as(u32, 1051);
pub const TBM_GETTHUMBLENGTH = @as(u32, 1052);
pub const TBM_SETTOOLTIPS = @as(u32, 1053);
pub const TBM_GETTOOLTIPS = @as(u32, 1054);
pub const TBM_SETTIPSIDE = @as(u32, 1055);
pub const TBTS_TOP = @as(u32, 0);
pub const TBTS_LEFT = @as(u32, 1);
pub const TBTS_BOTTOM = @as(u32, 2);
pub const TBTS_RIGHT = @as(u32, 3);
pub const TBM_SETBUDDY = @as(u32, 1056);
pub const TBM_GETBUDDY = @as(u32, 1057);
pub const TBM_SETPOSNOTIFY = @as(u32, 1058);
pub const TBM_SETUNICODEFORMAT = @as(u32, 8197);
pub const TBM_GETUNICODEFORMAT = @as(u32, 8198);
pub const TB_LINEUP = @as(u32, 0);
pub const TB_LINEDOWN = @as(u32, 1);
pub const TB_PAGEUP = @as(u32, 2);
pub const TB_PAGEDOWN = @as(u32, 3);
pub const TB_THUMBPOSITION = @as(u32, 4);
pub const TB_THUMBTRACK = @as(u32, 5);
pub const TB_TOP = @as(u32, 6);
pub const TB_BOTTOM = @as(u32, 7);
pub const TB_ENDTRACK = @as(u32, 8);
pub const TBCD_TICS = @as(u32, 1);
pub const TBCD_THUMB = @as(u32, 2);
pub const TBCD_CHANNEL = @as(u32, 3);
pub const DL_CURSORSET = @as(u32, 0);
pub const DL_STOPCURSOR = @as(u32, 1);
pub const DL_COPYCURSOR = @as(u32, 2);
pub const DL_MOVECURSOR = @as(u32, 3);
pub const UD_MAXVAL = @as(u32, 32767);
pub const UDS_WRAP = @as(u32, 1);
pub const UDS_SETBUDDYINT = @as(u32, 2);
pub const UDS_ALIGNRIGHT = @as(u32, 4);
pub const UDS_ALIGNLEFT = @as(u32, 8);
pub const UDS_AUTOBUDDY = @as(u32, 16);
pub const UDS_ARROWKEYS = @as(u32, 32);
pub const UDS_HORZ = @as(u32, 64);
pub const UDS_NOTHOUSANDS = @as(u32, 128);
pub const UDS_HOTTRACK = @as(u32, 256);
pub const UDM_SETRANGE = @as(u32, 1125);
pub const UDM_GETRANGE = @as(u32, 1126);
pub const UDM_SETPOS = @as(u32, 1127);
pub const UDM_GETPOS = @as(u32, 1128);
pub const UDM_SETBUDDY = @as(u32, 1129);
pub const UDM_GETBUDDY = @as(u32, 1130);
pub const UDM_SETACCEL = @as(u32, 1131);
pub const UDM_GETACCEL = @as(u32, 1132);
pub const UDM_SETBASE = @as(u32, 1133);
pub const UDM_GETBASE = @as(u32, 1134);
pub const UDM_SETRANGE32 = @as(u32, 1135);
pub const UDM_GETRANGE32 = @as(u32, 1136);
pub const UDM_SETUNICODEFORMAT = @as(u32, 8197);
pub const UDM_GETUNICODEFORMAT = @as(u32, 8198);
pub const UDM_SETPOS32 = @as(u32, 1137);
pub const UDM_GETPOS32 = @as(u32, 1138);
pub const PBS_SMOOTH = @as(u32, 1);
pub const PBS_VERTICAL = @as(u32, 4);
pub const PBM_SETRANGE = @as(u32, 1025);
pub const PBM_SETPOS = @as(u32, 1026);
pub const PBM_DELTAPOS = @as(u32, 1027);
pub const PBM_SETSTEP = @as(u32, 1028);
pub const PBM_STEPIT = @as(u32, 1029);
pub const PBM_SETRANGE32 = @as(u32, 1030);
pub const PBM_GETRANGE = @as(u32, 1031);
pub const PBM_GETPOS = @as(u32, 1032);
pub const PBM_SETBARCOLOR = @as(u32, 1033);
pub const PBM_SETBKCOLOR = @as(u32, 8193);
pub const PBS_MARQUEE = @as(u32, 8);
pub const PBM_SETMARQUEE = @as(u32, 1034);
pub const PBS_SMOOTHREVERSE = @as(u32, 16);
pub const PBM_GETSTEP = @as(u32, 1037);
pub const PBM_GETBKCOLOR = @as(u32, 1038);
pub const PBM_GETBARCOLOR = @as(u32, 1039);
pub const PBM_SETSTATE = @as(u32, 1040);
pub const PBM_GETSTATE = @as(u32, 1041);
pub const PBST_NORMAL = @as(u32, 1);
pub const PBST_ERROR = @as(u32, 2);
pub const PBST_PAUSED = @as(u32, 3);
pub const HOTKEYF_SHIFT = @as(u32, 1);
pub const HOTKEYF_CONTROL = @as(u32, 2);
pub const HOTKEYF_ALT = @as(u32, 4);
pub const HOTKEYF_EXT = @as(u32, 128);
pub const HKCOMB_NONE = @as(u32, 1);
pub const HKCOMB_S = @as(u32, 2);
pub const HKCOMB_C = @as(u32, 4);
pub const HKCOMB_A = @as(u32, 8);
pub const HKCOMB_SC = @as(u32, 16);
pub const HKCOMB_SA = @as(u32, 32);
pub const HKCOMB_CA = @as(u32, 64);
pub const HKCOMB_SCA = @as(u32, 128);
pub const HKM_SETHOTKEY = @as(u32, 1025);
pub const HKM_GETHOTKEY = @as(u32, 1026);
pub const HKM_SETRULES = @as(u32, 1027);
pub const CCS_TOP = @as(i32, 1);
pub const CCS_NOMOVEY = @as(i32, 2);
pub const CCS_BOTTOM = @as(i32, 3);
pub const CCS_NORESIZE = @as(i32, 4);
pub const CCS_NOPARENTALIGN = @as(i32, 8);
pub const CCS_ADJUSTABLE = @as(i32, 32);
pub const CCS_NODIVIDER = @as(i32, 64);
pub const CCS_VERT = @as(i32, 128);
pub const INVALID_LINK_INDEX = @as(i32, -1);
pub const MAX_LINKID_TEXT = @as(u32, 48);
pub const LWS_TRANSPARENT = @as(u32, 1);
pub const LWS_IGNORERETURN = @as(u32, 2);
pub const LWS_NOPREFIX = @as(u32, 4);
pub const LWS_USEVISUALSTYLE = @as(u32, 8);
pub const LWS_USECUSTOMTEXT = @as(u32, 16);
pub const LWS_RIGHT = @as(u32, 32);
pub const LIF_ITEMINDEX = @as(u32, 1);
pub const LIF_STATE = @as(u32, 2);
pub const LIF_ITEMID = @as(u32, 4);
pub const LIF_URL = @as(u32, 8);
pub const LIS_FOCUSED = @as(u32, 1);
pub const LIS_ENABLED = @as(u32, 2);
pub const LIS_VISITED = @as(u32, 4);
pub const LIS_HOTTRACK = @as(u32, 8);
pub const LIS_DEFAULTCOLORS = @as(u32, 16);
pub const LM_HITTEST = @as(u32, 1792);
pub const LM_GETIDEALHEIGHT = @as(u32, 1793);
pub const LM_SETITEM = @as(u32, 1794);
pub const LM_GETITEM = @as(u32, 1795);
pub const LM_GETIDEALSIZE = @as(u32, 1793);
pub const LVS_ICON = @as(u32, 0);
pub const LVS_REPORT = @as(u32, 1);
pub const LVS_SMALLICON = @as(u32, 2);
pub const LVS_LIST = @as(u32, 3);
pub const LVS_TYPEMASK = @as(u32, 3);
pub const LVS_SINGLESEL = @as(u32, 4);
pub const LVS_SHOWSELALWAYS = @as(u32, 8);
pub const LVS_SORTASCENDING = @as(u32, 16);
pub const LVS_SORTDESCENDING = @as(u32, 32);
pub const LVS_SHAREIMAGELISTS = @as(u32, 64);
pub const LVS_NOLABELWRAP = @as(u32, 128);
pub const LVS_AUTOARRANGE = @as(u32, 256);
pub const LVS_EDITLABELS = @as(u32, 512);
pub const LVS_OWNERDATA = @as(u32, 4096);
pub const LVS_NOSCROLL = @as(u32, 8192);
pub const LVS_TYPESTYLEMASK = @as(u32, 64512);
pub const LVS_ALIGNTOP = @as(u32, 0);
pub const LVS_ALIGNLEFT = @as(u32, 2048);
pub const LVS_ALIGNMASK = @as(u32, 3072);
pub const LVS_OWNERDRAWFIXED = @as(u32, 1024);
pub const LVS_NOCOLUMNHEADER = @as(u32, 16384);
pub const LVS_NOSORTHEADER = @as(u32, 32768);
pub const LVM_SETUNICODEFORMAT = @as(u32, 8197);
pub const LVM_GETUNICODEFORMAT = @as(u32, 8198);
pub const LVM_GETBKCOLOR = @as(u32, 4096);
pub const LVM_SETBKCOLOR = @as(u32, 4097);
pub const LVM_GETIMAGELIST = @as(u32, 4098);
pub const LVSIL_NORMAL = @as(u32, 0);
pub const LVSIL_SMALL = @as(u32, 1);
pub const LVSIL_STATE = @as(u32, 2);
pub const LVSIL_GROUPHEADER = @as(u32, 3);
pub const LVM_SETIMAGELIST = @as(u32, 4099);
pub const LVM_GETITEMCOUNT = @as(u32, 4100);
pub const LVIF_TEXT = @as(u32, 1);
pub const LVIF_IMAGE = @as(u32, 2);
pub const LVIF_PARAM = @as(u32, 4);
pub const LVIF_STATE = @as(u32, 8);
pub const LVIF_INDENT = @as(u32, 16);
pub const LVIF_NORECOMPUTE = @as(u32, 2048);
pub const LVIF_GROUPID = @as(u32, 256);
pub const LVIF_COLUMNS = @as(u32, 512);
pub const LVIF_COLFMT = @as(u32, 65536);
pub const LVIS_FOCUSED = @as(u32, 1);
pub const LVIS_SELECTED = @as(u32, 2);
pub const LVIS_CUT = @as(u32, 4);
pub const LVIS_DROPHILITED = @as(u32, 8);
pub const LVIS_GLOW = @as(u32, 16);
pub const LVIS_ACTIVATING = @as(u32, 32);
pub const LVIS_OVERLAYMASK = @as(u32, 3840);
pub const LVIS_STATEIMAGEMASK = @as(u32, 61440);
pub const I_INDENTCALLBACK = @as(i32, -1);
pub const I_IMAGECALLBACK = @as(i32, -1);
pub const I_IMAGENONE = @as(i32, -2);
pub const LVM_GETITEMA = @as(u32, 4101);
pub const LVM_GETITEMW = @as(u32, 4171);
pub const LVM_GETITEM = @as(u32, 4171);
pub const LVM_SETITEMA = @as(u32, 4102);
pub const LVM_SETITEMW = @as(u32, 4172);
pub const LVM_SETITEM = @as(u32, 4172);
pub const LVM_INSERTITEMA = @as(u32, 4103);
pub const LVM_INSERTITEMW = @as(u32, 4173);
pub const LVM_INSERTITEM = @as(u32, 4173);
pub const LVM_DELETEITEM = @as(u32, 4104);
pub const LVM_DELETEALLITEMS = @as(u32, 4105);
pub const LVM_GETCALLBACKMASK = @as(u32, 4106);
pub const LVM_SETCALLBACKMASK = @as(u32, 4107);
pub const LVNI_ALL = @as(u32, 0);
pub const LVNI_FOCUSED = @as(u32, 1);
pub const LVNI_SELECTED = @as(u32, 2);
pub const LVNI_CUT = @as(u32, 4);
pub const LVNI_DROPHILITED = @as(u32, 8);
pub const LVNI_VISIBLEORDER = @as(u32, 16);
pub const LVNI_PREVIOUS = @as(u32, 32);
pub const LVNI_VISIBLEONLY = @as(u32, 64);
pub const LVNI_SAMEGROUPONLY = @as(u32, 128);
pub const LVNI_ABOVE = @as(u32, 256);
pub const LVNI_BELOW = @as(u32, 512);
pub const LVNI_TOLEFT = @as(u32, 1024);
pub const LVNI_TORIGHT = @as(u32, 2048);
pub const LVM_GETNEXTITEM = @as(u32, 4108);
pub const LVM_FINDITEMA = @as(u32, 4109);
pub const LVM_FINDITEMW = @as(u32, 4179);
pub const LVM_FINDITEM = @as(u32, 4179);
pub const LVIR_BOUNDS = @as(u32, 0);
pub const LVIR_ICON = @as(u32, 1);
pub const LVIR_LABEL = @as(u32, 2);
pub const LVIR_SELECTBOUNDS = @as(u32, 3);
pub const LVM_GETITEMRECT = @as(u32, 4110);
pub const LVM_SETITEMPOSITION = @as(u32, 4111);
pub const LVM_GETITEMPOSITION = @as(u32, 4112);
pub const LVM_GETSTRINGWIDTHA = @as(u32, 4113);
pub const LVM_GETSTRINGWIDTHW = @as(u32, 4183);
pub const LVM_GETSTRINGWIDTH = @as(u32, 4183);
pub const LVM_HITTEST = @as(u32, 4114);
pub const LVM_ENSUREVISIBLE = @as(u32, 4115);
pub const LVM_SCROLL = @as(u32, 4116);
pub const LVM_REDRAWITEMS = @as(u32, 4117);
pub const LVA_DEFAULT = @as(u32, 0);
pub const LVA_ALIGNLEFT = @as(u32, 1);
pub const LVA_ALIGNTOP = @as(u32, 2);
pub const LVA_SNAPTOGRID = @as(u32, 5);
pub const LVM_ARRANGE = @as(u32, 4118);
pub const LVM_EDITLABELA = @as(u32, 4119);
pub const LVM_EDITLABELW = @as(u32, 4214);
pub const LVM_EDITLABEL = @as(u32, 4214);
pub const LVM_GETEDITCONTROL = @as(u32, 4120);
pub const LVCFMT_LINE_BREAK = @as(u32, 1048576);
pub const LVCFMT_FILL = @as(u32, 2097152);
pub const LVCFMT_WRAP = @as(u32, 4194304);
pub const LVCFMT_NO_TITLE = @as(u32, 8388608);
pub const LVM_GETCOLUMNA = @as(u32, 4121);
pub const LVM_GETCOLUMNW = @as(u32, 4191);
pub const LVM_GETCOLUMN = @as(u32, 4191);
pub const LVM_SETCOLUMNA = @as(u32, 4122);
pub const LVM_SETCOLUMNW = @as(u32, 4192);
pub const LVM_SETCOLUMN = @as(u32, 4192);
pub const LVM_INSERTCOLUMNA = @as(u32, 4123);
pub const LVM_INSERTCOLUMNW = @as(u32, 4193);
pub const LVM_DELETECOLUMN = @as(u32, 4124);
pub const LVM_GETCOLUMNWIDTH = @as(u32, 4125);
pub const LVSCW_AUTOSIZE = @as(i32, -1);
pub const LVSCW_AUTOSIZE_USEHEADER = @as(i32, -2);
pub const LVM_SETCOLUMNWIDTH = @as(u32, 4126);
pub const LVM_GETHEADER = @as(u32, 4127);
pub const LVM_CREATEDRAGIMAGE = @as(u32, 4129);
pub const LVM_GETVIEWRECT = @as(u32, 4130);
pub const LVM_GETTEXTCOLOR = @as(u32, 4131);
pub const LVM_SETTEXTCOLOR = @as(u32, 4132);
pub const LVM_GETTEXTBKCOLOR = @as(u32, 4133);
pub const LVM_SETTEXTBKCOLOR = @as(u32, 4134);
pub const LVM_GETTOPINDEX = @as(u32, 4135);
pub const LVM_GETCOUNTPERPAGE = @as(u32, 4136);
pub const LVM_GETORIGIN = @as(u32, 4137);
pub const LVM_UPDATE = @as(u32, 4138);
pub const LVM_SETITEMSTATE = @as(u32, 4139);
pub const LVM_GETITEMSTATE = @as(u32, 4140);
pub const LVM_GETITEMTEXTA = @as(u32, 4141);
pub const LVM_GETITEMTEXTW = @as(u32, 4211);
pub const LVM_GETITEMTEXT = @as(u32, 4211);
pub const LVM_SETITEMTEXTA = @as(u32, 4142);
pub const LVM_SETITEMTEXTW = @as(u32, 4212);
pub const LVM_SETITEMTEXT = @as(u32, 4212);
pub const LVSICF_NOINVALIDATEALL = @as(u32, 1);
pub const LVSICF_NOSCROLL = @as(u32, 2);
pub const LVM_SETITEMCOUNT = @as(u32, 4143);
pub const LVM_SORTITEMS = @as(u32, 4144);
pub const LVM_SETITEMPOSITION32 = @as(u32, 4145);
pub const LVM_GETSELECTEDCOUNT = @as(u32, 4146);
pub const LVM_GETITEMSPACING = @as(u32, 4147);
pub const LVM_GETISEARCHSTRINGA = @as(u32, 4148);
pub const LVM_GETISEARCHSTRINGW = @as(u32, 4213);
pub const LVM_GETISEARCHSTRING = @as(u32, 4213);
pub const LVM_SETICONSPACING = @as(u32, 4149);
pub const LVM_SETEXTENDEDLISTVIEWSTYLE = @as(u32, 4150);
pub const LVM_GETEXTENDEDLISTVIEWSTYLE = @as(u32, 4151);
pub const LVS_EX_GRIDLINES = @as(u32, 1);
pub const LVS_EX_SUBITEMIMAGES = @as(u32, 2);
pub const LVS_EX_CHECKBOXES = @as(u32, 4);
pub const LVS_EX_TRACKSELECT = @as(u32, 8);
pub const LVS_EX_HEADERDRAGDROP = @as(u32, 16);
pub const LVS_EX_FULLROWSELECT = @as(u32, 32);
pub const LVS_EX_ONECLICKACTIVATE = @as(u32, 64);
pub const LVS_EX_TWOCLICKACTIVATE = @as(u32, 128);
pub const LVS_EX_FLATSB = @as(u32, 256);
pub const LVS_EX_REGIONAL = @as(u32, 512);
pub const LVS_EX_INFOTIP = @as(u32, 1024);
pub const LVS_EX_UNDERLINEHOT = @as(u32, 2048);
pub const LVS_EX_UNDERLINECOLD = @as(u32, 4096);
pub const LVS_EX_MULTIWORKAREAS = @as(u32, 8192);
pub const LVS_EX_LABELTIP = @as(u32, 16384);
pub const LVS_EX_BORDERSELECT = @as(u32, 32768);
pub const LVS_EX_DOUBLEBUFFER = @as(u32, 65536);
pub const LVS_EX_HIDELABELS = @as(u32, 131072);
pub const LVS_EX_SINGLEROW = @as(u32, 262144);
pub const LVS_EX_SNAPTOGRID = @as(u32, 524288);
pub const LVS_EX_SIMPLESELECT = @as(u32, 1048576);
pub const LVS_EX_JUSTIFYCOLUMNS = @as(u32, 2097152);
pub const LVS_EX_TRANSPARENTBKGND = @as(u32, 4194304);
pub const LVS_EX_TRANSPARENTSHADOWTEXT = @as(u32, 8388608);
pub const LVS_EX_AUTOAUTOARRANGE = @as(u32, 16777216);
pub const LVS_EX_HEADERINALLVIEWS = @as(u32, 33554432);
pub const LVS_EX_AUTOCHECKSELECT = @as(u32, 134217728);
pub const LVS_EX_AUTOSIZECOLUMNS = @as(u32, 268435456);
pub const LVS_EX_COLUMNSNAPPOINTS = @as(u32, 1073741824);
pub const LVS_EX_COLUMNOVERFLOW = @as(u32, 2147483648);
pub const LVM_GETSUBITEMRECT = @as(u32, 4152);
pub const LVM_SUBITEMHITTEST = @as(u32, 4153);
pub const LVM_SETCOLUMNORDERARRAY = @as(u32, 4154);
pub const LVM_GETCOLUMNORDERARRAY = @as(u32, 4155);
pub const LVM_SETHOTITEM = @as(u32, 4156);
pub const LVM_GETHOTITEM = @as(u32, 4157);
pub const LVM_SETHOTCURSOR = @as(u32, 4158);
pub const LVM_GETHOTCURSOR = @as(u32, 4159);
pub const LVM_APPROXIMATEVIEWRECT = @as(u32, 4160);
pub const LV_MAX_WORKAREAS = @as(u32, 16);
pub const LVM_SETWORKAREAS = @as(u32, 4161);
pub const LVM_GETWORKAREAS = @as(u32, 4166);
pub const LVM_GETNUMBEROFWORKAREAS = @as(u32, 4169);
pub const LVM_GETSELECTIONMARK = @as(u32, 4162);
pub const LVM_SETSELECTIONMARK = @as(u32, 4163);
pub const LVM_SETHOVERTIME = @as(u32, 4167);
pub const LVM_GETHOVERTIME = @as(u32, 4168);
pub const LVM_SETTOOLTIPS = @as(u32, 4170);
pub const LVM_GETTOOLTIPS = @as(u32, 4174);
pub const LVM_SORTITEMSEX = @as(u32, 4177);
pub const LVBKIF_SOURCE_NONE = @as(u32, 0);
pub const LVBKIF_SOURCE_HBITMAP = @as(u32, 1);
pub const LVBKIF_SOURCE_URL = @as(u32, 2);
pub const LVBKIF_SOURCE_MASK = @as(u32, 3);
pub const LVBKIF_STYLE_NORMAL = @as(u32, 0);
pub const LVBKIF_STYLE_TILE = @as(u32, 16);
pub const LVBKIF_STYLE_MASK = @as(u32, 16);
pub const LVBKIF_FLAG_TILEOFFSET = @as(u32, 256);
pub const LVBKIF_TYPE_WATERMARK = @as(u32, 268435456);
pub const LVBKIF_FLAG_ALPHABLEND = @as(u32, 536870912);
pub const LVM_SETBKIMAGEA = @as(u32, 4164);
pub const LVM_SETBKIMAGEW = @as(u32, 4234);
pub const LVM_GETBKIMAGEA = @as(u32, 4165);
pub const LVM_GETBKIMAGEW = @as(u32, 4235);
pub const LVM_SETSELECTEDCOLUMN = @as(u32, 4236);
pub const LV_VIEW_ICON = @as(u32, 0);
pub const LV_VIEW_DETAILS = @as(u32, 1);
pub const LV_VIEW_SMALLICON = @as(u32, 2);
pub const LV_VIEW_LIST = @as(u32, 3);
pub const LV_VIEW_TILE = @as(u32, 4);
pub const LV_VIEW_MAX = @as(u32, 4);
pub const LVM_SETVIEW = @as(u32, 4238);
pub const LVM_GETVIEW = @as(u32, 4239);
pub const LVGF_ALIGN = @as(u32, 8);
pub const LVGF_GROUPID = @as(u32, 16);
pub const LVGF_SUBTITLE = @as(u32, 256);
pub const LVGF_TASK = @as(u32, 512);
pub const LVGF_DESCRIPTIONTOP = @as(u32, 1024);
pub const LVGF_DESCRIPTIONBOTTOM = @as(u32, 2048);
pub const LVGF_TITLEIMAGE = @as(u32, 4096);
pub const LVGF_EXTENDEDIMAGE = @as(u32, 8192);
pub const LVGF_ITEMS = @as(u32, 16384);
pub const LVGF_SUBSET = @as(u32, 32768);
pub const LVGF_SUBSETITEMS = @as(u32, 65536);
pub const LVGS_NORMAL = @as(u32, 0);
pub const LVGS_COLLAPSED = @as(u32, 1);
pub const LVGS_HIDDEN = @as(u32, 2);
pub const LVGS_NOHEADER = @as(u32, 4);
pub const LVGS_COLLAPSIBLE = @as(u32, 8);
pub const LVGS_FOCUSED = @as(u32, 16);
pub const LVGS_SELECTED = @as(u32, 32);
pub const LVGS_SUBSETED = @as(u32, 64);
pub const LVGS_SUBSETLINKFOCUSED = @as(u32, 128);
pub const LVGA_FOOTER_LEFT = @as(u32, 8);
pub const LVGA_FOOTER_CENTER = @as(u32, 16);
pub const LVGA_FOOTER_RIGHT = @as(u32, 32);
pub const LVM_INSERTGROUP = @as(u32, 4241);
pub const LVM_SETGROUPINFO = @as(u32, 4243);
pub const LVM_GETGROUPINFO = @as(u32, 4245);
pub const LVM_REMOVEGROUP = @as(u32, 4246);
pub const LVM_MOVEGROUP = @as(u32, 4247);
pub const LVM_GETGROUPCOUNT = @as(u32, 4248);
pub const LVM_GETGROUPINFOBYINDEX = @as(u32, 4249);
pub const LVM_MOVEITEMTOGROUP = @as(u32, 4250);
pub const LVGGR_GROUP = @as(u32, 0);
pub const LVGGR_HEADER = @as(u32, 1);
pub const LVGGR_LABEL = @as(u32, 2);
pub const LVGGR_SUBSETLINK = @as(u32, 3);
pub const LVM_GETGROUPRECT = @as(u32, 4194);
pub const LVGMF_NONE = @as(u32, 0);
pub const LVGMF_BORDERSIZE = @as(u32, 1);
pub const LVGMF_BORDERCOLOR = @as(u32, 2);
pub const LVGMF_TEXTCOLOR = @as(u32, 4);
pub const LVM_SETGROUPMETRICS = @as(u32, 4251);
pub const LVM_GETGROUPMETRICS = @as(u32, 4252);
pub const LVM_ENABLEGROUPVIEW = @as(u32, 4253);
pub const LVM_SORTGROUPS = @as(u32, 4254);
pub const LVM_INSERTGROUPSORTED = @as(u32, 4255);
pub const LVM_REMOVEALLGROUPS = @as(u32, 4256);
pub const LVM_HASGROUP = @as(u32, 4257);
pub const LVM_GETGROUPSTATE = @as(u32, 4188);
pub const LVM_GETFOCUSEDGROUP = @as(u32, 4189);
pub const LVTVIF_AUTOSIZE = @as(u32, 0);
pub const LVTVIF_FIXEDWIDTH = @as(u32, 1);
pub const LVTVIF_FIXEDHEIGHT = @as(u32, 2);
pub const LVTVIF_FIXEDSIZE = @as(u32, 3);
pub const LVTVIM_TILESIZE = @as(u32, 1);
pub const LVTVIM_COLUMNS = @as(u32, 2);
pub const LVTVIM_LABELMARGIN = @as(u32, 4);
pub const LVM_SETTILEVIEWINFO = @as(u32, 4258);
pub const LVM_GETTILEVIEWINFO = @as(u32, 4259);
pub const LVM_SETTILEINFO = @as(u32, 4260);
pub const LVM_GETTILEINFO = @as(u32, 4261);
pub const LVIM_AFTER = @as(u32, 1);
pub const LVM_SETINSERTMARK = @as(u32, 4262);
pub const LVM_GETINSERTMARK = @as(u32, 4263);
pub const LVM_INSERTMARKHITTEST = @as(u32, 4264);
pub const LVM_GETINSERTMARKRECT = @as(u32, 4265);
pub const LVM_SETINSERTMARKCOLOR = @as(u32, 4266);
pub const LVM_GETINSERTMARKCOLOR = @as(u32, 4267);
pub const LVM_SETINFOTIP = @as(u32, 4269);
pub const LVM_GETSELECTEDCOLUMN = @as(u32, 4270);
pub const LVM_ISGROUPVIEWENABLED = @as(u32, 4271);
pub const LVM_GETOUTLINECOLOR = @as(u32, 4272);
pub const LVM_SETOUTLINECOLOR = @as(u32, 4273);
pub const LVM_CANCELEDITLABEL = @as(u32, 4275);
pub const LVM_MAPINDEXTOID = @as(u32, 4276);
pub const LVM_MAPIDTOINDEX = @as(u32, 4277);
pub const LVM_ISITEMVISIBLE = @as(u32, 4278);
pub const LVM_GETEMPTYTEXT = @as(u32, 4300);
pub const LVM_GETFOOTERRECT = @as(u32, 4301);
pub const LVFF_ITEMCOUNT = @as(u32, 1);
pub const LVM_GETFOOTERINFO = @as(u32, 4302);
pub const LVM_GETFOOTERITEMRECT = @as(u32, 4303);
pub const LVFIS_FOCUSED = @as(u32, 1);
pub const LVM_GETFOOTERITEM = @as(u32, 4304);
pub const LVM_GETITEMINDEXRECT = @as(u32, 4305);
pub const LVM_SETITEMINDEXSTATE = @as(u32, 4306);
pub const LVM_GETNEXTITEMINDEX = @as(u32, 4307);
pub const LVM_SETBKIMAGE = @as(u32, 4234);
pub const LVM_GETBKIMAGE = @as(u32, 4235);
pub const LVKF_ALT = @as(u32, 1);
pub const LVKF_CONTROL = @as(u32, 2);
pub const LVKF_SHIFT = @as(u32, 4);
pub const LVCDRF_NOSELECT = @as(u32, 65536);
pub const LVCDRF_NOGROUPFRAME = @as(u32, 131072);
pub const LVIF_DI_SETITEM = @as(u32, 4096);
pub const LVGIT_UNFOLDED = @as(u32, 1);
pub const LVNSCH_DEFAULT = @as(i32, -1);
pub const LVNSCH_ERROR = @as(i32, -2);
pub const LVNSCH_IGNORE = @as(i32, -3);
pub const TVS_HASBUTTONS = @as(u32, 1);
pub const TVS_HASLINES = @as(u32, 2);
pub const TVS_LINESATROOT = @as(u32, 4);
pub const TVS_EDITLABELS = @as(u32, 8);
pub const TVS_DISABLEDRAGDROP = @as(u32, 16);
pub const TVS_SHOWSELALWAYS = @as(u32, 32);
pub const TVS_RTLREADING = @as(u32, 64);
pub const TVS_NOTOOLTIPS = @as(u32, 128);
pub const TVS_CHECKBOXES = @as(u32, 256);
pub const TVS_TRACKSELECT = @as(u32, 512);
pub const TVS_SINGLEEXPAND = @as(u32, 1024);
pub const TVS_INFOTIP = @as(u32, 2048);
pub const TVS_FULLROWSELECT = @as(u32, 4096);
pub const TVS_NOSCROLL = @as(u32, 8192);
pub const TVS_NONEVENHEIGHT = @as(u32, 16384);
pub const TVS_NOHSCROLL = @as(u32, 32768);
pub const TVS_EX_NOSINGLECOLLAPSE = @as(u32, 1);
pub const TVS_EX_MULTISELECT = @as(u32, 2);
pub const TVS_EX_DOUBLEBUFFER = @as(u32, 4);
pub const TVS_EX_NOINDENTSTATE = @as(u32, 8);
pub const TVS_EX_RICHTOOLTIP = @as(u32, 16);
pub const TVS_EX_AUTOHSCROLL = @as(u32, 32);
pub const TVS_EX_FADEINOUTEXPANDOS = @as(u32, 64);
pub const TVS_EX_PARTIALCHECKBOXES = @as(u32, 128);
pub const TVS_EX_EXCLUSIONCHECKBOXES = @as(u32, 256);
pub const TVS_EX_DIMMEDCHECKBOXES = @as(u32, 512);
pub const TVS_EX_DRAWIMAGEASYNC = @as(u32, 1024);
pub const TVIS_SELECTED = @as(u32, 2);
pub const TVIS_CUT = @as(u32, 4);
pub const TVIS_DROPHILITED = @as(u32, 8);
pub const TVIS_BOLD = @as(u32, 16);
pub const TVIS_EXPANDED = @as(u32, 32);
pub const TVIS_EXPANDEDONCE = @as(u32, 64);
pub const TVIS_EXPANDPARTIAL = @as(u32, 128);
pub const TVIS_OVERLAYMASK = @as(u32, 3840);
pub const TVIS_STATEIMAGEMASK = @as(u32, 61440);
pub const TVIS_USERMASK = @as(u32, 61440);
pub const TVIS_EX_FLAT = @as(u32, 1);
pub const TVIS_EX_DISABLED = @as(u32, 2);
pub const TVIS_EX_ALL = @as(u32, 2);
pub const TVM_INSERTITEMA = @as(u32, 4352);
pub const TVM_INSERTITEMW = @as(u32, 4402);
pub const TVM_INSERTITEM = @as(u32, 4402);
pub const TVM_DELETEITEM = @as(u32, 4353);
pub const TVM_EXPAND = @as(u32, 4354);
pub const TVE_COLLAPSE = @as(u32, 1);
pub const TVE_EXPAND = @as(u32, 2);
pub const TVE_TOGGLE = @as(u32, 3);
pub const TVE_EXPANDPARTIAL = @as(u32, 16384);
pub const TVE_COLLAPSERESET = @as(u32, 32768);
pub const TVM_GETITEMRECT = @as(u32, 4356);
pub const TVM_GETCOUNT = @as(u32, 4357);
pub const TVM_GETINDENT = @as(u32, 4358);
pub const TVM_SETINDENT = @as(u32, 4359);
pub const TVM_GETIMAGELIST = @as(u32, 4360);
pub const TVSIL_NORMAL = @as(u32, 0);
pub const TVSIL_STATE = @as(u32, 2);
pub const TVM_SETIMAGELIST = @as(u32, 4361);
pub const TVM_GETNEXTITEM = @as(u32, 4362);
pub const TVGN_ROOT = @as(u32, 0);
pub const TVGN_NEXT = @as(u32, 1);
pub const TVGN_PREVIOUS = @as(u32, 2);
pub const TVGN_PARENT = @as(u32, 3);
pub const TVGN_CHILD = @as(u32, 4);
pub const TVGN_FIRSTVISIBLE = @as(u32, 5);
pub const TVGN_NEXTVISIBLE = @as(u32, 6);
pub const TVGN_PREVIOUSVISIBLE = @as(u32, 7);
pub const TVGN_DROPHILITE = @as(u32, 8);
pub const TVGN_CARET = @as(u32, 9);
pub const TVGN_LASTVISIBLE = @as(u32, 10);
pub const TVGN_NEXTSELECTED = @as(u32, 11);
pub const TVSI_NOSINGLEEXPAND = @as(u32, 32768);
pub const TVM_SELECTITEM = @as(u32, 4363);
pub const TVM_GETITEMA = @as(u32, 4364);
pub const TVM_GETITEMW = @as(u32, 4414);
pub const TVM_GETITEM = @as(u32, 4414);
pub const TVM_SETITEMA = @as(u32, 4365);
pub const TVM_SETITEMW = @as(u32, 4415);
pub const TVM_SETITEM = @as(u32, 4415);
pub const TVM_EDITLABELA = @as(u32, 4366);
pub const TVM_EDITLABELW = @as(u32, 4417);
pub const TVM_EDITLABEL = @as(u32, 4417);
pub const TVM_GETEDITCONTROL = @as(u32, 4367);
pub const TVM_GETVISIBLECOUNT = @as(u32, 4368);
pub const TVM_HITTEST = @as(u32, 4369);
pub const TVM_CREATEDRAGIMAGE = @as(u32, 4370);
pub const TVM_SORTCHILDREN = @as(u32, 4371);
pub const TVM_ENSUREVISIBLE = @as(u32, 4372);
pub const TVM_SORTCHILDRENCB = @as(u32, 4373);
pub const TVM_ENDEDITLABELNOW = @as(u32, 4374);
pub const TVM_GETISEARCHSTRINGA = @as(u32, 4375);
pub const TVM_GETISEARCHSTRINGW = @as(u32, 4416);
pub const TVM_GETISEARCHSTRING = @as(u32, 4416);
pub const TVM_SETTOOLTIPS = @as(u32, 4376);
pub const TVM_GETTOOLTIPS = @as(u32, 4377);
pub const TVM_SETINSERTMARK = @as(u32, 4378);
pub const TVM_SETUNICODEFORMAT = @as(u32, 8197);
pub const TVM_GETUNICODEFORMAT = @as(u32, 8198);
pub const TVM_SETITEMHEIGHT = @as(u32, 4379);
pub const TVM_GETITEMHEIGHT = @as(u32, 4380);
pub const TVM_SETBKCOLOR = @as(u32, 4381);
pub const TVM_SETTEXTCOLOR = @as(u32, 4382);
pub const TVM_GETBKCOLOR = @as(u32, 4383);
pub const TVM_GETTEXTCOLOR = @as(u32, 4384);
pub const TVM_SETSCROLLTIME = @as(u32, 4385);
pub const TVM_GETSCROLLTIME = @as(u32, 4386);
pub const TVM_SETINSERTMARKCOLOR = @as(u32, 4389);
pub const TVM_GETINSERTMARKCOLOR = @as(u32, 4390);
pub const TVM_SETBORDER = @as(u32, 4387);
pub const TVSBF_XBORDER = @as(u32, 1);
pub const TVSBF_YBORDER = @as(u32, 2);
pub const TVM_GETITEMSTATE = @as(u32, 4391);
pub const TVM_SETLINECOLOR = @as(u32, 4392);
pub const TVM_GETLINECOLOR = @as(u32, 4393);
pub const TVM_MAPACCIDTOHTREEITEM = @as(u32, 4394);
pub const TVM_MAPHTREEITEMTOACCID = @as(u32, 4395);
pub const TVM_SETEXTENDEDSTYLE = @as(u32, 4396);
pub const TVM_GETEXTENDEDSTYLE = @as(u32, 4397);
pub const TVM_SETAUTOSCROLLINFO = @as(u32, 4411);
pub const TVM_SETHOT = @as(u32, 4410);
pub const TVM_GETSELECTEDCOUNT = @as(u32, 4422);
pub const TVM_SHOWINFOTIP = @as(u32, 4423);
pub const TVM_GETITEMPARTRECT = @as(u32, 4424);
pub const TVC_UNKNOWN = @as(u32, 0);
pub const TVC_BYMOUSE = @as(u32, 1);
pub const TVC_BYKEYBOARD = @as(u32, 2);
pub const TVNRET_DEFAULT = @as(u32, 0);
pub const TVNRET_SKIPOLD = @as(u32, 1);
pub const TVNRET_SKIPNEW = @as(u32, 2);
pub const TVCDRF_NOIMAGES = @as(u32, 65536);
pub const CBEM_INSERTITEMA = @as(u32, 1025);
pub const CBEM_SETIMAGELIST = @as(u32, 1026);
pub const CBEM_GETIMAGELIST = @as(u32, 1027);
pub const CBEM_GETITEMA = @as(u32, 1028);
pub const CBEM_SETITEMA = @as(u32, 1029);
pub const CBEM_GETCOMBOCONTROL = @as(u32, 1030);
pub const CBEM_GETEDITCONTROL = @as(u32, 1031);
pub const CBEM_SETEXSTYLE = @as(u32, 1032);
pub const CBEM_SETEXTENDEDSTYLE = @as(u32, 1038);
pub const CBEM_GETEXSTYLE = @as(u32, 1033);
pub const CBEM_GETEXTENDEDSTYLE = @as(u32, 1033);
pub const CBEM_SETUNICODEFORMAT = @as(u32, 8197);
pub const CBEM_GETUNICODEFORMAT = @as(u32, 8198);
pub const CBEM_HASEDITCHANGED = @as(u32, 1034);
pub const CBEM_INSERTITEMW = @as(u32, 1035);
pub const CBEM_SETITEMW = @as(u32, 1036);
pub const CBEM_GETITEMW = @as(u32, 1037);
pub const CBEM_INSERTITEM = @as(u32, 1035);
pub const CBEM_SETITEM = @as(u32, 1036);
pub const CBEM_GETITEM = @as(u32, 1037);
pub const CBEM_SETWINDOWTHEME = @as(u32, 8203);
pub const CBES_EX_NOEDITIMAGE = @as(u32, 1);
pub const CBES_EX_NOEDITIMAGEINDENT = @as(u32, 2);
pub const CBES_EX_PATHWORDBREAKPROC = @as(u32, 4);
pub const CBES_EX_NOSIZELIMIT = @as(u32, 8);
pub const CBES_EX_CASESENSITIVE = @as(u32, 16);
pub const CBES_EX_TEXTENDELLIPSIS = @as(u32, 32);
pub const CBENF_KILLFOCUS = @as(u32, 1);
pub const CBENF_RETURN = @as(u32, 2);
pub const CBENF_ESCAPE = @as(u32, 3);
pub const CBENF_DROPDOWN = @as(u32, 4);
pub const CBEMAXSTRLEN = @as(u32, 260);
pub const TCS_SCROLLOPPOSITE = @as(u32, 1);
pub const TCS_BOTTOM = @as(u32, 2);
pub const TCS_RIGHT = @as(u32, 2);
pub const TCS_MULTISELECT = @as(u32, 4);
pub const TCS_FLATBUTTONS = @as(u32, 8);
pub const TCS_FORCEICONLEFT = @as(u32, 16);
pub const TCS_FORCELABELLEFT = @as(u32, 32);
pub const TCS_HOTTRACK = @as(u32, 64);
pub const TCS_VERTICAL = @as(u32, 128);
pub const TCS_TABS = @as(u32, 0);
pub const TCS_BUTTONS = @as(u32, 256);
pub const TCS_SINGLELINE = @as(u32, 0);
pub const TCS_MULTILINE = @as(u32, 512);
pub const TCS_RIGHTJUSTIFY = @as(u32, 0);
pub const TCS_FIXEDWIDTH = @as(u32, 1024);
pub const TCS_RAGGEDRIGHT = @as(u32, 2048);
pub const TCS_FOCUSONBUTTONDOWN = @as(u32, 4096);
pub const TCS_OWNERDRAWFIXED = @as(u32, 8192);
pub const TCS_TOOLTIPS = @as(u32, 16384);
pub const TCS_FOCUSNEVER = @as(u32, 32768);
pub const TCS_EX_FLATSEPARATORS = @as(u32, 1);
pub const TCS_EX_REGISTERDROP = @as(u32, 2);
pub const TCM_GETIMAGELIST = @as(u32, 4866);
pub const TCM_SETIMAGELIST = @as(u32, 4867);
pub const TCM_GETITEMCOUNT = @as(u32, 4868);
pub const TCIS_BUTTONPRESSED = @as(u32, 1);
pub const TCIS_HIGHLIGHTED = @as(u32, 2);
pub const TCM_GETITEMA = @as(u32, 4869);
pub const TCM_GETITEMW = @as(u32, 4924);
pub const TCM_GETITEM = @as(u32, 4924);
pub const TCM_SETITEMA = @as(u32, 4870);
pub const TCM_SETITEMW = @as(u32, 4925);
pub const TCM_SETITEM = @as(u32, 4925);
pub const TCM_INSERTITEMA = @as(u32, 4871);
pub const TCM_INSERTITEMW = @as(u32, 4926);
pub const TCM_INSERTITEM = @as(u32, 4926);
pub const TCM_DELETEITEM = @as(u32, 4872);
pub const TCM_DELETEALLITEMS = @as(u32, 4873);
pub const TCM_GETITEMRECT = @as(u32, 4874);
pub const TCM_GETCURSEL = @as(u32, 4875);
pub const TCM_SETCURSEL = @as(u32, 4876);
pub const TCM_HITTEST = @as(u32, 4877);
pub const TCM_SETITEMEXTRA = @as(u32, 4878);
pub const TCM_ADJUSTRECT = @as(u32, 4904);
pub const TCM_SETITEMSIZE = @as(u32, 4905);
pub const TCM_REMOVEIMAGE = @as(u32, 4906);
pub const TCM_SETPADDING = @as(u32, 4907);
pub const TCM_GETROWCOUNT = @as(u32, 4908);
pub const TCM_GETTOOLTIPS = @as(u32, 4909);
pub const TCM_SETTOOLTIPS = @as(u32, 4910);
pub const TCM_GETCURFOCUS = @as(u32, 4911);
pub const TCM_SETCURFOCUS = @as(u32, 4912);
pub const TCM_SETMINTABWIDTH = @as(u32, 4913);
pub const TCM_DESELECTALL = @as(u32, 4914);
pub const TCM_HIGHLIGHTITEM = @as(u32, 4915);
pub const TCM_SETEXTENDEDSTYLE = @as(u32, 4916);
pub const TCM_GETEXTENDEDSTYLE = @as(u32, 4917);
pub const TCM_SETUNICODEFORMAT = @as(u32, 8197);
pub const TCM_GETUNICODEFORMAT = @as(u32, 8198);
pub const ACS_CENTER = @as(u32, 1);
pub const ACS_TRANSPARENT = @as(u32, 2);
pub const ACS_AUTOPLAY = @as(u32, 4);
pub const ACS_TIMER = @as(u32, 8);
pub const ACM_OPENA = @as(u32, 1124);
pub const ACM_OPENW = @as(u32, 1127);
pub const ACM_OPEN = @as(u32, 1127);
pub const ACM_PLAY = @as(u32, 1125);
pub const ACM_STOP = @as(u32, 1126);
pub const ACM_ISPLAYING = @as(u32, 1128);
pub const ACN_START = @as(u32, 1);
pub const ACN_STOP = @as(u32, 2);
pub const MCM_FIRST = @as(u32, 4096);
pub const MCM_GETCURSEL = @as(u32, 4097);
pub const MCM_SETCURSEL = @as(u32, 4098);
pub const MCM_GETMAXSELCOUNT = @as(u32, 4099);
pub const MCM_SETMAXSELCOUNT = @as(u32, 4100);
pub const MCM_GETSELRANGE = @as(u32, 4101);
pub const MCM_SETSELRANGE = @as(u32, 4102);
pub const MCM_GETMONTHRANGE = @as(u32, 4103);
pub const MCM_SETDAYSTATE = @as(u32, 4104);
pub const MCM_GETMINREQRECT = @as(u32, 4105);
pub const MCM_SETCOLOR = @as(u32, 4106);
pub const MCM_GETCOLOR = @as(u32, 4107);
pub const MCSC_BACKGROUND = @as(u32, 0);
pub const MCSC_TEXT = @as(u32, 1);
pub const MCSC_TITLEBK = @as(u32, 2);
pub const MCSC_TITLETEXT = @as(u32, 3);
pub const MCSC_MONTHBK = @as(u32, 4);
pub const MCSC_TRAILINGTEXT = @as(u32, 5);
pub const MCM_SETTODAY = @as(u32, 4108);
pub const MCM_GETTODAY = @as(u32, 4109);
pub const MCM_HITTEST = @as(u32, 4110);
pub const MCHT_TITLE = @as(u32, 65536);
pub const MCHT_CALENDAR = @as(u32, 131072);
pub const MCHT_TODAYLINK = @as(u32, 196608);
pub const MCHT_CALENDARCONTROL = @as(u32, 1048576);
pub const MCHT_NEXT = @as(u32, 16777216);
pub const MCHT_PREV = @as(u32, 33554432);
pub const MCHT_NOWHERE = @as(u32, 0);
pub const MCHT_TITLEBK = @as(u32, 65536);
pub const MCHT_CALENDARBK = @as(u32, 131072);
pub const MCM_SETFIRSTDAYOFWEEK = @as(u32, 4111);
pub const MCM_GETFIRSTDAYOFWEEK = @as(u32, 4112);
pub const MCM_GETRANGE = @as(u32, 4113);
pub const MCM_SETRANGE = @as(u32, 4114);
pub const MCM_GETMONTHDELTA = @as(u32, 4115);
pub const MCM_SETMONTHDELTA = @as(u32, 4116);
pub const MCM_GETMAXTODAYWIDTH = @as(u32, 4117);
pub const MCM_SETUNICODEFORMAT = @as(u32, 8197);
pub const MCM_GETUNICODEFORMAT = @as(u32, 8198);
pub const MCMV_MONTH = @as(u32, 0);
pub const MCMV_YEAR = @as(u32, 1);
pub const MCMV_DECADE = @as(u32, 2);
pub const MCMV_CENTURY = @as(u32, 3);
pub const MCMV_MAX = @as(u32, 3);
pub const MCM_GETCURRENTVIEW = @as(u32, 4118);
pub const MCM_GETCALENDARCOUNT = @as(u32, 4119);
pub const MCM_GETCALENDARGRIDINFO = @as(u32, 4120);
pub const MCM_GETCALID = @as(u32, 4123);
pub const MCM_SETCALID = @as(u32, 4124);
pub const MCM_SIZERECTTOMIN = @as(u32, 4125);
pub const MCM_SETCALENDARBORDER = @as(u32, 4126);
pub const MCM_GETCALENDARBORDER = @as(u32, 4127);
pub const MCM_SETCURRENTVIEW = @as(u32, 4128);
pub const MCS_DAYSTATE = @as(u32, 1);
pub const MCS_MULTISELECT = @as(u32, 2);
pub const MCS_WEEKNUMBERS = @as(u32, 4);
pub const MCS_NOTODAYCIRCLE = @as(u32, 8);
pub const MCS_NOTODAY = @as(u32, 16);
pub const MCS_NOTRAILINGDATES = @as(u32, 64);
pub const MCS_SHORTDAYSOFWEEK = @as(u32, 128);
pub const MCS_NOSELCHANGEONNAV = @as(u32, 256);
pub const GMR_VISIBLE = @as(u32, 0);
pub const GMR_DAYSTATE = @as(u32, 1);
pub const DTM_FIRST = @as(u32, 4096);
pub const DTM_GETSYSTEMTIME = @as(u32, 4097);
pub const DTM_SETSYSTEMTIME = @as(u32, 4098);
pub const DTM_GETRANGE = @as(u32, 4099);
pub const DTM_SETRANGE = @as(u32, 4100);
pub const DTM_SETFORMATA = @as(u32, 4101);
pub const DTM_SETFORMATW = @as(u32, 4146);
pub const DTM_SETFORMAT = @as(u32, 4146);
pub const DTM_SETMCCOLOR = @as(u32, 4102);
pub const DTM_GETMCCOLOR = @as(u32, 4103);
pub const DTM_GETMONTHCAL = @as(u32, 4104);
pub const DTM_SETMCFONT = @as(u32, 4105);
pub const DTM_GETMCFONT = @as(u32, 4106);
pub const DTM_SETMCSTYLE = @as(u32, 4107);
pub const DTM_GETMCSTYLE = @as(u32, 4108);
pub const DTM_CLOSEMONTHCAL = @as(u32, 4109);
pub const DTM_GETDATETIMEPICKERINFO = @as(u32, 4110);
pub const DTM_GETIDEALSIZE = @as(u32, 4111);
pub const DTS_UPDOWN = @as(u32, 1);
pub const DTS_SHOWNONE = @as(u32, 2);
pub const DTS_SHORTDATEFORMAT = @as(u32, 0);
pub const DTS_LONGDATEFORMAT = @as(u32, 4);
pub const DTS_SHORTDATECENTURYFORMAT = @as(u32, 12);
pub const DTS_TIMEFORMAT = @as(u32, 9);
pub const DTS_APPCANPARSE = @as(u32, 16);
pub const DTS_RIGHTALIGN = @as(u32, 32);
pub const GDTR_MIN = @as(u32, 1);
pub const GDTR_MAX = @as(u32, 2);
pub const GDT_ERROR = @as(i32, -1);
pub const GDT_VALID = @as(u32, 0);
pub const GDT_NONE = @as(u32, 1);
pub const IPM_CLEARADDRESS = @as(u32, 1124);
pub const IPM_SETADDRESS = @as(u32, 1125);
pub const IPM_GETADDRESS = @as(u32, 1126);
pub const IPM_SETRANGE = @as(u32, 1127);
pub const IPM_SETFOCUS = @as(u32, 1128);
pub const IPM_ISBLANK = @as(u32, 1129);
pub const PGS_VERT = @as(u32, 0);
pub const PGS_HORZ = @as(u32, 1);
pub const PGS_AUTOSCROLL = @as(u32, 2);
pub const PGS_DRAGNDROP = @as(u32, 4);
pub const PGF_INVISIBLE = @as(u32, 0);
pub const PGF_NORMAL = @as(u32, 1);
pub const PGF_GRAYED = @as(u32, 2);
pub const PGF_DEPRESSED = @as(u32, 4);
pub const PGF_HOT = @as(u32, 8);
pub const PGB_TOPORLEFT = @as(u32, 0);
pub const PGB_BOTTOMORRIGHT = @as(u32, 1);
pub const PGM_SETCHILD = @as(u32, 5121);
pub const PGM_RECALCSIZE = @as(u32, 5122);
pub const PGM_FORWARDMOUSE = @as(u32, 5123);
pub const PGM_SETBKCOLOR = @as(u32, 5124);
pub const PGM_GETBKCOLOR = @as(u32, 5125);
pub const PGM_SETBORDER = @as(u32, 5126);
pub const PGM_GETBORDER = @as(u32, 5127);
pub const PGM_SETPOS = @as(u32, 5128);
pub const PGM_GETPOS = @as(u32, 5129);
pub const PGM_SETBUTTONSIZE = @as(u32, 5130);
pub const PGM_GETBUTTONSIZE = @as(u32, 5131);
pub const PGM_GETBUTTONSTATE = @as(u32, 5132);
pub const PGM_GETDROPTARGET = @as(u32, 8196);
pub const PGM_SETSCROLLINFO = @as(u32, 5133);
pub const NFS_EDIT = @as(u32, 1);
pub const NFS_STATIC = @as(u32, 2);
pub const NFS_LISTCOMBO = @as(u32, 4);
pub const NFS_BUTTON = @as(u32, 8);
pub const NFS_ALL = @as(u32, 16);
pub const NFS_USEFONTASSOC = @as(u32, 32);
pub const BCM_GETIDEALSIZE = @as(u32, 5633);
pub const BCM_SETIMAGELIST = @as(u32, 5634);
pub const BCM_GETIMAGELIST = @as(u32, 5635);
pub const BCM_SETTEXTMARGIN = @as(u32, 5636);
pub const BCM_GETTEXTMARGIN = @as(u32, 5637);
pub const BCN_HOTITEMCHANGE = @as(u32, 4294966047);
pub const BST_HOT = @as(u32, 512);
pub const BST_DROPDOWNPUSHED = @as(u32, 1024);
pub const BS_SPLITBUTTON = @as(i32, 12);
pub const BS_DEFSPLITBUTTON = @as(i32, 13);
pub const BS_COMMANDLINK = @as(i32, 14);
pub const BS_DEFCOMMANDLINK = @as(i32, 15);
pub const BCSIF_GLYPH = @as(u32, 1);
pub const BCSIF_IMAGE = @as(u32, 2);
pub const BCSIF_STYLE = @as(u32, 4);
pub const BCSIF_SIZE = @as(u32, 8);
pub const BCSS_NOSPLIT = @as(u32, 1);
pub const BCSS_STRETCH = @as(u32, 2);
pub const BCSS_ALIGNLEFT = @as(u32, 4);
pub const BCSS_IMAGE = @as(u32, 8);
pub const BCM_SETDROPDOWNSTATE = @as(u32, 5638);
pub const BCM_SETSPLITINFO = @as(u32, 5639);
pub const BCM_GETSPLITINFO = @as(u32, 5640);
pub const BCM_SETNOTE = @as(u32, 5641);
pub const BCM_GETNOTE = @as(u32, 5642);
pub const BCM_GETNOTELENGTH = @as(u32, 5643);
pub const BCM_SETSHIELD = @as(u32, 5644);
pub const BCN_DROPDOWN = @as(u32, 4294966048);
pub const ES_EX_ALLOWEOL_CR = @as(i32, 1);
pub const ES_EX_ALLOWEOL_LF = @as(i32, 2);
pub const ES_EX_CONVERT_EOL_ON_PASTE = @as(i32, 4);
pub const ES_EX_ZOOMABLE = @as(i32, 16);
pub const EM_SETCUEBANNER = @as(u32, 5377);
pub const EM_GETCUEBANNER = @as(u32, 5378);
pub const EM_SHOWBALLOONTIP = @as(u32, 5379);
pub const EM_HIDEBALLOONTIP = @as(u32, 5380);
pub const EM_SETHILITE = @as(u32, 5381);
pub const EM_GETHILITE = @as(u32, 5382);
pub const EM_NOSETFOCUS = @as(u32, 5383);
pub const EM_TAKEFOCUS = @as(u32, 5384);
pub const EM_SETEXTENDEDSTYLE = @as(u32, 5386);
pub const EM_GETEXTENDEDSTYLE = @as(u32, 5387);
pub const EM_SETENDOFLINE = @as(u32, 5388);
pub const EM_GETENDOFLINE = @as(u32, 5389);
pub const EM_ENABLESEARCHWEB = @as(u32, 5390);
pub const EM_SEARCHWEB = @as(u32, 5391);
pub const EM_SETCARETINDEX = @as(u32, 5393);
pub const EM_GETCARETINDEX = @as(u32, 5394);
pub const EM_FILELINEFROMCHAR = @as(u32, 5395);
pub const EM_FILELINEINDEX = @as(u32, 5396);
pub const EM_FILELINELENGTH = @as(u32, 5397);
pub const EM_GETFILELINE = @as(u32, 5398);
pub const EM_GETFILELINECOUNT = @as(u32, 5399);
pub const CB_SETMINVISIBLE = @as(u32, 5889);
pub const CB_GETMINVISIBLE = @as(u32, 5890);
pub const CB_SETCUEBANNER = @as(u32, 5891);
pub const CB_GETCUEBANNER = @as(u32, 5892);
pub const WM_MOUSEHOVER = @as(u32, 673);
pub const WM_MOUSELEAVE = @as(u32, 675);
pub const HOVER_DEFAULT = @as(u32, 4294967295);
pub const WSB_PROP_MASK = @as(i32, 4095);
pub const FSB_FLAT_MODE = @as(u32, 2);
pub const FSB_ENCARTA_MODE = @as(u32, 1);
pub const FSB_REGULAR_MODE = @as(u32, 0);
pub const CCHCCCLASS = @as(u32, 32);
pub const CCHCCDESC = @as(u32, 32);
pub const CCHCCTEXT = @as(u32, 256);
pub const CCF_NOTEXT = @as(u32, 1);
pub const EM_GETSEL = @as(u32, 176);
pub const EM_SETSEL = @as(u32, 177);
pub const EM_GETRECT = @as(u32, 178);
pub const EM_SETRECT = @as(u32, 179);
pub const EM_SETRECTNP = @as(u32, 180);
pub const EM_SCROLL = @as(u32, 181);
pub const EM_LINESCROLL = @as(u32, 182);
pub const EM_GETMODIFY = @as(u32, 184);
pub const EM_SETMODIFY = @as(u32, 185);
pub const EM_GETLINECOUNT = @as(u32, 186);
pub const EM_LINEINDEX = @as(u32, 187);
pub const EM_SETHANDLE = @as(u32, 188);
pub const EM_GETHANDLE = @as(u32, 189);
pub const EM_GETTHUMB = @as(u32, 190);
pub const EM_LINELENGTH = @as(u32, 193);
pub const EM_REPLACESEL = @as(u32, 194);
pub const EM_GETLINE = @as(u32, 196);
pub const EM_LIMITTEXT = @as(u32, 197);
pub const EM_CANUNDO = @as(u32, 198);
pub const EM_UNDO = @as(u32, 199);
pub const EM_FMTLINES = @as(u32, 200);
pub const EM_LINEFROMCHAR = @as(u32, 201);
pub const EM_SETTABSTOPS = @as(u32, 203);
pub const EM_SETPASSWORDCHAR = @as(u32, 204);
pub const EM_EMPTYUNDOBUFFER = @as(u32, 205);
pub const EM_GETFIRSTVISIBLELINE = @as(u32, 206);
pub const EM_SETREADONLY = @as(u32, 207);
pub const EM_SETWORDBREAKPROC = @as(u32, 208);
pub const EM_GETWORDBREAKPROC = @as(u32, 209);
pub const EM_GETPASSWORDCHAR = @as(u32, 210);
pub const EM_SETMARGINS = @as(u32, 211);
pub const EM_GETMARGINS = @as(u32, 212);
pub const EM_SETIMESTATUS = @as(u32, 216);
pub const EM_GETIMESTATUS = @as(u32, 217);
pub const EM_ENABLEFEATURE = @as(u32, 218);

//--------------------------------------------------------------------------------
// Section: Types (368)
//--------------------------------------------------------------------------------
pub const THEME_PROPERTY_SYMBOL_ID = enum(u32) {
    RESERVEDLOW = 0,
    RESERVEDHIGH = 7999,
    DIBDATA = 2,
    GLYPHDIBDATA = 8,
    ENUM = 200,
    STRING = 201,
    INT = 202,
    BOOL = 203,
    COLOR = 204,
    MARGINS = 205,
    FILENAME = 206,
    SIZE = 207,
    POSITION = 208,
    RECT = 209,
    FONT = 210,
    INTLIST = 211,
    HBITMAP = 212,
    DISKSTREAM = 213,
    STREAM = 214,
    BITMAPREF = 215,
    FLOAT = 216,
    FLOATLIST = 217,
    COLORSCHEMES = 401,
    SIZES = 402,
    CHARSET = 403,
    NAME = 600,
    DISPLAYNAME = 601,
    TOOLTIP = 602,
    COMPANY = 603,
    AUTHOR = 604,
    COPYRIGHT = 605,
    URL = 606,
    VERSION = 607,
    DESCRIPTION = 608,
    // FIRST_RCSTRING_NAME = 601, this enum value conflicts with DISPLAYNAME
    // LAST_RCSTRING_NAME = 608, this enum value conflicts with DESCRIPTION
    CAPTIONFONT = 801,
    SMALLCAPTIONFONT = 802,
    MENUFONT = 803,
    STATUSFONT = 804,
    MSGBOXFONT = 805,
    ICONTITLEFONT = 806,
    HEADING1FONT = 807,
    HEADING2FONT = 808,
    BODYFONT = 809,
    // FIRSTFONT = 801, this enum value conflicts with CAPTIONFONT
    // LASTFONT = 809, this enum value conflicts with BODYFONT
    FLATMENUS = 1001,
    // FIRSTBOOL = 1001, this enum value conflicts with FLATMENUS
    // LASTBOOL = 1001, this enum value conflicts with FLATMENUS
    SIZINGBORDERWIDTH = 1201,
    SCROLLBARWIDTH = 1202,
    SCROLLBARHEIGHT = 1203,
    CAPTIONBARWIDTH = 1204,
    CAPTIONBARHEIGHT = 1205,
    SMCAPTIONBARWIDTH = 1206,
    SMCAPTIONBARHEIGHT = 1207,
    MENUBARWIDTH = 1208,
    MENUBARHEIGHT = 1209,
    PADDEDBORDERWIDTH = 1210,
    // FIRSTSIZE = 1201, this enum value conflicts with SIZINGBORDERWIDTH
    // LASTSIZE = 1210, this enum value conflicts with PADDEDBORDERWIDTH
    MINCOLORDEPTH = 1301,
    // FIRSTINT = 1301, this enum value conflicts with MINCOLORDEPTH
    // LASTINT = 1301, this enum value conflicts with MINCOLORDEPTH
    CSSNAME = 1401,
    XMLNAME = 1402,
    LASTUPDATED = 1403,
    ALIAS = 1404,
    // FIRSTSTRING = 1401, this enum value conflicts with CSSNAME
    // LASTSTRING = 1404, this enum value conflicts with ALIAS
    SCROLLBAR = 1601,
    BACKGROUND = 1602,
    ACTIVECAPTION = 1603,
    INACTIVECAPTION = 1604,
    MENU = 1605,
    WINDOW = 1606,
    WINDOWFRAME = 1607,
    MENUTEXT = 1608,
    WINDOWTEXT = 1609,
    CAPTIONTEXT = 1610,
    ACTIVEBORDER = 1611,
    INACTIVEBORDER = 1612,
    APPWORKSPACE = 1613,
    HIGHLIGHT = 1614,
    HIGHLIGHTTEXT = 1615,
    BTNFACE = 1616,
    BTNSHADOW = 1617,
    GRAYTEXT = 1618,
    BTNTEXT = 1619,
    INACTIVECAPTIONTEXT = 1620,
    BTNHIGHLIGHT = 1621,
    DKSHADOW3D = 1622,
    LIGHT3D = 1623,
    INFOTEXT = 1624,
    INFOBK = 1625,
    BUTTONALTERNATEFACE = 1626,
    HOTTRACKING = 1627,
    GRADIENTACTIVECAPTION = 1628,
    GRADIENTINACTIVECAPTION = 1629,
    MENUHILIGHT = 1630,
    MENUBAR = 1631,
    // FIRSTCOLOR = 1601, this enum value conflicts with SCROLLBAR
    // LASTCOLOR = 1631, this enum value conflicts with MENUBAR
    FROMHUE1 = 1801,
    FROMHUE2 = 1802,
    FROMHUE3 = 1803,
    FROMHUE4 = 1804,
    FROMHUE5 = 1805,
    TOHUE1 = 1806,
    TOHUE2 = 1807,
    TOHUE3 = 1808,
    TOHUE4 = 1809,
    TOHUE5 = 1810,
    FROMCOLOR1 = 2001,
    FROMCOLOR2 = 2002,
    FROMCOLOR3 = 2003,
    FROMCOLOR4 = 2004,
    FROMCOLOR5 = 2005,
    TOCOLOR1 = 2006,
    TOCOLOR2 = 2007,
    TOCOLOR3 = 2008,
    TOCOLOR4 = 2009,
    TOCOLOR5 = 2010,
    TRANSPARENT = 2201,
    AUTOSIZE = 2202,
    BORDERONLY = 2203,
    COMPOSITED = 2204,
    BGFILL = 2205,
    GLYPHTRANSPARENT = 2206,
    GLYPHONLY = 2207,
    ALWAYSSHOWSIZINGBAR = 2208,
    MIRRORIMAGE = 2209,
    UNIFORMSIZING = 2210,
    INTEGRALSIZING = 2211,
    SOURCEGROW = 2212,
    SOURCESHRINK = 2213,
    DRAWBORDERS = 2214,
    NOETCHEDEFFECT = 2215,
    TEXTAPPLYOVERLAY = 2216,
    TEXTGLOW = 2217,
    TEXTITALIC = 2218,
    COMPOSITEDOPAQUE = 2219,
    LOCALIZEDMIRRORIMAGE = 2220,
    IMAGECOUNT = 2401,
    ALPHALEVEL = 2402,
    BORDERSIZE = 2403,
    ROUNDCORNERWIDTH = 2404,
    ROUNDCORNERHEIGHT = 2405,
    GRADIENTRATIO1 = 2406,
    GRADIENTRATIO2 = 2407,
    GRADIENTRATIO3 = 2408,
    GRADIENTRATIO4 = 2409,
    GRADIENTRATIO5 = 2410,
    PROGRESSCHUNKSIZE = 2411,
    PROGRESSSPACESIZE = 2412,
    SATURATION = 2413,
    TEXTBORDERSIZE = 2414,
    ALPHATHRESHOLD = 2415,
    WIDTH = 2416,
    HEIGHT = 2417,
    GLYPHINDEX = 2418,
    TRUESIZESTRETCHMARK = 2419,
    MINDPI1 = 2420,
    MINDPI2 = 2421,
    MINDPI3 = 2422,
    MINDPI4 = 2423,
    MINDPI5 = 2424,
    TEXTGLOWSIZE = 2425,
    FRAMESPERSECOND = 2426,
    PIXELSPERFRAME = 2427,
    ANIMATIONDELAY = 2428,
    GLOWINTENSITY = 2429,
    OPACITY = 2430,
    COLORIZATIONCOLOR = 2431,
    COLORIZATIONOPACITY = 2432,
    MINDPI6 = 2433,
    MINDPI7 = 2434,
    GLYPHFONT = 2601,
    IMAGEFILE = 3001,
    IMAGEFILE1 = 3002,
    IMAGEFILE2 = 3003,
    IMAGEFILE3 = 3004,
    IMAGEFILE4 = 3005,
    IMAGEFILE5 = 3006,
    GLYPHIMAGEFILE = 3008,
    IMAGEFILE6 = 3009,
    IMAGEFILE7 = 3010,
    TEXT = 3201,
    CLASSICVALUE = 3202,
    OFFSET = 3401,
    TEXTSHADOWOFFSET = 3402,
    MINSIZE = 3403,
    MINSIZE1 = 3404,
    MINSIZE2 = 3405,
    MINSIZE3 = 3406,
    MINSIZE4 = 3407,
    MINSIZE5 = 3408,
    NORMALSIZE = 3409,
    MINSIZE6 = 3410,
    MINSIZE7 = 3411,
    SIZINGMARGINS = 3601,
    CONTENTMARGINS = 3602,
    CAPTIONMARGINS = 3603,
    BORDERCOLOR = 3801,
    FILLCOLOR = 3802,
    TEXTCOLOR = 3803,
    EDGELIGHTCOLOR = 3804,
    EDGEHIGHLIGHTCOLOR = 3805,
    EDGESHADOWCOLOR = 3806,
    EDGEDKSHADOWCOLOR = 3807,
    EDGEFILLCOLOR = 3808,
    TRANSPARENTCOLOR = 3809,
    GRADIENTCOLOR1 = 3810,
    GRADIENTCOLOR2 = 3811,
    GRADIENTCOLOR3 = 3812,
    GRADIENTCOLOR4 = 3813,
    GRADIENTCOLOR5 = 3814,
    SHADOWCOLOR = 3815,
    GLOWCOLOR = 3816,
    TEXTBORDERCOLOR = 3817,
    TEXTSHADOWCOLOR = 3818,
    GLYPHTEXTCOLOR = 3819,
    GLYPHTRANSPARENTCOLOR = 3820,
    FILLCOLORHINT = 3821,
    BORDERCOLORHINT = 3822,
    ACCENTCOLORHINT = 3823,
    TEXTCOLORHINT = 3824,
    HEADING1TEXTCOLOR = 3825,
    HEADING2TEXTCOLOR = 3826,
    BODYTEXTCOLOR = 3827,
    BGTYPE = 4001,
    BORDERTYPE = 4002,
    FILLTYPE = 4003,
    SIZINGTYPE = 4004,
    HALIGN = 4005,
    CONTENTALIGNMENT = 4006,
    VALIGN = 4007,
    OFFSETTYPE = 4008,
    ICONEFFECT = 4009,
    TEXTSHADOWTYPE = 4010,
    IMAGELAYOUT = 4011,
    GLYPHTYPE = 4012,
    IMAGESELECTTYPE = 4013,
    GLYPHFONTSIZINGTYPE = 4014,
    TRUESIZESCALINGTYPE = 4015,
    USERPICTURE = 5001,
    DEFAULTPANESIZE = 5002,
    BLENDCOLOR = 5003,
    CUSTOMSPLITRECT = 5004,
    ANIMATIONBUTTONRECT = 5005,
    ANIMATIONDURATION = 5006,
    TRANSITIONDURATIONS = 6000,
    SCALEDBACKGROUND = 7001,
    ATLASIMAGE = 8000,
    ATLASINPUTIMAGE = 8001,
    ATLASRECT = 8002,
};
pub const TMT_RESERVEDLOW = THEME_PROPERTY_SYMBOL_ID.RESERVEDLOW;
pub const TMT_RESERVEDHIGH = THEME_PROPERTY_SYMBOL_ID.RESERVEDHIGH;
pub const TMT_DIBDATA = THEME_PROPERTY_SYMBOL_ID.DIBDATA;
pub const TMT_GLYPHDIBDATA = THEME_PROPERTY_SYMBOL_ID.GLYPHDIBDATA;
pub const TMT_ENUM = THEME_PROPERTY_SYMBOL_ID.ENUM;
pub const TMT_STRING = THEME_PROPERTY_SYMBOL_ID.STRING;
pub const TMT_INT = THEME_PROPERTY_SYMBOL_ID.INT;
pub const TMT_BOOL = THEME_PROPERTY_SYMBOL_ID.BOOL;
pub const TMT_COLOR = THEME_PROPERTY_SYMBOL_ID.COLOR;
pub const TMT_MARGINS = THEME_PROPERTY_SYMBOL_ID.MARGINS;
pub const TMT_FILENAME = THEME_PROPERTY_SYMBOL_ID.FILENAME;
pub const TMT_SIZE = THEME_PROPERTY_SYMBOL_ID.SIZE;
pub const TMT_POSITION = THEME_PROPERTY_SYMBOL_ID.POSITION;
pub const TMT_RECT = THEME_PROPERTY_SYMBOL_ID.RECT;
pub const TMT_FONT = THEME_PROPERTY_SYMBOL_ID.FONT;
pub const TMT_INTLIST = THEME_PROPERTY_SYMBOL_ID.INTLIST;
pub const TMT_HBITMAP = THEME_PROPERTY_SYMBOL_ID.HBITMAP;
pub const TMT_DISKSTREAM = THEME_PROPERTY_SYMBOL_ID.DISKSTREAM;
pub const TMT_STREAM = THEME_PROPERTY_SYMBOL_ID.STREAM;
pub const TMT_BITMAPREF = THEME_PROPERTY_SYMBOL_ID.BITMAPREF;
pub const TMT_FLOAT = THEME_PROPERTY_SYMBOL_ID.FLOAT;
pub const TMT_FLOATLIST = THEME_PROPERTY_SYMBOL_ID.FLOATLIST;
pub const TMT_COLORSCHEMES = THEME_PROPERTY_SYMBOL_ID.COLORSCHEMES;
pub const TMT_SIZES = THEME_PROPERTY_SYMBOL_ID.SIZES;
pub const TMT_CHARSET = THEME_PROPERTY_SYMBOL_ID.CHARSET;
pub const TMT_NAME = THEME_PROPERTY_SYMBOL_ID.NAME;
pub const TMT_DISPLAYNAME = THEME_PROPERTY_SYMBOL_ID.DISPLAYNAME;
pub const TMT_TOOLTIP = THEME_PROPERTY_SYMBOL_ID.TOOLTIP;
pub const TMT_COMPANY = THEME_PROPERTY_SYMBOL_ID.COMPANY;
pub const TMT_AUTHOR = THEME_PROPERTY_SYMBOL_ID.AUTHOR;
pub const TMT_COPYRIGHT = THEME_PROPERTY_SYMBOL_ID.COPYRIGHT;
pub const TMT_URL = THEME_PROPERTY_SYMBOL_ID.URL;
pub const TMT_VERSION = THEME_PROPERTY_SYMBOL_ID.VERSION;
pub const TMT_DESCRIPTION = THEME_PROPERTY_SYMBOL_ID.DESCRIPTION;
pub const TMT_FIRST_RCSTRING_NAME = THEME_PROPERTY_SYMBOL_ID.DISPLAYNAME;
pub const TMT_LAST_RCSTRING_NAME = THEME_PROPERTY_SYMBOL_ID.DESCRIPTION;
pub const TMT_CAPTIONFONT = THEME_PROPERTY_SYMBOL_ID.CAPTIONFONT;
pub const TMT_SMALLCAPTIONFONT = THEME_PROPERTY_SYMBOL_ID.SMALLCAPTIONFONT;
pub const TMT_MENUFONT = THEME_PROPERTY_SYMBOL_ID.MENUFONT;
pub const TMT_STATUSFONT = THEME_PROPERTY_SYMBOL_ID.STATUSFONT;
pub const TMT_MSGBOXFONT = THEME_PROPERTY_SYMBOL_ID.MSGBOXFONT;
pub const TMT_ICONTITLEFONT = THEME_PROPERTY_SYMBOL_ID.ICONTITLEFONT;
pub const TMT_HEADING1FONT = THEME_PROPERTY_SYMBOL_ID.HEADING1FONT;
pub const TMT_HEADING2FONT = THEME_PROPERTY_SYMBOL_ID.HEADING2FONT;
pub const TMT_BODYFONT = THEME_PROPERTY_SYMBOL_ID.BODYFONT;
pub const TMT_FIRSTFONT = THEME_PROPERTY_SYMBOL_ID.CAPTIONFONT;
pub const TMT_LASTFONT = THEME_PROPERTY_SYMBOL_ID.BODYFONT;
pub const TMT_FLATMENUS = THEME_PROPERTY_SYMBOL_ID.FLATMENUS;
pub const TMT_FIRSTBOOL = THEME_PROPERTY_SYMBOL_ID.FLATMENUS;
pub const TMT_LASTBOOL = THEME_PROPERTY_SYMBOL_ID.FLATMENUS;
pub const TMT_SIZINGBORDERWIDTH = THEME_PROPERTY_SYMBOL_ID.SIZINGBORDERWIDTH;
pub const TMT_SCROLLBARWIDTH = THEME_PROPERTY_SYMBOL_ID.SCROLLBARWIDTH;
pub const TMT_SCROLLBARHEIGHT = THEME_PROPERTY_SYMBOL_ID.SCROLLBARHEIGHT;
pub const TMT_CAPTIONBARWIDTH = THEME_PROPERTY_SYMBOL_ID.CAPTIONBARWIDTH;
pub const TMT_CAPTIONBARHEIGHT = THEME_PROPERTY_SYMBOL_ID.CAPTIONBARHEIGHT;
pub const TMT_SMCAPTIONBARWIDTH = THEME_PROPERTY_SYMBOL_ID.SMCAPTIONBARWIDTH;
pub const TMT_SMCAPTIONBARHEIGHT = THEME_PROPERTY_SYMBOL_ID.SMCAPTIONBARHEIGHT;
pub const TMT_MENUBARWIDTH = THEME_PROPERTY_SYMBOL_ID.MENUBARWIDTH;
pub const TMT_MENUBARHEIGHT = THEME_PROPERTY_SYMBOL_ID.MENUBARHEIGHT;
pub const TMT_PADDEDBORDERWIDTH = THEME_PROPERTY_SYMBOL_ID.PADDEDBORDERWIDTH;
pub const TMT_FIRSTSIZE = THEME_PROPERTY_SYMBOL_ID.SIZINGBORDERWIDTH;
pub const TMT_LASTSIZE = THEME_PROPERTY_SYMBOL_ID.PADDEDBORDERWIDTH;
pub const TMT_MINCOLORDEPTH = THEME_PROPERTY_SYMBOL_ID.MINCOLORDEPTH;
pub const TMT_FIRSTINT = THEME_PROPERTY_SYMBOL_ID.MINCOLORDEPTH;
pub const TMT_LASTINT = THEME_PROPERTY_SYMBOL_ID.MINCOLORDEPTH;
pub const TMT_CSSNAME = THEME_PROPERTY_SYMBOL_ID.CSSNAME;
pub const TMT_XMLNAME = THEME_PROPERTY_SYMBOL_ID.XMLNAME;
pub const TMT_LASTUPDATED = THEME_PROPERTY_SYMBOL_ID.LASTUPDATED;
pub const TMT_ALIAS = THEME_PROPERTY_SYMBOL_ID.ALIAS;
pub const TMT_FIRSTSTRING = THEME_PROPERTY_SYMBOL_ID.CSSNAME;
pub const TMT_LASTSTRING = THEME_PROPERTY_SYMBOL_ID.ALIAS;
pub const TMT_SCROLLBAR = THEME_PROPERTY_SYMBOL_ID.SCROLLBAR;
pub const TMT_BACKGROUND = THEME_PROPERTY_SYMBOL_ID.BACKGROUND;
pub const TMT_ACTIVECAPTION = THEME_PROPERTY_SYMBOL_ID.ACTIVECAPTION;
pub const TMT_INACTIVECAPTION = THEME_PROPERTY_SYMBOL_ID.INACTIVECAPTION;
pub const TMT_MENU = THEME_PROPERTY_SYMBOL_ID.MENU;
pub const TMT_WINDOW = THEME_PROPERTY_SYMBOL_ID.WINDOW;
pub const TMT_WINDOWFRAME = THEME_PROPERTY_SYMBOL_ID.WINDOWFRAME;
pub const TMT_MENUTEXT = THEME_PROPERTY_SYMBOL_ID.MENUTEXT;
pub const TMT_WINDOWTEXT = THEME_PROPERTY_SYMBOL_ID.WINDOWTEXT;
pub const TMT_CAPTIONTEXT = THEME_PROPERTY_SYMBOL_ID.CAPTIONTEXT;
pub const TMT_ACTIVEBORDER = THEME_PROPERTY_SYMBOL_ID.ACTIVEBORDER;
pub const TMT_INACTIVEBORDER = THEME_PROPERTY_SYMBOL_ID.INACTIVEBORDER;
pub const TMT_APPWORKSPACE = THEME_PROPERTY_SYMBOL_ID.APPWORKSPACE;
pub const TMT_HIGHLIGHT = THEME_PROPERTY_SYMBOL_ID.HIGHLIGHT;
pub const TMT_HIGHLIGHTTEXT = THEME_PROPERTY_SYMBOL_ID.HIGHLIGHTTEXT;
pub const TMT_BTNFACE = THEME_PROPERTY_SYMBOL_ID.BTNFACE;
pub const TMT_BTNSHADOW = THEME_PROPERTY_SYMBOL_ID.BTNSHADOW;
pub const TMT_GRAYTEXT = THEME_PROPERTY_SYMBOL_ID.GRAYTEXT;
pub const TMT_BTNTEXT = THEME_PROPERTY_SYMBOL_ID.BTNTEXT;
pub const TMT_INACTIVECAPTIONTEXT = THEME_PROPERTY_SYMBOL_ID.INACTIVECAPTIONTEXT;
pub const TMT_BTNHIGHLIGHT = THEME_PROPERTY_SYMBOL_ID.BTNHIGHLIGHT;
pub const TMT_DKSHADOW3D = THEME_PROPERTY_SYMBOL_ID.DKSHADOW3D;
pub const TMT_LIGHT3D = THEME_PROPERTY_SYMBOL_ID.LIGHT3D;
pub const TMT_INFOTEXT = THEME_PROPERTY_SYMBOL_ID.INFOTEXT;
pub const TMT_INFOBK = THEME_PROPERTY_SYMBOL_ID.INFOBK;
pub const TMT_BUTTONALTERNATEFACE = THEME_PROPERTY_SYMBOL_ID.BUTTONALTERNATEFACE;
pub const TMT_HOTTRACKING = THEME_PROPERTY_SYMBOL_ID.HOTTRACKING;
pub const TMT_GRADIENTACTIVECAPTION = THEME_PROPERTY_SYMBOL_ID.GRADIENTACTIVECAPTION;
pub const TMT_GRADIENTINACTIVECAPTION = THEME_PROPERTY_SYMBOL_ID.GRADIENTINACTIVECAPTION;
pub const TMT_MENUHILIGHT = THEME_PROPERTY_SYMBOL_ID.MENUHILIGHT;
pub const TMT_MENUBAR = THEME_PROPERTY_SYMBOL_ID.MENUBAR;
pub const TMT_FIRSTCOLOR = THEME_PROPERTY_SYMBOL_ID.SCROLLBAR;
pub const TMT_LASTCOLOR = THEME_PROPERTY_SYMBOL_ID.MENUBAR;
pub const TMT_FROMHUE1 = THEME_PROPERTY_SYMBOL_ID.FROMHUE1;
pub const TMT_FROMHUE2 = THEME_PROPERTY_SYMBOL_ID.FROMHUE2;
pub const TMT_FROMHUE3 = THEME_PROPERTY_SYMBOL_ID.FROMHUE3;
pub const TMT_FROMHUE4 = THEME_PROPERTY_SYMBOL_ID.FROMHUE4;
pub const TMT_FROMHUE5 = THEME_PROPERTY_SYMBOL_ID.FROMHUE5;
pub const TMT_TOHUE1 = THEME_PROPERTY_SYMBOL_ID.TOHUE1;
pub const TMT_TOHUE2 = THEME_PROPERTY_SYMBOL_ID.TOHUE2;
pub const TMT_TOHUE3 = THEME_PROPERTY_SYMBOL_ID.TOHUE3;
pub const TMT_TOHUE4 = THEME_PROPERTY_SYMBOL_ID.TOHUE4;
pub const TMT_TOHUE5 = THEME_PROPERTY_SYMBOL_ID.TOHUE5;
pub const TMT_FROMCOLOR1 = THEME_PROPERTY_SYMBOL_ID.FROMCOLOR1;
pub const TMT_FROMCOLOR2 = THEME_PROPERTY_SYMBOL_ID.FROMCOLOR2;
pub const TMT_FROMCOLOR3 = THEME_PROPERTY_SYMBOL_ID.FROMCOLOR3;
pub const TMT_FROMCOLOR4 = THEME_PROPERTY_SYMBOL_ID.FROMCOLOR4;
pub const TMT_FROMCOLOR5 = THEME_PROPERTY_SYMBOL_ID.FROMCOLOR5;
pub const TMT_TOCOLOR1 = THEME_PROPERTY_SYMBOL_ID.TOCOLOR1;
pub const TMT_TOCOLOR2 = THEME_PROPERTY_SYMBOL_ID.TOCOLOR2;
pub const TMT_TOCOLOR3 = THEME_PROPERTY_SYMBOL_ID.TOCOLOR3;
pub const TMT_TOCOLOR4 = THEME_PROPERTY_SYMBOL_ID.TOCOLOR4;
pub const TMT_TOCOLOR5 = THEME_PROPERTY_SYMBOL_ID.TOCOLOR5;
pub const TMT_TRANSPARENT = THEME_PROPERTY_SYMBOL_ID.TRANSPARENT;
pub const TMT_AUTOSIZE = THEME_PROPERTY_SYMBOL_ID.AUTOSIZE;
pub const TMT_BORDERONLY = THEME_PROPERTY_SYMBOL_ID.BORDERONLY;
pub const TMT_COMPOSITED = THEME_PROPERTY_SYMBOL_ID.COMPOSITED;
pub const TMT_BGFILL = THEME_PROPERTY_SYMBOL_ID.BGFILL;
pub const TMT_GLYPHTRANSPARENT = THEME_PROPERTY_SYMBOL_ID.GLYPHTRANSPARENT;
pub const TMT_GLYPHONLY = THEME_PROPERTY_SYMBOL_ID.GLYPHONLY;
pub const TMT_ALWAYSSHOWSIZINGBAR = THEME_PROPERTY_SYMBOL_ID.ALWAYSSHOWSIZINGBAR;
pub const TMT_MIRRORIMAGE = THEME_PROPERTY_SYMBOL_ID.MIRRORIMAGE;
pub const TMT_UNIFORMSIZING = THEME_PROPERTY_SYMBOL_ID.UNIFORMSIZING;
pub const TMT_INTEGRALSIZING = THEME_PROPERTY_SYMBOL_ID.INTEGRALSIZING;
pub const TMT_SOURCEGROW = THEME_PROPERTY_SYMBOL_ID.SOURCEGROW;
pub const TMT_SOURCESHRINK = THEME_PROPERTY_SYMBOL_ID.SOURCESHRINK;
pub const TMT_DRAWBORDERS = THEME_PROPERTY_SYMBOL_ID.DRAWBORDERS;
pub const TMT_NOETCHEDEFFECT = THEME_PROPERTY_SYMBOL_ID.NOETCHEDEFFECT;
pub const TMT_TEXTAPPLYOVERLAY = THEME_PROPERTY_SYMBOL_ID.TEXTAPPLYOVERLAY;
pub const TMT_TEXTGLOW = THEME_PROPERTY_SYMBOL_ID.TEXTGLOW;
pub const TMT_TEXTITALIC = THEME_PROPERTY_SYMBOL_ID.TEXTITALIC;
pub const TMT_COMPOSITEDOPAQUE = THEME_PROPERTY_SYMBOL_ID.COMPOSITEDOPAQUE;
pub const TMT_LOCALIZEDMIRRORIMAGE = THEME_PROPERTY_SYMBOL_ID.LOCALIZEDMIRRORIMAGE;
pub const TMT_IMAGECOUNT = THEME_PROPERTY_SYMBOL_ID.IMAGECOUNT;
pub const TMT_ALPHALEVEL = THEME_PROPERTY_SYMBOL_ID.ALPHALEVEL;
pub const TMT_BORDERSIZE = THEME_PROPERTY_SYMBOL_ID.BORDERSIZE;
pub const TMT_ROUNDCORNERWIDTH = THEME_PROPERTY_SYMBOL_ID.ROUNDCORNERWIDTH;
pub const TMT_ROUNDCORNERHEIGHT = THEME_PROPERTY_SYMBOL_ID.ROUNDCORNERHEIGHT;
pub const TMT_GRADIENTRATIO1 = THEME_PROPERTY_SYMBOL_ID.GRADIENTRATIO1;
pub const TMT_GRADIENTRATIO2 = THEME_PROPERTY_SYMBOL_ID.GRADIENTRATIO2;
pub const TMT_GRADIENTRATIO3 = THEME_PROPERTY_SYMBOL_ID.GRADIENTRATIO3;
pub const TMT_GRADIENTRATIO4 = THEME_PROPERTY_SYMBOL_ID.GRADIENTRATIO4;
pub const TMT_GRADIENTRATIO5 = THEME_PROPERTY_SYMBOL_ID.GRADIENTRATIO5;
pub const TMT_PROGRESSCHUNKSIZE = THEME_PROPERTY_SYMBOL_ID.PROGRESSCHUNKSIZE;
pub const TMT_PROGRESSSPACESIZE = THEME_PROPERTY_SYMBOL_ID.PROGRESSSPACESIZE;
pub const TMT_SATURATION = THEME_PROPERTY_SYMBOL_ID.SATURATION;
pub const TMT_TEXTBORDERSIZE = THEME_PROPERTY_SYMBOL_ID.TEXTBORDERSIZE;
pub const TMT_ALPHATHRESHOLD = THEME_PROPERTY_SYMBOL_ID.ALPHATHRESHOLD;
pub const TMT_WIDTH = THEME_PROPERTY_SYMBOL_ID.WIDTH;
pub const TMT_HEIGHT = THEME_PROPERTY_SYMBOL_ID.HEIGHT;
pub const TMT_GLYPHINDEX = THEME_PROPERTY_SYMBOL_ID.GLYPHINDEX;
pub const TMT_TRUESIZESTRETCHMARK = THEME_PROPERTY_SYMBOL_ID.TRUESIZESTRETCHMARK;
pub const TMT_MINDPI1 = THEME_PROPERTY_SYMBOL_ID.MINDPI1;
pub const TMT_MINDPI2 = THEME_PROPERTY_SYMBOL_ID.MINDPI2;
pub const TMT_MINDPI3 = THEME_PROPERTY_SYMBOL_ID.MINDPI3;
pub const TMT_MINDPI4 = THEME_PROPERTY_SYMBOL_ID.MINDPI4;
pub const TMT_MINDPI5 = THEME_PROPERTY_SYMBOL_ID.MINDPI5;
pub const TMT_TEXTGLOWSIZE = THEME_PROPERTY_SYMBOL_ID.TEXTGLOWSIZE;
pub const TMT_FRAMESPERSECOND = THEME_PROPERTY_SYMBOL_ID.FRAMESPERSECOND;
pub const TMT_PIXELSPERFRAME = THEME_PROPERTY_SYMBOL_ID.PIXELSPERFRAME;
pub const TMT_ANIMATIONDELAY = THEME_PROPERTY_SYMBOL_ID.ANIMATIONDELAY;
pub const TMT_GLOWINTENSITY = THEME_PROPERTY_SYMBOL_ID.GLOWINTENSITY;
pub const TMT_OPACITY = THEME_PROPERTY_SYMBOL_ID.OPACITY;
pub const TMT_COLORIZATIONCOLOR = THEME_PROPERTY_SYMBOL_ID.COLORIZATIONCOLOR;
pub const TMT_COLORIZATIONOPACITY = THEME_PROPERTY_SYMBOL_ID.COLORIZATIONOPACITY;
pub const TMT_MINDPI6 = THEME_PROPERTY_SYMBOL_ID.MINDPI6;
pub const TMT_MINDPI7 = THEME_PROPERTY_SYMBOL_ID.MINDPI7;
pub const TMT_GLYPHFONT = THEME_PROPERTY_SYMBOL_ID.GLYPHFONT;
pub const TMT_IMAGEFILE = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE;
pub const TMT_IMAGEFILE1 = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE1;
pub const TMT_IMAGEFILE2 = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE2;
pub const TMT_IMAGEFILE3 = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE3;
pub const TMT_IMAGEFILE4 = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE4;
pub const TMT_IMAGEFILE5 = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE5;
pub const TMT_GLYPHIMAGEFILE = THEME_PROPERTY_SYMBOL_ID.GLYPHIMAGEFILE;
pub const TMT_IMAGEFILE6 = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE6;
pub const TMT_IMAGEFILE7 = THEME_PROPERTY_SYMBOL_ID.IMAGEFILE7;
pub const TMT_TEXT = THEME_PROPERTY_SYMBOL_ID.TEXT;
pub const TMT_CLASSICVALUE = THEME_PROPERTY_SYMBOL_ID.CLASSICVALUE;
pub const TMT_OFFSET = THEME_PROPERTY_SYMBOL_ID.OFFSET;
pub const TMT_TEXTSHADOWOFFSET = THEME_PROPERTY_SYMBOL_ID.TEXTSHADOWOFFSET;
pub const TMT_MINSIZE = THEME_PROPERTY_SYMBOL_ID.MINSIZE;
pub const TMT_MINSIZE1 = THEME_PROPERTY_SYMBOL_ID.MINSIZE1;
pub const TMT_MINSIZE2 = THEME_PROPERTY_SYMBOL_ID.MINSIZE2;
pub const TMT_MINSIZE3 = THEME_PROPERTY_SYMBOL_ID.MINSIZE3;
pub const TMT_MINSIZE4 = THEME_PROPERTY_SYMBOL_ID.MINSIZE4;
pub const TMT_MINSIZE5 = THEME_PROPERTY_SYMBOL_ID.MINSIZE5;
pub const TMT_NORMALSIZE = THEME_PROPERTY_SYMBOL_ID.NORMALSIZE;
pub const TMT_MINSIZE6 = THEME_PROPERTY_SYMBOL_ID.MINSIZE6;
pub const TMT_MINSIZE7 = THEME_PROPERTY_SYMBOL_ID.MINSIZE7;
pub const TMT_SIZINGMARGINS = THEME_PROPERTY_SYMBOL_ID.SIZINGMARGINS;
pub const TMT_CONTENTMARGINS = THEME_PROPERTY_SYMBOL_ID.CONTENTMARGINS;
pub const TMT_CAPTIONMARGINS = THEME_PROPERTY_SYMBOL_ID.CAPTIONMARGINS;
pub const TMT_BORDERCOLOR = THEME_PROPERTY_SYMBOL_ID.BORDERCOLOR;
pub const TMT_FILLCOLOR = THEME_PROPERTY_SYMBOL_ID.FILLCOLOR;
pub const TMT_TEXTCOLOR = THEME_PROPERTY_SYMBOL_ID.TEXTCOLOR;
pub const TMT_EDGELIGHTCOLOR = THEME_PROPERTY_SYMBOL_ID.EDGELIGHTCOLOR;
pub const TMT_EDGEHIGHLIGHTCOLOR = THEME_PROPERTY_SYMBOL_ID.EDGEHIGHLIGHTCOLOR;
pub const TMT_EDGESHADOWCOLOR = THEME_PROPERTY_SYMBOL_ID.EDGESHADOWCOLOR;
pub const TMT_EDGEDKSHADOWCOLOR = THEME_PROPERTY_SYMBOL_ID.EDGEDKSHADOWCOLOR;
pub const TMT_EDGEFILLCOLOR = THEME_PROPERTY_SYMBOL_ID.EDGEFILLCOLOR;
pub const TMT_TRANSPARENTCOLOR = THEME_PROPERTY_SYMBOL_ID.TRANSPARENTCOLOR;
pub const TMT_GRADIENTCOLOR1 = THEME_PROPERTY_SYMBOL_ID.GRADIENTCOLOR1;
pub const TMT_GRADIENTCOLOR2 = THEME_PROPERTY_SYMBOL_ID.GRADIENTCOLOR2;
pub const TMT_GRADIENTCOLOR3 = THEME_PROPERTY_SYMBOL_ID.GRADIENTCOLOR3;
pub const TMT_GRADIENTCOLOR4 = THEME_PROPERTY_SYMBOL_ID.GRADIENTCOLOR4;
pub const TMT_GRADIENTCOLOR5 = THEME_PROPERTY_SYMBOL_ID.GRADIENTCOLOR5;
pub const TMT_SHADOWCOLOR = THEME_PROPERTY_SYMBOL_ID.SHADOWCOLOR;
pub const TMT_GLOWCOLOR = THEME_PROPERTY_SYMBOL_ID.GLOWCOLOR;
pub const TMT_TEXTBORDERCOLOR = THEME_PROPERTY_SYMBOL_ID.TEXTBORDERCOLOR;
pub const TMT_TEXTSHADOWCOLOR = THEME_PROPERTY_SYMBOL_ID.TEXTSHADOWCOLOR;
pub const TMT_GLYPHTEXTCOLOR = THEME_PROPERTY_SYMBOL_ID.GLYPHTEXTCOLOR;
pub const TMT_GLYPHTRANSPARENTCOLOR = THEME_PROPERTY_SYMBOL_ID.GLYPHTRANSPARENTCOLOR;
pub const TMT_FILLCOLORHINT = THEME_PROPERTY_SYMBOL_ID.FILLCOLORHINT;
pub const TMT_BORDERCOLORHINT = THEME_PROPERTY_SYMBOL_ID.BORDERCOLORHINT;
pub const TMT_ACCENTCOLORHINT = THEME_PROPERTY_SYMBOL_ID.ACCENTCOLORHINT;
pub const TMT_TEXTCOLORHINT = THEME_PROPERTY_SYMBOL_ID.TEXTCOLORHINT;
pub const TMT_HEADING1TEXTCOLOR = THEME_PROPERTY_SYMBOL_ID.HEADING1TEXTCOLOR;
pub const TMT_HEADING2TEXTCOLOR = THEME_PROPERTY_SYMBOL_ID.HEADING2TEXTCOLOR;
pub const TMT_BODYTEXTCOLOR = THEME_PROPERTY_SYMBOL_ID.BODYTEXTCOLOR;
pub const TMT_BGTYPE = THEME_PROPERTY_SYMBOL_ID.BGTYPE;
pub const TMT_BORDERTYPE = THEME_PROPERTY_SYMBOL_ID.BORDERTYPE;
pub const TMT_FILLTYPE = THEME_PROPERTY_SYMBOL_ID.FILLTYPE;
pub const TMT_SIZINGTYPE = THEME_PROPERTY_SYMBOL_ID.SIZINGTYPE;
pub const TMT_HALIGN = THEME_PROPERTY_SYMBOL_ID.HALIGN;
pub const TMT_CONTENTALIGNMENT = THEME_PROPERTY_SYMBOL_ID.CONTENTALIGNMENT;
pub const TMT_VALIGN = THEME_PROPERTY_SYMBOL_ID.VALIGN;
pub const TMT_OFFSETTYPE = THEME_PROPERTY_SYMBOL_ID.OFFSETTYPE;
pub const TMT_ICONEFFECT = THEME_PROPERTY_SYMBOL_ID.ICONEFFECT;
pub const TMT_TEXTSHADOWTYPE = THEME_PROPERTY_SYMBOL_ID.TEXTSHADOWTYPE;
pub const TMT_IMAGELAYOUT = THEME_PROPERTY_SYMBOL_ID.IMAGELAYOUT;
pub const TMT_GLYPHTYPE = THEME_PROPERTY_SYMBOL_ID.GLYPHTYPE;
pub const TMT_IMAGESELECTTYPE = THEME_PROPERTY_SYMBOL_ID.IMAGESELECTTYPE;
pub const TMT_GLYPHFONTSIZINGTYPE = THEME_PROPERTY_SYMBOL_ID.GLYPHFONTSIZINGTYPE;
pub const TMT_TRUESIZESCALINGTYPE = THEME_PROPERTY_SYMBOL_ID.TRUESIZESCALINGTYPE;
pub const TMT_USERPICTURE = THEME_PROPERTY_SYMBOL_ID.USERPICTURE;
pub const TMT_DEFAULTPANESIZE = THEME_PROPERTY_SYMBOL_ID.DEFAULTPANESIZE;
pub const TMT_BLENDCOLOR = THEME_PROPERTY_SYMBOL_ID.BLENDCOLOR;
pub const TMT_CUSTOMSPLITRECT = THEME_PROPERTY_SYMBOL_ID.CUSTOMSPLITRECT;
pub const TMT_ANIMATIONBUTTONRECT = THEME_PROPERTY_SYMBOL_ID.ANIMATIONBUTTONRECT;
pub const TMT_ANIMATIONDURATION = THEME_PROPERTY_SYMBOL_ID.ANIMATIONDURATION;
pub const TMT_TRANSITIONDURATIONS = THEME_PROPERTY_SYMBOL_ID.TRANSITIONDURATIONS;
pub const TMT_SCALEDBACKGROUND = THEME_PROPERTY_SYMBOL_ID.SCALEDBACKGROUND;
pub const TMT_ATLASIMAGE = THEME_PROPERTY_SYMBOL_ID.ATLASIMAGE;
pub const TMT_ATLASINPUTIMAGE = THEME_PROPERTY_SYMBOL_ID.ATLASINPUTIMAGE;
pub const TMT_ATLASRECT = THEME_PROPERTY_SYMBOL_ID.ATLASRECT;

pub const DRAGLISTINFO_NOTIFICATION_FLAGS = enum(u32) {
    BEGINDRAG = 1157,
    CANCELDRAG = 1160,
    DRAGGING = 1158,
    DROPPED = 1159,
};
pub const DL_BEGINDRAG = DRAGLISTINFO_NOTIFICATION_FLAGS.BEGINDRAG;
pub const DL_CANCELDRAG = DRAGLISTINFO_NOTIFICATION_FLAGS.CANCELDRAG;
pub const DL_DRAGGING = DRAGLISTINFO_NOTIFICATION_FLAGS.DRAGGING;
pub const DL_DROPPED = DRAGLISTINFO_NOTIFICATION_FLAGS.DROPPED;

pub const WORD_BREAK_ACTION = enum(u32) {
    CLASSIFY = 3,
    ISDELIMITER = 2,
    LEFT = 0,
    LEFTBREAK = 6,
    MOVEWORDLEFT = 4,
    MOVEWORDRIGHT = 5,
    RIGHT = 1,
    RIGHTBREAK = 7,
};
pub const WB_CLASSIFY = WORD_BREAK_ACTION.CLASSIFY;
pub const WB_ISDELIMITER = WORD_BREAK_ACTION.ISDELIMITER;
pub const WB_LEFT = WORD_BREAK_ACTION.LEFT;
pub const WB_LEFTBREAK = WORD_BREAK_ACTION.LEFTBREAK;
pub const WB_MOVEWORDLEFT = WORD_BREAK_ACTION.MOVEWORDLEFT;
pub const WB_MOVEWORDRIGHT = WORD_BREAK_ACTION.MOVEWORDRIGHT;
pub const WB_RIGHT = WORD_BREAK_ACTION.RIGHT;
pub const WB_RIGHTBREAK = WORD_BREAK_ACTION.RIGHTBREAK;

pub const DPAMM_MESSAGE = enum(u32) {
    MERGE = 1,
    DELETE = 2,
    INSERT = 3,
};
pub const DPAMM_MERGE = DPAMM_MESSAGE.MERGE;
pub const DPAMM_DELETE = DPAMM_MESSAGE.DELETE;
pub const DPAMM_INSERT = DPAMM_MESSAGE.INSERT;

pub const DLG_DIR_LIST_FILE_TYPE = enum(u32) {
    ARCHIVE = 32,
    DIRECTORY = 16,
    DRIVES = 16384,
    EXCLUSIVE = 32768,
    HIDDEN = 2,
    READONLY = 1,
    READWRITE = 0,
    SYSTEM = 4,
    POSTMSGS = 8192,
    _,
    pub fn initFlags(o: struct {
        ARCHIVE: u1 = 0,
        DIRECTORY: u1 = 0,
        DRIVES: u1 = 0,
        EXCLUSIVE: u1 = 0,
        HIDDEN: u1 = 0,
        READONLY: u1 = 0,
        READWRITE: u1 = 0,
        SYSTEM: u1 = 0,
        POSTMSGS: u1 = 0,
    }) DLG_DIR_LIST_FILE_TYPE {
        return @as(DLG_DIR_LIST_FILE_TYPE, @enumFromInt((if (o.ARCHIVE == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.ARCHIVE) else 0) | (if (o.DIRECTORY == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.DIRECTORY) else 0) | (if (o.DRIVES == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.DRIVES) else 0) | (if (o.EXCLUSIVE == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.EXCLUSIVE) else 0) | (if (o.HIDDEN == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.HIDDEN) else 0) | (if (o.READONLY == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.READONLY) else 0) | (if (o.READWRITE == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.READWRITE) else 0) | (if (o.SYSTEM == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.SYSTEM) else 0) | (if (o.POSTMSGS == 1) @intFromEnum(DLG_DIR_LIST_FILE_TYPE.POSTMSGS) else 0)));
    }
};
pub const DDL_ARCHIVE = DLG_DIR_LIST_FILE_TYPE.ARCHIVE;
pub const DDL_DIRECTORY = DLG_DIR_LIST_FILE_TYPE.DIRECTORY;
pub const DDL_DRIVES = DLG_DIR_LIST_FILE_TYPE.DRIVES;
pub const DDL_EXCLUSIVE = DLG_DIR_LIST_FILE_TYPE.EXCLUSIVE;
pub const DDL_HIDDEN = DLG_DIR_LIST_FILE_TYPE.HIDDEN;
pub const DDL_READONLY = DLG_DIR_LIST_FILE_TYPE.READONLY;
pub const DDL_READWRITE = DLG_DIR_LIST_FILE_TYPE.READWRITE;
pub const DDL_SYSTEM = DLG_DIR_LIST_FILE_TYPE.SYSTEM;
pub const DDL_POSTMSGS = DLG_DIR_LIST_FILE_TYPE.POSTMSGS;

pub const OPEN_THEME_DATA_FLAGS = enum(u32) {
    FORCE_RECT_SIZING = 1,
    NONCLIENT = 2,
    _,
    pub fn initFlags(o: struct {
        FORCE_RECT_SIZING: u1 = 0,
        NONCLIENT: u1 = 0,
    }) OPEN_THEME_DATA_FLAGS {
        return @as(OPEN_THEME_DATA_FLAGS, @enumFromInt((if (o.FORCE_RECT_SIZING == 1) @intFromEnum(OPEN_THEME_DATA_FLAGS.FORCE_RECT_SIZING) else 0) | (if (o.NONCLIENT == 1) @intFromEnum(OPEN_THEME_DATA_FLAGS.NONCLIENT) else 0)));
    }
};
pub const OTD_FORCE_RECT_SIZING = OPEN_THEME_DATA_FLAGS.FORCE_RECT_SIZING;
pub const OTD_NONCLIENT = OPEN_THEME_DATA_FLAGS.NONCLIENT;

pub const GET_THEME_BITMAP_FLAGS = enum(u32) {
    DIRECT = 1,
    COPY = 2,
    VALIDBITS = 3,
};
pub const GBF_DIRECT = GET_THEME_BITMAP_FLAGS.DIRECT;
pub const GBF_COPY = GET_THEME_BITMAP_FLAGS.COPY;
pub const GBF_VALIDBITS = GET_THEME_BITMAP_FLAGS.VALIDBITS;

pub const ENABLE_SCROLL_BAR_ARROWS = enum(u32) {
    DISABLE_BOTH = 3,
    DISABLE_DOWN = 2,
    DISABLE_LEFT = 1,
    // DISABLE_LTUP = 1, this enum value conflicts with DISABLE_LEFT
    // DISABLE_RIGHT = 2, this enum value conflicts with DISABLE_DOWN
    // DISABLE_RTDN = 2, this enum value conflicts with DISABLE_DOWN
    // DISABLE_UP = 1, this enum value conflicts with DISABLE_LEFT
    ENABLE_BOTH = 0,
};
pub const ESB_DISABLE_BOTH = ENABLE_SCROLL_BAR_ARROWS.DISABLE_BOTH;
pub const ESB_DISABLE_DOWN = ENABLE_SCROLL_BAR_ARROWS.DISABLE_DOWN;
pub const ESB_DISABLE_LEFT = ENABLE_SCROLL_BAR_ARROWS.DISABLE_LEFT;
pub const ESB_DISABLE_LTUP = ENABLE_SCROLL_BAR_ARROWS.DISABLE_LEFT;
pub const ESB_DISABLE_RIGHT = ENABLE_SCROLL_BAR_ARROWS.DISABLE_DOWN;
pub const ESB_DISABLE_RTDN = ENABLE_SCROLL_BAR_ARROWS.DISABLE_DOWN;
pub const ESB_DISABLE_UP = ENABLE_SCROLL_BAR_ARROWS.DISABLE_LEFT;
pub const ESB_ENABLE_BOTH = ENABLE_SCROLL_BAR_ARROWS.ENABLE_BOTH;

pub const IMAGE_LIST_DRAW_STYLE = enum(u32) {
    BLEND = 4,
    // BLEND50 = 4, this enum value conflicts with BLEND
    FOCUS = 2,
    MASK = 16,
    NORMAL = 0,
    // SELECTED = 4, this enum value conflicts with BLEND
    _,
    pub fn initFlags(o: struct {
        BLEND: u1 = 0,
        FOCUS: u1 = 0,
        MASK: u1 = 0,
        NORMAL: u1 = 0,
    }) IMAGE_LIST_DRAW_STYLE {
        return @as(IMAGE_LIST_DRAW_STYLE, @enumFromInt((if (o.BLEND == 1) @intFromEnum(IMAGE_LIST_DRAW_STYLE.BLEND) else 0) | (if (o.FOCUS == 1) @intFromEnum(IMAGE_LIST_DRAW_STYLE.FOCUS) else 0) | (if (o.MASK == 1) @intFromEnum(IMAGE_LIST_DRAW_STYLE.MASK) else 0) | (if (o.NORMAL == 1) @intFromEnum(IMAGE_LIST_DRAW_STYLE.NORMAL) else 0)));
    }
};
pub const ILD_BLEND = IMAGE_LIST_DRAW_STYLE.BLEND;
pub const ILD_BLEND50 = IMAGE_LIST_DRAW_STYLE.BLEND;
pub const ILD_FOCUS = IMAGE_LIST_DRAW_STYLE.FOCUS;
pub const ILD_MASK = IMAGE_LIST_DRAW_STYLE.MASK;
pub const ILD_NORMAL = IMAGE_LIST_DRAW_STYLE.NORMAL;
pub const ILD_SELECTED = IMAGE_LIST_DRAW_STYLE.BLEND;

pub const WSB_PROP = enum(i32) {
    CXHSCROLL = 2,
    CXHTHUMB = 16,
    CXVSCROLL = 8,
    CYHSCROLL = 4,
    CYVSCROLL = 1,
    CYVTHUMB = 32,
    HBKGCOLOR = 128,
    HSTYLE = 512,
    PALETTE = 2048,
    VBKGCOLOR = 64,
    VSTYLE = 256,
    WINSTYLE = 1024,
};
pub const WSB_PROP_CXHSCROLL = WSB_PROP.CXHSCROLL;
pub const WSB_PROP_CXHTHUMB = WSB_PROP.CXHTHUMB;
pub const WSB_PROP_CXVSCROLL = WSB_PROP.CXVSCROLL;
pub const WSB_PROP_CYHSCROLL = WSB_PROP.CYHSCROLL;
pub const WSB_PROP_CYVSCROLL = WSB_PROP.CYVSCROLL;
pub const WSB_PROP_CYVTHUMB = WSB_PROP.CYVTHUMB;
pub const WSB_PROP_HBKGCOLOR = WSB_PROP.HBKGCOLOR;
pub const WSB_PROP_HSTYLE = WSB_PROP.HSTYLE;
pub const WSB_PROP_PALETTE = WSB_PROP.PALETTE;
pub const WSB_PROP_VBKGCOLOR = WSB_PROP.VBKGCOLOR;
pub const WSB_PROP_VSTYLE = WSB_PROP.VSTYLE;
pub const WSB_PROP_WINSTYLE = WSB_PROP.WINSTYLE;

pub const PSPCB_MESSAGE = enum(u32) {
    ADDREF = 0,
    CREATE = 2,
    RELEASE = 1,
    SI_INITDIALOG = 1025,
};
pub const PSPCB_ADDREF = PSPCB_MESSAGE.ADDREF;
pub const PSPCB_CREATE = PSPCB_MESSAGE.CREATE;
pub const PSPCB_RELEASE = PSPCB_MESSAGE.RELEASE;
pub const PSPCB_SI_INITDIALOG = PSPCB_MESSAGE.SI_INITDIALOG;

pub const HEADER_CONTROL_NOTIFICATION_BUTTON = enum(u32) {
    LEFT = 0,
    RIGHT = 1,
    MIDDLE = 2,
};
pub const HEADER_CONTROL_NOTIFICATION_BUTTON_LEFT = HEADER_CONTROL_NOTIFICATION_BUTTON.LEFT;
pub const HEADER_CONTROL_NOTIFICATION_BUTTON_RIGHT = HEADER_CONTROL_NOTIFICATION_BUTTON.RIGHT;
pub const HEADER_CONTROL_NOTIFICATION_BUTTON_MIDDLE = HEADER_CONTROL_NOTIFICATION_BUTTON.MIDDLE;

pub const IMAGE_LIST_COPY_FLAGS = enum(u32) {
    MOVE = 0,
    SWAP = 1,
};
pub const ILCF_MOVE = IMAGE_LIST_COPY_FLAGS.MOVE;
pub const ILCF_SWAP = IMAGE_LIST_COPY_FLAGS.SWAP;

pub const DLG_BUTTON_CHECK_STATE = enum(u32) {
    CHECKED = 1,
    INDETERMINATE = 2,
    UNCHECKED = 0,
};
pub const BST_CHECKED = DLG_BUTTON_CHECK_STATE.CHECKED;
pub const BST_INDETERMINATE = DLG_BUTTON_CHECK_STATE.INDETERMINATE;
pub const BST_UNCHECKED = DLG_BUTTON_CHECK_STATE.UNCHECKED;

pub const DRAW_THEME_PARENT_BACKGROUND_FLAGS = enum(u32) {
    WINDOWDC = 1,
    USECTLCOLORSTATIC = 2,
    USEERASEBKGND = 4,
    _,
    pub fn initFlags(o: struct {
        WINDOWDC: u1 = 0,
        USECTLCOLORSTATIC: u1 = 0,
        USEERASEBKGND: u1 = 0,
    }) DRAW_THEME_PARENT_BACKGROUND_FLAGS {
        return @as(DRAW_THEME_PARENT_BACKGROUND_FLAGS, @enumFromInt((if (o.WINDOWDC == 1) @intFromEnum(DRAW_THEME_PARENT_BACKGROUND_FLAGS.WINDOWDC) else 0) | (if (o.USECTLCOLORSTATIC == 1) @intFromEnum(DRAW_THEME_PARENT_BACKGROUND_FLAGS.USECTLCOLORSTATIC) else 0) | (if (o.USEERASEBKGND == 1) @intFromEnum(DRAW_THEME_PARENT_BACKGROUND_FLAGS.USEERASEBKGND) else 0)));
    }
};
pub const DTPB_WINDOWDC = DRAW_THEME_PARENT_BACKGROUND_FLAGS.WINDOWDC;
pub const DTPB_USECTLCOLORSTATIC = DRAW_THEME_PARENT_BACKGROUND_FLAGS.USECTLCOLORSTATIC;
pub const DTPB_USEERASEBKGND = DRAW_THEME_PARENT_BACKGROUND_FLAGS.USEERASEBKGND;

pub const IMAGE_LIST_ITEM_FLAGS = enum(u32) {
    ALPHA = 1,
    LOWQUALITY = 2,
};
pub const ILIF_ALPHA = IMAGE_LIST_ITEM_FLAGS.ALPHA;
pub const ILIF_LOWQUALITY = IMAGE_LIST_ITEM_FLAGS.LOWQUALITY;

pub const HDI_MASK = enum(u32) {
    WIDTH = 1,
    // HEIGHT = 1, this enum value conflicts with WIDTH
    TEXT = 2,
    FORMAT = 4,
    LPARAM = 8,
    BITMAP = 16,
    IMAGE = 32,
    DI_SETITEM = 64,
    ORDER = 128,
    FILTER = 256,
    STATE = 512,
    _,
    pub fn initFlags(o: struct {
        WIDTH: u1 = 0,
        TEXT: u1 = 0,
        FORMAT: u1 = 0,
        LPARAM: u1 = 0,
        BITMAP: u1 = 0,
        IMAGE: u1 = 0,
        DI_SETITEM: u1 = 0,
        ORDER: u1 = 0,
        FILTER: u1 = 0,
        STATE: u1 = 0,
    }) HDI_MASK {
        return @as(HDI_MASK, @enumFromInt((if (o.WIDTH == 1) @intFromEnum(HDI_MASK.WIDTH) else 0) | (if (o.TEXT == 1) @intFromEnum(HDI_MASK.TEXT) else 0) | (if (o.FORMAT == 1) @intFromEnum(HDI_MASK.FORMAT) else 0) | (if (o.LPARAM == 1) @intFromEnum(HDI_MASK.LPARAM) else 0) | (if (o.BITMAP == 1) @intFromEnum(HDI_MASK.BITMAP) else 0) | (if (o.IMAGE == 1) @intFromEnum(HDI_MASK.IMAGE) else 0) | (if (o.DI_SETITEM == 1) @intFromEnum(HDI_MASK.DI_SETITEM) else 0) | (if (o.ORDER == 1) @intFromEnum(HDI_MASK.ORDER) else 0) | (if (o.FILTER == 1) @intFromEnum(HDI_MASK.FILTER) else 0) | (if (o.STATE == 1) @intFromEnum(HDI_MASK.STATE) else 0)));
    }
};
pub const HDI_WIDTH = HDI_MASK.WIDTH;
pub const HDI_HEIGHT = HDI_MASK.WIDTH;
pub const HDI_TEXT = HDI_MASK.TEXT;
pub const HDI_FORMAT = HDI_MASK.FORMAT;
pub const HDI_LPARAM = HDI_MASK.LPARAM;
pub const HDI_BITMAP = HDI_MASK.BITMAP;
pub const HDI_IMAGE = HDI_MASK.IMAGE;
pub const HDI_DI_SETITEM = HDI_MASK.DI_SETITEM;
pub const HDI_ORDER = HDI_MASK.ORDER;
pub const HDI_FILTER = HDI_MASK.FILTER;
pub const HDI_STATE = HDI_MASK.STATE;

pub const NMREBAR_MASK_FLAGS = enum(u32) {
    ID = 1,
    LPARAM = 4,
    STYLE = 2,
    _,
    pub fn initFlags(o: struct {
        ID: u1 = 0,
        LPARAM: u1 = 0,
        STYLE: u1 = 0,
    }) NMREBAR_MASK_FLAGS {
        return @as(NMREBAR_MASK_FLAGS, @enumFromInt((if (o.ID == 1) @intFromEnum(NMREBAR_MASK_FLAGS.ID) else 0) | (if (o.LPARAM == 1) @intFromEnum(NMREBAR_MASK_FLAGS.LPARAM) else 0) | (if (o.STYLE == 1) @intFromEnum(NMREBAR_MASK_FLAGS.STYLE) else 0)));
    }
};
pub const RBNM_ID = NMREBAR_MASK_FLAGS.ID;
pub const RBNM_LPARAM = NMREBAR_MASK_FLAGS.LPARAM;
pub const RBNM_STYLE = NMREBAR_MASK_FLAGS.STYLE;

pub const EDITBALLOONTIP_ICON = enum(u32) {
    ERROR = 3,
    INFO = 1,
    NONE = 0,
    WARNING = 2,
    INFO_LARGE = 4,
    WARNING_LARGE = 5,
    ERROR_LARGE = 6,
};
pub const TTI_ERROR = EDITBALLOONTIP_ICON.ERROR;
pub const TTI_INFO = EDITBALLOONTIP_ICON.INFO;
pub const TTI_NONE = EDITBALLOONTIP_ICON.NONE;
pub const TTI_WARNING = EDITBALLOONTIP_ICON.WARNING;
pub const TTI_INFO_LARGE = EDITBALLOONTIP_ICON.INFO_LARGE;
pub const TTI_WARNING_LARGE = EDITBALLOONTIP_ICON.WARNING_LARGE;
pub const TTI_ERROR_LARGE = EDITBALLOONTIP_ICON.ERROR_LARGE;

pub const LVCOLUMNW_FORMAT = enum(u32) {
    LEFT = 0,
    RIGHT = 1,
    CENTER = 2,
    JUSTIFYMASK = 3,
    IMAGE = 2048,
    BITMAP_ON_RIGHT = 4096,
    COL_HAS_IMAGES = 32768,
    FIXED_WIDTH = 256,
    NO_DPI_SCALE = 262144,
    FIXED_RATIO = 524288,
    SPLITBUTTON = 16777216,
    _,
    pub fn initFlags(o: struct {
        LEFT: u1 = 0,
        RIGHT: u1 = 0,
        CENTER: u1 = 0,
        JUSTIFYMASK: u1 = 0,
        IMAGE: u1 = 0,
        BITMAP_ON_RIGHT: u1 = 0,
        COL_HAS_IMAGES: u1 = 0,
        FIXED_WIDTH: u1 = 0,
        NO_DPI_SCALE: u1 = 0,
        FIXED_RATIO: u1 = 0,
        SPLITBUTTON: u1 = 0,
    }) LVCOLUMNW_FORMAT {
        return @as(LVCOLUMNW_FORMAT, @enumFromInt((if (o.LEFT == 1) @intFromEnum(LVCOLUMNW_FORMAT.LEFT) else 0) | (if (o.RIGHT == 1) @intFromEnum(LVCOLUMNW_FORMAT.RIGHT) else 0) | (if (o.CENTER == 1) @intFromEnum(LVCOLUMNW_FORMAT.CENTER) else 0) | (if (o.JUSTIFYMASK == 1) @intFromEnum(LVCOLUMNW_FORMAT.JUSTIFYMASK) else 0) | (if (o.IMAGE == 1) @intFromEnum(LVCOLUMNW_FORMAT.IMAGE) else 0) | (if (o.BITMAP_ON_RIGHT == 1) @intFromEnum(LVCOLUMNW_FORMAT.BITMAP_ON_RIGHT) else 0) | (if (o.COL_HAS_IMAGES == 1) @intFromEnum(LVCOLUMNW_FORMAT.COL_HAS_IMAGES) else 0) | (if (o.FIXED_WIDTH == 1) @intFromEnum(LVCOLUMNW_FORMAT.FIXED_WIDTH) else 0) | (if (o.NO_DPI_SCALE == 1) @intFromEnum(LVCOLUMNW_FORMAT.NO_DPI_SCALE) else 0) | (if (o.FIXED_RATIO == 1) @intFromEnum(LVCOLUMNW_FORMAT.FIXED_RATIO) else 0) | (if (o.SPLITBUTTON == 1) @intFromEnum(LVCOLUMNW_FORMAT.SPLITBUTTON) else 0)));
    }
};
pub const LVCFMT_LEFT = LVCOLUMNW_FORMAT.LEFT;
pub const LVCFMT_RIGHT = LVCOLUMNW_FORMAT.RIGHT;
pub const LVCFMT_CENTER = LVCOLUMNW_FORMAT.CENTER;
pub const LVCFMT_JUSTIFYMASK = LVCOLUMNW_FORMAT.JUSTIFYMASK;
pub const LVCFMT_IMAGE = LVCOLUMNW_FORMAT.IMAGE;
pub const LVCFMT_BITMAP_ON_RIGHT = LVCOLUMNW_FORMAT.BITMAP_ON_RIGHT;
pub const LVCFMT_COL_HAS_IMAGES = LVCOLUMNW_FORMAT.COL_HAS_IMAGES;
pub const LVCFMT_FIXED_WIDTH = LVCOLUMNW_FORMAT.FIXED_WIDTH;
pub const LVCFMT_NO_DPI_SCALE = LVCOLUMNW_FORMAT.NO_DPI_SCALE;
pub const LVCFMT_FIXED_RATIO = LVCOLUMNW_FORMAT.FIXED_RATIO;
pub const LVCFMT_SPLITBUTTON = LVCOLUMNW_FORMAT.SPLITBUTTON;

pub const NMPGSCROLL_KEYS = enum(u16) {
    NONE = 0,
    SHIFT = 1,
    CONTROL = 2,
    MENU = 4,
    _,
    pub fn initFlags(o: struct {
        NONE: u1 = 0,
        SHIFT: u1 = 0,
        CONTROL: u1 = 0,
        MENU: u1 = 0,
    }) NMPGSCROLL_KEYS {
        return @as(NMPGSCROLL_KEYS, @enumFromInt((if (o.NONE == 1) @intFromEnum(NMPGSCROLL_KEYS.NONE) else 0) | (if (o.SHIFT == 1) @intFromEnum(NMPGSCROLL_KEYS.SHIFT) else 0) | (if (o.CONTROL == 1) @intFromEnum(NMPGSCROLL_KEYS.CONTROL) else 0) | (if (o.MENU == 1) @intFromEnum(NMPGSCROLL_KEYS.MENU) else 0)));
    }
};
pub const PGK_NONE = NMPGSCROLL_KEYS.NONE;
pub const PGK_SHIFT = NMPGSCROLL_KEYS.SHIFT;
pub const PGK_CONTROL = NMPGSCROLL_KEYS.CONTROL;
pub const PGK_MENU = NMPGSCROLL_KEYS.MENU;

pub const COMBOBOX_EX_ITEM_FLAGS = enum(u32) {
    DI_SETITEM = 268435456,
    IMAGE = 2,
    INDENT = 16,
    LPARAM = 32,
    OVERLAY = 8,
    SELECTEDIMAGE = 4,
    TEXT = 1,
    _,
    pub fn initFlags(o: struct {
        DI_SETITEM: u1 = 0,
        IMAGE: u1 = 0,
        INDENT: u1 = 0,
        LPARAM: u1 = 0,
        OVERLAY: u1 = 0,
        SELECTEDIMAGE: u1 = 0,
        TEXT: u1 = 0,
    }) COMBOBOX_EX_ITEM_FLAGS {
        return @as(COMBOBOX_EX_ITEM_FLAGS, @enumFromInt((if (o.DI_SETITEM == 1) @intFromEnum(COMBOBOX_EX_ITEM_FLAGS.DI_SETITEM) else 0) | (if (o.IMAGE == 1) @intFromEnum(COMBOBOX_EX_ITEM_FLAGS.IMAGE) else 0) | (if (o.INDENT == 1) @intFromEnum(COMBOBOX_EX_ITEM_FLAGS.INDENT) else 0) | (if (o.LPARAM == 1) @intFromEnum(COMBOBOX_EX_ITEM_FLAGS.LPARAM) else 0) | (if (o.OVERLAY == 1) @intFromEnum(COMBOBOX_EX_ITEM_FLAGS.OVERLAY) else 0) | (if (o.SELECTEDIMAGE == 1) @intFromEnum(COMBOBOX_EX_ITEM_FLAGS.SELECTEDIMAGE) else 0) | (if (o.TEXT == 1) @intFromEnum(COMBOBOX_EX_ITEM_FLAGS.TEXT) else 0)));
    }
};
pub const CBEIF_DI_SETITEM = COMBOBOX_EX_ITEM_FLAGS.DI_SETITEM;
pub const CBEIF_IMAGE = COMBOBOX_EX_ITEM_FLAGS.IMAGE;
pub const CBEIF_INDENT = COMBOBOX_EX_ITEM_FLAGS.INDENT;
pub const CBEIF_LPARAM = COMBOBOX_EX_ITEM_FLAGS.LPARAM;
pub const CBEIF_OVERLAY = COMBOBOX_EX_ITEM_FLAGS.OVERLAY;
pub const CBEIF_SELECTEDIMAGE = COMBOBOX_EX_ITEM_FLAGS.SELECTEDIMAGE;
pub const CBEIF_TEXT = COMBOBOX_EX_ITEM_FLAGS.TEXT;

pub const TVITEMEXW_CHILDREN = enum(i32) {
    ZERO = 0,
    ONE_OR_MORE = 1,
    CHILDRENCALLBACK = -1,
    CHILDRENAUTO = -2,
};
pub const I_ZERO = TVITEMEXW_CHILDREN.ZERO;
pub const I_ONE_OR_MORE = TVITEMEXW_CHILDREN.ONE_OR_MORE;
pub const I_CHILDRENCALLBACK = TVITEMEXW_CHILDREN.CHILDRENCALLBACK;
pub const I_CHILDRENAUTO = TVITEMEXW_CHILDREN.CHILDRENAUTO;

pub const TVITEM_MASK = enum(u32) {
    CHILDREN = 64,
    DI_SETITEM = 4096,
    HANDLE = 16,
    IMAGE = 2,
    PARAM = 4,
    SELECTEDIMAGE = 32,
    STATE = 8,
    TEXT = 1,
    EXPANDEDIMAGE = 512,
    INTEGRAL = 128,
    STATEEX = 256,
    _,
    pub fn initFlags(o: struct {
        CHILDREN: u1 = 0,
        DI_SETITEM: u1 = 0,
        HANDLE: u1 = 0,
        IMAGE: u1 = 0,
        PARAM: u1 = 0,
        SELECTEDIMAGE: u1 = 0,
        STATE: u1 = 0,
        TEXT: u1 = 0,
        EXPANDEDIMAGE: u1 = 0,
        INTEGRAL: u1 = 0,
        STATEEX: u1 = 0,
    }) TVITEM_MASK {
        return @as(TVITEM_MASK, @enumFromInt((if (o.CHILDREN == 1) @intFromEnum(TVITEM_MASK.CHILDREN) else 0) | (if (o.DI_SETITEM == 1) @intFromEnum(TVITEM_MASK.DI_SETITEM) else 0) | (if (o.HANDLE == 1) @intFromEnum(TVITEM_MASK.HANDLE) else 0) | (if (o.IMAGE == 1) @intFromEnum(TVITEM_MASK.IMAGE) else 0) | (if (o.PARAM == 1) @intFromEnum(TVITEM_MASK.PARAM) else 0) | (if (o.SELECTEDIMAGE == 1) @intFromEnum(TVITEM_MASK.SELECTEDIMAGE) else 0) | (if (o.STATE == 1) @intFromEnum(TVITEM_MASK.STATE) else 0) | (if (o.TEXT == 1) @intFromEnum(TVITEM_MASK.TEXT) else 0) | (if (o.EXPANDEDIMAGE == 1) @intFromEnum(TVITEM_MASK.EXPANDEDIMAGE) else 0) | (if (o.INTEGRAL == 1) @intFromEnum(TVITEM_MASK.INTEGRAL) else 0) | (if (o.STATEEX == 1) @intFromEnum(TVITEM_MASK.STATEEX) else 0)));
    }
};
pub const TVIF_CHILDREN = TVITEM_MASK.CHILDREN;
pub const TVIF_DI_SETITEM = TVITEM_MASK.DI_SETITEM;
pub const TVIF_HANDLE = TVITEM_MASK.HANDLE;
pub const TVIF_IMAGE = TVITEM_MASK.IMAGE;
pub const TVIF_PARAM = TVITEM_MASK.PARAM;
pub const TVIF_SELECTEDIMAGE = TVITEM_MASK.SELECTEDIMAGE;
pub const TVIF_STATE = TVITEM_MASK.STATE;
pub const TVIF_TEXT = TVITEM_MASK.TEXT;
pub const TVIF_EXPANDEDIMAGE = TVITEM_MASK.EXPANDEDIMAGE;
pub const TVIF_INTEGRAL = TVITEM_MASK.INTEGRAL;
pub const TVIF_STATEEX = TVITEM_MASK.STATEEX;

pub const TCITEMHEADERA_MASK = enum(u32) {
    IMAGE = 2,
    RTLREADING = 4,
    TEXT = 1,
    PARAM = 8,
    STATE = 16,
    _,
    pub fn initFlags(o: struct {
        IMAGE: u1 = 0,
        RTLREADING: u1 = 0,
        TEXT: u1 = 0,
        PARAM: u1 = 0,
        STATE: u1 = 0,
    }) TCITEMHEADERA_MASK {
        return @as(TCITEMHEADERA_MASK, @enumFromInt((if (o.IMAGE == 1) @intFromEnum(TCITEMHEADERA_MASK.IMAGE) else 0) | (if (o.RTLREADING == 1) @intFromEnum(TCITEMHEADERA_MASK.RTLREADING) else 0) | (if (o.TEXT == 1) @intFromEnum(TCITEMHEADERA_MASK.TEXT) else 0) | (if (o.PARAM == 1) @intFromEnum(TCITEMHEADERA_MASK.PARAM) else 0) | (if (o.STATE == 1) @intFromEnum(TCITEMHEADERA_MASK.STATE) else 0)));
    }
};
pub const TCIF_IMAGE = TCITEMHEADERA_MASK.IMAGE;
pub const TCIF_RTLREADING = TCITEMHEADERA_MASK.RTLREADING;
pub const TCIF_TEXT = TCITEMHEADERA_MASK.TEXT;
pub const TCIF_PARAM = TCITEMHEADERA_MASK.PARAM;
pub const TCIF_STATE = TCITEMHEADERA_MASK.STATE;

pub const TCHITTESTINFO_FLAGS = enum(u32) {
    NOWHERE = 1,
    ONITEM = 6,
    ONITEMICON = 2,
    ONITEMLABEL = 4,
};
pub const TCHT_NOWHERE = TCHITTESTINFO_FLAGS.NOWHERE;
pub const TCHT_ONITEM = TCHITTESTINFO_FLAGS.ONITEM;
pub const TCHT_ONITEMICON = TCHITTESTINFO_FLAGS.ONITEMICON;
pub const TCHT_ONITEMLABEL = TCHITTESTINFO_FLAGS.ONITEMLABEL;

pub const COMBOBOXINFO_BUTTON_STATE = enum(u32) {
    INVISIBLE = 32768,
    PRESSED = 8,
    FOCUSABLE = 1048576,
    OFFSCREEN = 65536,
    UNAVAILABLE = 1,
};
pub const STATE_SYSTEM_INVISIBLE = COMBOBOXINFO_BUTTON_STATE.INVISIBLE;
pub const STATE_SYSTEM_PRESSED = COMBOBOXINFO_BUTTON_STATE.PRESSED;
pub const STATE_SYSTEM_FOCUSABLE = COMBOBOXINFO_BUTTON_STATE.FOCUSABLE;
pub const STATE_SYSTEM_OFFSCREEN = COMBOBOXINFO_BUTTON_STATE.OFFSCREEN;
pub const STATE_SYSTEM_UNAVAILABLE = COMBOBOXINFO_BUTTON_STATE.UNAVAILABLE;

pub const NMCUSTOMDRAW_DRAW_STAGE = enum(u32) {
    POSTPAINT = 2,
    PREERASE = 3,
    PREPAINT = 1,
    ITEMPOSTERASE = 65540,
    ITEMPOSTPAINT = 65538,
    ITEMPREERASE = 65539,
    ITEMPREPAINT = 65537,
    SUBITEM = 131072,
};
pub const CDDS_POSTPAINT = NMCUSTOMDRAW_DRAW_STAGE.POSTPAINT;
pub const CDDS_PREERASE = NMCUSTOMDRAW_DRAW_STAGE.PREERASE;
pub const CDDS_PREPAINT = NMCUSTOMDRAW_DRAW_STAGE.PREPAINT;
pub const CDDS_ITEMPOSTERASE = NMCUSTOMDRAW_DRAW_STAGE.ITEMPOSTERASE;
pub const CDDS_ITEMPOSTPAINT = NMCUSTOMDRAW_DRAW_STAGE.ITEMPOSTPAINT;
pub const CDDS_ITEMPREERASE = NMCUSTOMDRAW_DRAW_STAGE.ITEMPREERASE;
pub const CDDS_ITEMPREPAINT = NMCUSTOMDRAW_DRAW_STAGE.ITEMPREPAINT;
pub const CDDS_SUBITEM = NMCUSTOMDRAW_DRAW_STAGE.SUBITEM;

pub const MCGRIDINFO_PART = enum(u32) {
    CALENDARCONTROL = 0,
    NEXT = 1,
    PREV = 2,
    FOOTER = 3,
    CALENDAR = 4,
    CALENDARHEADER = 5,
    CALENDARBODY = 6,
    CALENDARROW = 7,
    CALENDARCELL = 8,
};
pub const MCGIP_CALENDARCONTROL = MCGRIDINFO_PART.CALENDARCONTROL;
pub const MCGIP_NEXT = MCGRIDINFO_PART.NEXT;
pub const MCGIP_PREV = MCGRIDINFO_PART.PREV;
pub const MCGIP_FOOTER = MCGRIDINFO_PART.FOOTER;
pub const MCGIP_CALENDAR = MCGRIDINFO_PART.CALENDAR;
pub const MCGIP_CALENDARHEADER = MCGRIDINFO_PART.CALENDARHEADER;
pub const MCGIP_CALENDARBODY = MCGRIDINFO_PART.CALENDARBODY;
pub const MCGIP_CALENDARROW = MCGRIDINFO_PART.CALENDARROW;
pub const MCGIP_CALENDARCELL = MCGRIDINFO_PART.CALENDARCELL;

pub const LVITEMA_GROUP_ID = enum(i32) {
    CALLBACK = -1,
    NONE = -2,
};
pub const I_GROUPIDCALLBACK = LVITEMA_GROUP_ID.CALLBACK;
pub const I_GROUPIDNONE = LVITEMA_GROUP_ID.NONE;

pub const NMTBHOTITEM_FLAGS = enum(u32) {
    ACCELERATOR = 4,
    ARROWKEYS = 2,
    DUPACCEL = 8,
    ENTERING = 16,
    LEAVING = 32,
    LMOUSE = 128,
    MOUSE = 1,
    OTHER = 0,
    RESELECT = 64,
    TOGGLEDROPDOWN = 256,
    _,
    pub fn initFlags(o: struct {
        ACCELERATOR: u1 = 0,
        ARROWKEYS: u1 = 0,
        DUPACCEL: u1 = 0,
        ENTERING: u1 = 0,
        LEAVING: u1 = 0,
        LMOUSE: u1 = 0,
        MOUSE: u1 = 0,
        OTHER: u1 = 0,
        RESELECT: u1 = 0,
        TOGGLEDROPDOWN: u1 = 0,
    }) NMTBHOTITEM_FLAGS {
        return @as(NMTBHOTITEM_FLAGS, @enumFromInt((if (o.ACCELERATOR == 1) @intFromEnum(NMTBHOTITEM_FLAGS.ACCELERATOR) else 0) | (if (o.ARROWKEYS == 1) @intFromEnum(NMTBHOTITEM_FLAGS.ARROWKEYS) else 0) | (if (o.DUPACCEL == 1) @intFromEnum(NMTBHOTITEM_FLAGS.DUPACCEL) else 0) | (if (o.ENTERING == 1) @intFromEnum(NMTBHOTITEM_FLAGS.ENTERING) else 0) | (if (o.LEAVING == 1) @intFromEnum(NMTBHOTITEM_FLAGS.LEAVING) else 0) | (if (o.LMOUSE == 1) @intFromEnum(NMTBHOTITEM_FLAGS.LMOUSE) else 0) | (if (o.MOUSE == 1) @intFromEnum(NMTBHOTITEM_FLAGS.MOUSE) else 0) | (if (o.OTHER == 1) @intFromEnum(NMTBHOTITEM_FLAGS.OTHER) else 0) | (if (o.RESELECT == 1) @intFromEnum(NMTBHOTITEM_FLAGS.RESELECT) else 0) | (if (o.TOGGLEDROPDOWN == 1) @intFromEnum(NMTBHOTITEM_FLAGS.TOGGLEDROPDOWN) else 0)));
    }
};
pub const HICF_ACCELERATOR = NMTBHOTITEM_FLAGS.ACCELERATOR;
pub const HICF_ARROWKEYS = NMTBHOTITEM_FLAGS.ARROWKEYS;
pub const HICF_DUPACCEL = NMTBHOTITEM_FLAGS.DUPACCEL;
pub const HICF_ENTERING = NMTBHOTITEM_FLAGS.ENTERING;
pub const HICF_LEAVING = NMTBHOTITEM_FLAGS.LEAVING;
pub const HICF_LMOUSE = NMTBHOTITEM_FLAGS.LMOUSE;
pub const HICF_MOUSE = NMTBHOTITEM_FLAGS.MOUSE;
pub const HICF_OTHER = NMTBHOTITEM_FLAGS.OTHER;
pub const HICF_RESELECT = NMTBHOTITEM_FLAGS.RESELECT;
pub const HICF_TOGGLEDROPDOWN = NMTBHOTITEM_FLAGS.TOGGLEDROPDOWN;

pub const TTTOOLINFO_FLAGS = enum(u32) {
    ABSOLUTE = 128,
    CENTERTIP = 2,
    IDISHWND = 1,
    PARSELINKS = 4096,
    RTLREADING = 4,
    SUBCLASS = 16,
    TRACK = 32,
    TRANSPARENT = 256,
    _,
    pub fn initFlags(o: struct {
        ABSOLUTE: u1 = 0,
        CENTERTIP: u1 = 0,
        IDISHWND: u1 = 0,
        PARSELINKS: u1 = 0,
        RTLREADING: u1 = 0,
        SUBCLASS: u1 = 0,
        TRACK: u1 = 0,
        TRANSPARENT: u1 = 0,
    }) TTTOOLINFO_FLAGS {
        return @as(TTTOOLINFO_FLAGS, @enumFromInt((if (o.ABSOLUTE == 1) @intFromEnum(TTTOOLINFO_FLAGS.ABSOLUTE) else 0) | (if (o.CENTERTIP == 1) @intFromEnum(TTTOOLINFO_FLAGS.CENTERTIP) else 0) | (if (o.IDISHWND == 1) @intFromEnum(TTTOOLINFO_FLAGS.IDISHWND) else 0) | (if (o.PARSELINKS == 1) @intFromEnum(TTTOOLINFO_FLAGS.PARSELINKS) else 0) | (if (o.RTLREADING == 1) @intFromEnum(TTTOOLINFO_FLAGS.RTLREADING) else 0) | (if (o.SUBCLASS == 1) @intFromEnum(TTTOOLINFO_FLAGS.SUBCLASS) else 0) | (if (o.TRACK == 1) @intFromEnum(TTTOOLINFO_FLAGS.TRACK) else 0) | (if (o.TRANSPARENT == 1) @intFromEnum(TTTOOLINFO_FLAGS.TRANSPARENT) else 0)));
    }
};
pub const TTF_ABSOLUTE = TTTOOLINFO_FLAGS.ABSOLUTE;
pub const TTF_CENTERTIP = TTTOOLINFO_FLAGS.CENTERTIP;
pub const TTF_IDISHWND = TTTOOLINFO_FLAGS.IDISHWND;
pub const TTF_PARSELINKS = TTTOOLINFO_FLAGS.PARSELINKS;
pub const TTF_RTLREADING = TTTOOLINFO_FLAGS.RTLREADING;
pub const TTF_SUBCLASS = TTTOOLINFO_FLAGS.SUBCLASS;
pub const TTF_TRACK = TTTOOLINFO_FLAGS.TRACK;
pub const TTF_TRANSPARENT = TTTOOLINFO_FLAGS.TRANSPARENT;

pub const LVTILEVIEWINFO_FLAGS = enum(u32) {
    D = 4,
};
pub const LVTVIF_EXTENDED = LVTILEVIEWINFO_FLAGS.D;

pub const NMPGSCROLL_DIR = enum(u32) {
    DOWN = 2,
    LEFT = 4,
    RIGHT = 8,
    UP = 1,
};
pub const PGF_SCROLLDOWN = NMPGSCROLL_DIR.DOWN;
pub const PGF_SCROLLLEFT = NMPGSCROLL_DIR.LEFT;
pub const PGF_SCROLLRIGHT = NMPGSCROLL_DIR.RIGHT;
pub const PGF_SCROLLUP = NMPGSCROLL_DIR.UP;

pub const LVCOLUMNW_MASK = enum(u32) {
    FMT = 1,
    WIDTH = 2,
    TEXT = 4,
    SUBITEM = 8,
    IMAGE = 16,
    ORDER = 32,
    MINWIDTH = 64,
    DEFAULTWIDTH = 128,
    IDEALWIDTH = 256,
    _,
    pub fn initFlags(o: struct {
        FMT: u1 = 0,
        WIDTH: u1 = 0,
        TEXT: u1 = 0,
        SUBITEM: u1 = 0,
        IMAGE: u1 = 0,
        ORDER: u1 = 0,
        MINWIDTH: u1 = 0,
        DEFAULTWIDTH: u1 = 0,
        IDEALWIDTH: u1 = 0,
    }) LVCOLUMNW_MASK {
        return @as(LVCOLUMNW_MASK, @enumFromInt((if (o.FMT == 1) @intFromEnum(LVCOLUMNW_MASK.FMT) else 0) | (if (o.WIDTH == 1) @intFromEnum(LVCOLUMNW_MASK.WIDTH) else 0) | (if (o.TEXT == 1) @intFromEnum(LVCOLUMNW_MASK.TEXT) else 0) | (if (o.SUBITEM == 1) @intFromEnum(LVCOLUMNW_MASK.SUBITEM) else 0) | (if (o.IMAGE == 1) @intFromEnum(LVCOLUMNW_MASK.IMAGE) else 0) | (if (o.ORDER == 1) @intFromEnum(LVCOLUMNW_MASK.ORDER) else 0) | (if (o.MINWIDTH == 1) @intFromEnum(LVCOLUMNW_MASK.MINWIDTH) else 0) | (if (o.DEFAULTWIDTH == 1) @intFromEnum(LVCOLUMNW_MASK.DEFAULTWIDTH) else 0) | (if (o.IDEALWIDTH == 1) @intFromEnum(LVCOLUMNW_MASK.IDEALWIDTH) else 0)));
    }
};
pub const LVCF_FMT = LVCOLUMNW_MASK.FMT;
pub const LVCF_WIDTH = LVCOLUMNW_MASK.WIDTH;
pub const LVCF_TEXT = LVCOLUMNW_MASK.TEXT;
pub const LVCF_SUBITEM = LVCOLUMNW_MASK.SUBITEM;
pub const LVCF_IMAGE = LVCOLUMNW_MASK.IMAGE;
pub const LVCF_ORDER = LVCOLUMNW_MASK.ORDER;
pub const LVCF_MINWIDTH = LVCOLUMNW_MASK.MINWIDTH;
pub const LVCF_DEFAULTWIDTH = LVCOLUMNW_MASK.DEFAULTWIDTH;
pub const LVCF_IDEALWIDTH = LVCOLUMNW_MASK.IDEALWIDTH;

pub const LVFINDINFOW_FLAGS = enum(u32) {
    PARAM = 1,
    PARTIAL = 8,
    STRING = 2,
    SUBSTRING = 4,
    WRAP = 32,
    NEARESTXY = 64,
    _,
    pub fn initFlags(o: struct {
        PARAM: u1 = 0,
        PARTIAL: u1 = 0,
        STRING: u1 = 0,
        SUBSTRING: u1 = 0,
        WRAP: u1 = 0,
        NEARESTXY: u1 = 0,
    }) LVFINDINFOW_FLAGS {
        return @as(LVFINDINFOW_FLAGS, @enumFromInt((if (o.PARAM == 1) @intFromEnum(LVFINDINFOW_FLAGS.PARAM) else 0) | (if (o.PARTIAL == 1) @intFromEnum(LVFINDINFOW_FLAGS.PARTIAL) else 0) | (if (o.STRING == 1) @intFromEnum(LVFINDINFOW_FLAGS.STRING) else 0) | (if (o.SUBSTRING == 1) @intFromEnum(LVFINDINFOW_FLAGS.SUBSTRING) else 0) | (if (o.WRAP == 1) @intFromEnum(LVFINDINFOW_FLAGS.WRAP) else 0) | (if (o.NEARESTXY == 1) @intFromEnum(LVFINDINFOW_FLAGS.NEARESTXY) else 0)));
    }
};
pub const LVFI_PARAM = LVFINDINFOW_FLAGS.PARAM;
pub const LVFI_PARTIAL = LVFINDINFOW_FLAGS.PARTIAL;
pub const LVFI_STRING = LVFINDINFOW_FLAGS.STRING;
pub const LVFI_SUBSTRING = LVFINDINFOW_FLAGS.SUBSTRING;
pub const LVFI_WRAP = LVFINDINFOW_FLAGS.WRAP;
pub const LVFI_NEARESTXY = LVFINDINFOW_FLAGS.NEARESTXY;

pub const BUTTON_IMAGELIST_ALIGN = enum(u32) {
    LEFT = 0,
    RIGHT = 1,
    TOP = 2,
    BOTTOM = 3,
    CENTER = 4,
};
pub const BUTTON_IMAGELIST_ALIGN_LEFT = BUTTON_IMAGELIST_ALIGN.LEFT;
pub const BUTTON_IMAGELIST_ALIGN_RIGHT = BUTTON_IMAGELIST_ALIGN.RIGHT;
pub const BUTTON_IMAGELIST_ALIGN_TOP = BUTTON_IMAGELIST_ALIGN.TOP;
pub const BUTTON_IMAGELIST_ALIGN_BOTTOM = BUTTON_IMAGELIST_ALIGN.BOTTOM;
pub const BUTTON_IMAGELIST_ALIGN_CENTER = BUTTON_IMAGELIST_ALIGN.CENTER;

pub const TBBUTTONINFOW_MASK = enum(u32) {
    BYINDEX = 2147483648,
    COMMAND = 32,
    IMAGE = 1,
    LPARAM = 16,
    SIZE = 64,
    STATE = 4,
    STYLE = 8,
    TEXT = 2,
    _,
    pub fn initFlags(o: struct {
        BYINDEX: u1 = 0,
        COMMAND: u1 = 0,
        IMAGE: u1 = 0,
        LPARAM: u1 = 0,
        SIZE: u1 = 0,
        STATE: u1 = 0,
        STYLE: u1 = 0,
        TEXT: u1 = 0,
    }) TBBUTTONINFOW_MASK {
        return @as(TBBUTTONINFOW_MASK, @enumFromInt((if (o.BYINDEX == 1) @intFromEnum(TBBUTTONINFOW_MASK.BYINDEX) else 0) | (if (o.COMMAND == 1) @intFromEnum(TBBUTTONINFOW_MASK.COMMAND) else 0) | (if (o.IMAGE == 1) @intFromEnum(TBBUTTONINFOW_MASK.IMAGE) else 0) | (if (o.LPARAM == 1) @intFromEnum(TBBUTTONINFOW_MASK.LPARAM) else 0) | (if (o.SIZE == 1) @intFromEnum(TBBUTTONINFOW_MASK.SIZE) else 0) | (if (o.STATE == 1) @intFromEnum(TBBUTTONINFOW_MASK.STATE) else 0) | (if (o.STYLE == 1) @intFromEnum(TBBUTTONINFOW_MASK.STYLE) else 0) | (if (o.TEXT == 1) @intFromEnum(TBBUTTONINFOW_MASK.TEXT) else 0)));
    }
};
pub const TBIF_BYINDEX = TBBUTTONINFOW_MASK.BYINDEX;
pub const TBIF_COMMAND = TBBUTTONINFOW_MASK.COMMAND;
pub const TBIF_IMAGE = TBBUTTONINFOW_MASK.IMAGE;
pub const TBIF_LPARAM = TBBUTTONINFOW_MASK.LPARAM;
pub const TBIF_SIZE = TBBUTTONINFOW_MASK.SIZE;
pub const TBIF_STATE = TBBUTTONINFOW_MASK.STATE;
pub const TBIF_STYLE = TBBUTTONINFOW_MASK.STYLE;
pub const TBIF_TEXT = TBBUTTONINFOW_MASK.TEXT;

pub const TBINSERTMARK_FLAGS = enum(u32) {
    NONE = 0,
    AFTER = 1,
    BACKGROUND = 2,
};
pub const TBIMHT_NONE = TBINSERTMARK_FLAGS.NONE;
pub const TBIMHT_AFTER = TBINSERTMARK_FLAGS.AFTER;
pub const TBIMHT_BACKGROUND = TBINSERTMARK_FLAGS.BACKGROUND;

pub const LVGROUP_MASK = enum(u32) {
    NONE = 0,
    HEADER = 1,
    FOOTER = 2,
    STATE = 4,
    _,
    pub fn initFlags(o: struct {
        NONE: u1 = 0,
        HEADER: u1 = 0,
        FOOTER: u1 = 0,
        STATE: u1 = 0,
    }) LVGROUP_MASK {
        return @as(LVGROUP_MASK, @enumFromInt((if (o.NONE == 1) @intFromEnum(LVGROUP_MASK.NONE) else 0) | (if (o.HEADER == 1) @intFromEnum(LVGROUP_MASK.HEADER) else 0) | (if (o.FOOTER == 1) @intFromEnum(LVGROUP_MASK.FOOTER) else 0) | (if (o.STATE == 1) @intFromEnum(LVGROUP_MASK.STATE) else 0)));
    }
};
pub const LVGF_NONE = LVGROUP_MASK.NONE;
pub const LVGF_HEADER = LVGROUP_MASK.HEADER;
pub const LVGF_FOOTER = LVGROUP_MASK.FOOTER;
pub const LVGF_STATE = LVGROUP_MASK.STATE;

pub const BP_PAINTPARAMS_FLAGS = enum(u32) {
    ERASE = 1,
    NOCLIP = 2,
    NONCLIENT = 4,
    _,
    pub fn initFlags(o: struct {
        ERASE: u1 = 0,
        NOCLIP: u1 = 0,
        NONCLIENT: u1 = 0,
    }) BP_PAINTPARAMS_FLAGS {
        return @as(BP_PAINTPARAMS_FLAGS, @enumFromInt((if (o.ERASE == 1) @intFromEnum(BP_PAINTPARAMS_FLAGS.ERASE) else 0) | (if (o.NOCLIP == 1) @intFromEnum(BP_PAINTPARAMS_FLAGS.NOCLIP) else 0) | (if (o.NONCLIENT == 1) @intFromEnum(BP_PAINTPARAMS_FLAGS.NONCLIENT) else 0)));
    }
};
pub const BPPF_ERASE = BP_PAINTPARAMS_FLAGS.ERASE;
pub const BPPF_NOCLIP = BP_PAINTPARAMS_FLAGS.NOCLIP;
pub const BPPF_NONCLIENT = BP_PAINTPARAMS_FLAGS.NONCLIENT;

pub const TVHITTESTINFO_FLAGS = enum(u32) {
    ABOVE = 256,
    BELOW = 512,
    NOWHERE = 1,
    ONITEM = 70,
    ONITEMBUTTON = 16,
    ONITEMICON = 2,
    ONITEMINDENT = 8,
    ONITEMLABEL = 4,
    ONITEMRIGHT = 32,
    ONITEMSTATEICON = 64,
    TOLEFT = 2048,
    TORIGHT = 1024,
    _,
    pub fn initFlags(o: struct {
        ABOVE: u1 = 0,
        BELOW: u1 = 0,
        NOWHERE: u1 = 0,
        ONITEM: u1 = 0,
        ONITEMBUTTON: u1 = 0,
        ONITEMICON: u1 = 0,
        ONITEMINDENT: u1 = 0,
        ONITEMLABEL: u1 = 0,
        ONITEMRIGHT: u1 = 0,
        ONITEMSTATEICON: u1 = 0,
        TOLEFT: u1 = 0,
        TORIGHT: u1 = 0,
    }) TVHITTESTINFO_FLAGS {
        return @as(TVHITTESTINFO_FLAGS, @enumFromInt((if (o.ABOVE == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ABOVE) else 0) | (if (o.BELOW == 1) @intFromEnum(TVHITTESTINFO_FLAGS.BELOW) else 0) | (if (o.NOWHERE == 1) @intFromEnum(TVHITTESTINFO_FLAGS.NOWHERE) else 0) | (if (o.ONITEM == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ONITEM) else 0) | (if (o.ONITEMBUTTON == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ONITEMBUTTON) else 0) | (if (o.ONITEMICON == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ONITEMICON) else 0) | (if (o.ONITEMINDENT == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ONITEMINDENT) else 0) | (if (o.ONITEMLABEL == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ONITEMLABEL) else 0) | (if (o.ONITEMRIGHT == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ONITEMRIGHT) else 0) | (if (o.ONITEMSTATEICON == 1) @intFromEnum(TVHITTESTINFO_FLAGS.ONITEMSTATEICON) else 0) | (if (o.TOLEFT == 1) @intFromEnum(TVHITTESTINFO_FLAGS.TOLEFT) else 0) | (if (o.TORIGHT == 1) @intFromEnum(TVHITTESTINFO_FLAGS.TORIGHT) else 0)));
    }
};
pub const TVHT_ABOVE = TVHITTESTINFO_FLAGS.ABOVE;
pub const TVHT_BELOW = TVHITTESTINFO_FLAGS.BELOW;
pub const TVHT_NOWHERE = TVHITTESTINFO_FLAGS.NOWHERE;
pub const TVHT_ONITEM = TVHITTESTINFO_FLAGS.ONITEM;
pub const TVHT_ONITEMBUTTON = TVHITTESTINFO_FLAGS.ONITEMBUTTON;
pub const TVHT_ONITEMICON = TVHITTESTINFO_FLAGS.ONITEMICON;
pub const TVHT_ONITEMINDENT = TVHITTESTINFO_FLAGS.ONITEMINDENT;
pub const TVHT_ONITEMLABEL = TVHITTESTINFO_FLAGS.ONITEMLABEL;
pub const TVHT_ONITEMRIGHT = TVHITTESTINFO_FLAGS.ONITEMRIGHT;
pub const TVHT_ONITEMSTATEICON = TVHITTESTINFO_FLAGS.ONITEMSTATEICON;
pub const TVHT_TOLEFT = TVHITTESTINFO_FLAGS.TOLEFT;
pub const TVHT_TORIGHT = TVHITTESTINFO_FLAGS.TORIGHT;

pub const DRAWITEMSTRUCT_CTL_TYPE = enum(u32) {
    BUTTON = 4,
    COMBOBOX = 3,
    LISTBOX = 2,
    LISTVIEW = 102,
    MENU = 1,
    STATIC = 5,
    TAB = 101,
};
pub const ODT_BUTTON = DRAWITEMSTRUCT_CTL_TYPE.BUTTON;
pub const ODT_COMBOBOX = DRAWITEMSTRUCT_CTL_TYPE.COMBOBOX;
pub const ODT_LISTBOX = DRAWITEMSTRUCT_CTL_TYPE.LISTBOX;
pub const ODT_LISTVIEW = DRAWITEMSTRUCT_CTL_TYPE.LISTVIEW;
pub const ODT_MENU = DRAWITEMSTRUCT_CTL_TYPE.MENU;
pub const ODT_STATIC = DRAWITEMSTRUCT_CTL_TYPE.STATIC;
pub const ODT_TAB = DRAWITEMSTRUCT_CTL_TYPE.TAB;

pub const NMPGCALCSIZE_FLAGS = enum(u32) {
    HEIGHT = 2,
    WIDTH = 1,
};
pub const PGF_CALCHEIGHT = NMPGCALCSIZE_FLAGS.HEIGHT;
pub const PGF_CALCWIDTH = NMPGCALCSIZE_FLAGS.WIDTH;

pub const NMLVCUSTOMDRAW_ALIGN = enum(u32) {
    CENTER = 2,
    LEFT = 1,
    RIGHT = 4,
};
pub const LVGA_HEADER_CENTER = NMLVCUSTOMDRAW_ALIGN.CENTER;
pub const LVGA_HEADER_LEFT = NMLVCUSTOMDRAW_ALIGN.LEFT;
pub const LVGA_HEADER_RIGHT = NMLVCUSTOMDRAW_ALIGN.RIGHT;

pub const MCGRIDINFO_FLAGS = enum(u32) {
    DATE = 1,
    RECT = 2,
    NAME = 4,
    _,
    pub fn initFlags(o: struct {
        DATE: u1 = 0,
        RECT: u1 = 0,
        NAME: u1 = 0,
    }) MCGRIDINFO_FLAGS {
        return @as(MCGRIDINFO_FLAGS, @enumFromInt((if (o.DATE == 1) @intFromEnum(MCGRIDINFO_FLAGS.DATE) else 0) | (if (o.RECT == 1) @intFromEnum(MCGRIDINFO_FLAGS.RECT) else 0) | (if (o.NAME == 1) @intFromEnum(MCGRIDINFO_FLAGS.NAME) else 0)));
    }
};
pub const MCGIF_DATE = MCGRIDINFO_FLAGS.DATE;
pub const MCGIF_RECT = MCGRIDINFO_FLAGS.RECT;
pub const MCGIF_NAME = MCGRIDINFO_FLAGS.NAME;

pub const LVHITTESTINFO_FLAGS = enum(u32) {
    ABOVE = 8,
    BELOW = 16,
    NOWHERE = 1,
    ONITEMICON = 2,
    ONITEMLABEL = 4,
    // ONITEMSTATEICON = 8, this enum value conflicts with ABOVE
    TOLEFT = 64,
    TORIGHT = 32,
    EX_GROUP_HEADER = 268435456,
    EX_GROUP_FOOTER = 536870912,
    EX_GROUP_COLLAPSE = 1073741824,
    EX_GROUP_BACKGROUND = 2147483648,
    EX_GROUP_STATEICON = 16777216,
    EX_GROUP_SUBSETLINK = 33554432,
    EX_GROUP = 4076863488,
    EX_ONCONTENTS = 67108864,
    EX_FOOTER = 134217728,
    _,
    pub fn initFlags(o: struct {
        ABOVE: u1 = 0,
        BELOW: u1 = 0,
        NOWHERE: u1 = 0,
        ONITEMICON: u1 = 0,
        ONITEMLABEL: u1 = 0,
        TOLEFT: u1 = 0,
        TORIGHT: u1 = 0,
        EX_GROUP_HEADER: u1 = 0,
        EX_GROUP_FOOTER: u1 = 0,
        EX_GROUP_COLLAPSE: u1 = 0,
        EX_GROUP_BACKGROUND: u1 = 0,
        EX_GROUP_STATEICON: u1 = 0,
        EX_GROUP_SUBSETLINK: u1 = 0,
        EX_GROUP: u1 = 0,
        EX_ONCONTENTS: u1 = 0,
        EX_FOOTER: u1 = 0,
    }) LVHITTESTINFO_FLAGS {
        return @as(LVHITTESTINFO_FLAGS, @enumFromInt((if (o.ABOVE == 1) @intFromEnum(LVHITTESTINFO_FLAGS.ABOVE) else 0) | (if (o.BELOW == 1) @intFromEnum(LVHITTESTINFO_FLAGS.BELOW) else 0) | (if (o.NOWHERE == 1) @intFromEnum(LVHITTESTINFO_FLAGS.NOWHERE) else 0) | (if (o.ONITEMICON == 1) @intFromEnum(LVHITTESTINFO_FLAGS.ONITEMICON) else 0) | (if (o.ONITEMLABEL == 1) @intFromEnum(LVHITTESTINFO_FLAGS.ONITEMLABEL) else 0) | (if (o.TOLEFT == 1) @intFromEnum(LVHITTESTINFO_FLAGS.TOLEFT) else 0) | (if (o.TORIGHT == 1) @intFromEnum(LVHITTESTINFO_FLAGS.TORIGHT) else 0) | (if (o.EX_GROUP_HEADER == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_GROUP_HEADER) else 0) | (if (o.EX_GROUP_FOOTER == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_GROUP_FOOTER) else 0) | (if (o.EX_GROUP_COLLAPSE == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_GROUP_COLLAPSE) else 0) | (if (o.EX_GROUP_BACKGROUND == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_GROUP_BACKGROUND) else 0) | (if (o.EX_GROUP_STATEICON == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_GROUP_STATEICON) else 0) | (if (o.EX_GROUP_SUBSETLINK == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_GROUP_SUBSETLINK) else 0) | (if (o.EX_GROUP == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_GROUP) else 0) | (if (o.EX_ONCONTENTS == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_ONCONTENTS) else 0) | (if (o.EX_FOOTER == 1) @intFromEnum(LVHITTESTINFO_FLAGS.EX_FOOTER) else 0)));
    }
};
pub const LVHT_ABOVE = LVHITTESTINFO_FLAGS.ABOVE;
pub const LVHT_BELOW = LVHITTESTINFO_FLAGS.BELOW;
pub const LVHT_NOWHERE = LVHITTESTINFO_FLAGS.NOWHERE;
pub const LVHT_ONITEMICON = LVHITTESTINFO_FLAGS.ONITEMICON;
pub const LVHT_ONITEMLABEL = LVHITTESTINFO_FLAGS.ONITEMLABEL;
pub const LVHT_ONITEMSTATEICON = LVHITTESTINFO_FLAGS.ABOVE;
pub const LVHT_TOLEFT = LVHITTESTINFO_FLAGS.TOLEFT;
pub const LVHT_TORIGHT = LVHITTESTINFO_FLAGS.TORIGHT;
pub const LVHT_EX_GROUP_HEADER = LVHITTESTINFO_FLAGS.EX_GROUP_HEADER;
pub const LVHT_EX_GROUP_FOOTER = LVHITTESTINFO_FLAGS.EX_GROUP_FOOTER;
pub const LVHT_EX_GROUP_COLLAPSE = LVHITTESTINFO_FLAGS.EX_GROUP_COLLAPSE;
pub const LVHT_EX_GROUP_BACKGROUND = LVHITTESTINFO_FLAGS.EX_GROUP_BACKGROUND;
pub const LVHT_EX_GROUP_STATEICON = LVHITTESTINFO_FLAGS.EX_GROUP_STATEICON;
pub const LVHT_EX_GROUP_SUBSETLINK = LVHITTESTINFO_FLAGS.EX_GROUP_SUBSETLINK;
pub const LVHT_EX_GROUP = LVHITTESTINFO_FLAGS.EX_GROUP;
pub const LVHT_EX_ONCONTENTS = LVHITTESTINFO_FLAGS.EX_ONCONTENTS;
pub const LVHT_EX_FOOTER = LVHITTESTINFO_FLAGS.EX_FOOTER;

pub const INITCOMMONCONTROLSEX_ICC = enum(u32) {
    ANIMATE_CLASS = 128,
    BAR_CLASSES = 4,
    COOL_CLASSES = 1024,
    DATE_CLASSES = 256,
    HOTKEY_CLASS = 64,
    INTERNET_CLASSES = 2048,
    LINK_CLASS = 32768,
    LISTVIEW_CLASSES = 1,
    NATIVEFNTCTL_CLASS = 8192,
    PAGESCROLLER_CLASS = 4096,
    PROGRESS_CLASS = 32,
    STANDARD_CLASSES = 16384,
    TAB_CLASSES = 8,
    TREEVIEW_CLASSES = 2,
    UPDOWN_CLASS = 16,
    USEREX_CLASSES = 512,
    WIN95_CLASSES = 255,
    _,
    pub fn initFlags(o: struct {
        ANIMATE_CLASS: u1 = 0,
        BAR_CLASSES: u1 = 0,
        COOL_CLASSES: u1 = 0,
        DATE_CLASSES: u1 = 0,
        HOTKEY_CLASS: u1 = 0,
        INTERNET_CLASSES: u1 = 0,
        LINK_CLASS: u1 = 0,
        LISTVIEW_CLASSES: u1 = 0,
        NATIVEFNTCTL_CLASS: u1 = 0,
        PAGESCROLLER_CLASS: u1 = 0,
        PROGRESS_CLASS: u1 = 0,
        STANDARD_CLASSES: u1 = 0,
        TAB_CLASSES: u1 = 0,
        TREEVIEW_CLASSES: u1 = 0,
        UPDOWN_CLASS: u1 = 0,
        USEREX_CLASSES: u1 = 0,
        WIN95_CLASSES: u1 = 0,
    }) INITCOMMONCONTROLSEX_ICC {
        return @as(INITCOMMONCONTROLSEX_ICC, @enumFromInt((if (o.ANIMATE_CLASS == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.ANIMATE_CLASS) else 0) | (if (o.BAR_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.BAR_CLASSES) else 0) | (if (o.COOL_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.COOL_CLASSES) else 0) | (if (o.DATE_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.DATE_CLASSES) else 0) | (if (o.HOTKEY_CLASS == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.HOTKEY_CLASS) else 0) | (if (o.INTERNET_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.INTERNET_CLASSES) else 0) | (if (o.LINK_CLASS == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.LINK_CLASS) else 0) | (if (o.LISTVIEW_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.LISTVIEW_CLASSES) else 0) | (if (o.NATIVEFNTCTL_CLASS == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.NATIVEFNTCTL_CLASS) else 0) | (if (o.PAGESCROLLER_CLASS == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.PAGESCROLLER_CLASS) else 0) | (if (o.PROGRESS_CLASS == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.PROGRESS_CLASS) else 0) | (if (o.STANDARD_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.STANDARD_CLASSES) else 0) | (if (o.TAB_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.TAB_CLASSES) else 0) | (if (o.TREEVIEW_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.TREEVIEW_CLASSES) else 0) | (if (o.UPDOWN_CLASS == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.UPDOWN_CLASS) else 0) | (if (o.USEREX_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.USEREX_CLASSES) else 0) | (if (o.WIN95_CLASSES == 1) @intFromEnum(INITCOMMONCONTROLSEX_ICC.WIN95_CLASSES) else 0)));
    }
};
pub const ICC_ANIMATE_CLASS = INITCOMMONCONTROLSEX_ICC.ANIMATE_CLASS;
pub const ICC_BAR_CLASSES = INITCOMMONCONTROLSEX_ICC.BAR_CLASSES;
pub const ICC_COOL_CLASSES = INITCOMMONCONTROLSEX_ICC.COOL_CLASSES;
pub const ICC_DATE_CLASSES = INITCOMMONCONTROLSEX_ICC.DATE_CLASSES;
pub const ICC_HOTKEY_CLASS = INITCOMMONCONTROLSEX_ICC.HOTKEY_CLASS;
pub const ICC_INTERNET_CLASSES = INITCOMMONCONTROLSEX_ICC.INTERNET_CLASSES;
pub const ICC_LINK_CLASS = INITCOMMONCONTROLSEX_ICC.LINK_CLASS;
pub const ICC_LISTVIEW_CLASSES = INITCOMMONCONTROLSEX_ICC.LISTVIEW_CLASSES;
pub const ICC_NATIVEFNTCTL_CLASS = INITCOMMONCONTROLSEX_ICC.NATIVEFNTCTL_CLASS;
pub const ICC_PAGESCROLLER_CLASS = INITCOMMONCONTROLSEX_ICC.PAGESCROLLER_CLASS;
pub const ICC_PROGRESS_CLASS = INITCOMMONCONTROLSEX_ICC.PROGRESS_CLASS;
pub const ICC_STANDARD_CLASSES = INITCOMMONCONTROLSEX_ICC.STANDARD_CLASSES;
pub const ICC_TAB_CLASSES = INITCOMMONCONTROLSEX_ICC.TAB_CLASSES;
pub const ICC_TREEVIEW_CLASSES = INITCOMMONCONTROLSEX_ICC.TREEVIEW_CLASSES;
pub const ICC_UPDOWN_CLASS = INITCOMMONCONTROLSEX_ICC.UPDOWN_CLASS;
pub const ICC_USEREX_CLASSES = INITCOMMONCONTROLSEX_ICC.USEREX_CLASSES;
pub const ICC_WIN95_CLASSES = INITCOMMONCONTROLSEX_ICC.WIN95_CLASSES;

pub const NMLVCUSTOMDRAW_ITEM_TYPE = enum(u32) {
    ITEM = 0,
    GROUP = 1,
    ITEMSLIST = 2,
};
pub const LVCDI_ITEM = NMLVCUSTOMDRAW_ITEM_TYPE.ITEM;
pub const LVCDI_GROUP = NMLVCUSTOMDRAW_ITEM_TYPE.GROUP;
pub const LVCDI_ITEMSLIST = NMLVCUSTOMDRAW_ITEM_TYPE.ITEMSLIST;

pub const NMTBDISPINFOW_MASK = enum(u32) {
    IMAGE = 1,
    TEXT = 2,
    DI_SETITEM = 268435456,
    _,
    pub fn initFlags(o: struct {
        IMAGE: u1 = 0,
        TEXT: u1 = 0,
        DI_SETITEM: u1 = 0,
    }) NMTBDISPINFOW_MASK {
        return @as(NMTBDISPINFOW_MASK, @enumFromInt((if (o.IMAGE == 1) @intFromEnum(NMTBDISPINFOW_MASK.IMAGE) else 0) | (if (o.TEXT == 1) @intFromEnum(NMTBDISPINFOW_MASK.TEXT) else 0) | (if (o.DI_SETITEM == 1) @intFromEnum(NMTBDISPINFOW_MASK.DI_SETITEM) else 0)));
    }
};
pub const TBNF_IMAGE = NMTBDISPINFOW_MASK.IMAGE;
pub const TBNF_TEXT = NMTBDISPINFOW_MASK.TEXT;
pub const TBNF_DI_SETITEM = NMTBDISPINFOW_MASK.DI_SETITEM;

pub const NMLVEMPTYMARKUP_FLAGS = enum(u32) {
    D = 1,
};
pub const EMF_CENTERED = NMLVEMPTYMARKUP_FLAGS.D;

pub const LVFOOTERITEM_MASK = enum(u32) {
    TEXT = 1,
    STATE = 2,
};
pub const LVFIF_TEXT = LVFOOTERITEM_MASK.TEXT;
pub const LVFIF_STATE = LVFOOTERITEM_MASK.STATE;

pub const IMAGELIST_CREATION_FLAGS = enum(u32) {
    MASK = 1,
    COLOR = 0,
    COLORDDB = 254,
    COLOR4 = 4,
    COLOR8 = 8,
    COLOR16 = 16,
    COLOR24 = 24,
    COLOR32 = 32,
    PALETTE = 2048,
    MIRROR = 8192,
    PERITEMMIRROR = 32768,
    ORIGINALSIZE = 65536,
    HIGHQUALITYSCALE = 131072,
    _,
    pub fn initFlags(o: struct {
        MASK: u1 = 0,
        COLOR: u1 = 0,
        COLORDDB: u1 = 0,
        COLOR4: u1 = 0,
        COLOR8: u1 = 0,
        COLOR16: u1 = 0,
        COLOR24: u1 = 0,
        COLOR32: u1 = 0,
        PALETTE: u1 = 0,
        MIRROR: u1 = 0,
        PERITEMMIRROR: u1 = 0,
        ORIGINALSIZE: u1 = 0,
        HIGHQUALITYSCALE: u1 = 0,
    }) IMAGELIST_CREATION_FLAGS {
        return @as(IMAGELIST_CREATION_FLAGS, @enumFromInt((if (o.MASK == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.MASK) else 0) | (if (o.COLOR == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.COLOR) else 0) | (if (o.COLORDDB == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.COLORDDB) else 0) | (if (o.COLOR4 == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.COLOR4) else 0) | (if (o.COLOR8 == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.COLOR8) else 0) | (if (o.COLOR16 == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.COLOR16) else 0) | (if (o.COLOR24 == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.COLOR24) else 0) | (if (o.COLOR32 == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.COLOR32) else 0) | (if (o.PALETTE == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.PALETTE) else 0) | (if (o.MIRROR == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.MIRROR) else 0) | (if (o.PERITEMMIRROR == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.PERITEMMIRROR) else 0) | (if (o.ORIGINALSIZE == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.ORIGINALSIZE) else 0) | (if (o.HIGHQUALITYSCALE == 1) @intFromEnum(IMAGELIST_CREATION_FLAGS.HIGHQUALITYSCALE) else 0)));
    }
};
pub const ILC_MASK = IMAGELIST_CREATION_FLAGS.MASK;
pub const ILC_COLOR = IMAGELIST_CREATION_FLAGS.COLOR;
pub const ILC_COLORDDB = IMAGELIST_CREATION_FLAGS.COLORDDB;
pub const ILC_COLOR4 = IMAGELIST_CREATION_FLAGS.COLOR4;
pub const ILC_COLOR8 = IMAGELIST_CREATION_FLAGS.COLOR8;
pub const ILC_COLOR16 = IMAGELIST_CREATION_FLAGS.COLOR16;
pub const ILC_COLOR24 = IMAGELIST_CREATION_FLAGS.COLOR24;
pub const ILC_COLOR32 = IMAGELIST_CREATION_FLAGS.COLOR32;
pub const ILC_PALETTE = IMAGELIST_CREATION_FLAGS.PALETTE;
pub const ILC_MIRROR = IMAGELIST_CREATION_FLAGS.MIRROR;
pub const ILC_PERITEMMIRROR = IMAGELIST_CREATION_FLAGS.PERITEMMIRROR;
pub const ILC_ORIGINALSIZE = IMAGELIST_CREATION_FLAGS.ORIGINALSIZE;
pub const ILC_HIGHQUALITYSCALE = IMAGELIST_CREATION_FLAGS.HIGHQUALITYSCALE;

// TODO: this type has a FreeFunc 'DestroyPropertySheetPage', what can Zig do with this information?
pub const HPROPSHEETPAGE = *opaque {};

// TODO: this type has a FreeFunc 'ImageList_Destroy', what can Zig do with this information?
pub const HIMAGELIST = *opaque {};

pub const HSYNTHETICPOINTERDEVICE = *opaque {};

pub const HTREEITEM = *opaque {};

pub const HDSA = *opaque {};

pub const HDPA = *opaque {};

pub const LPFNPSPCALLBACKA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hwnd: ?HWND,
        uMsg: PSPCB_MESSAGE,
        ppsp: ?*PROPSHEETPAGEA,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        hwnd: ?HWND,
        uMsg: PSPCB_MESSAGE,
        ppsp: ?*PROPSHEETPAGEA,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPFNPSPCALLBACKW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hwnd: ?HWND,
        uMsg: PSPCB_MESSAGE,
        ppsp: ?*PROPSHEETPAGEW,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        hwnd: ?HWND,
        uMsg: PSPCB_MESSAGE,
        ppsp: ?*PROPSHEETPAGEW,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PROPSHEETPAGEA_V1 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u8,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u8,
    },
    pszTitle: ?[*:0]const u8,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKA,
    pcRefParent: ?*u32,
};

pub const PROPSHEETPAGEA_V2 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u8,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u8,
    },
    pszTitle: ?[*:0]const u8,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKA,
    pcRefParent: ?*u32,
    pszHeaderTitle: ?[*:0]const u8,
    pszHeaderSubTitle: ?[*:0]const u8,
};

pub const PROPSHEETPAGEA_V3 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u8,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u8,
    },
    pszTitle: ?[*:0]const u8,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKA,
    pcRefParent: ?*u32,
    pszHeaderTitle: ?[*:0]const u8,
    pszHeaderSubTitle: ?[*:0]const u8,
    hActCtx: ?HANDLE,
};

pub const PROPSHEETPAGEA = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u8,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u8,
    },
    pszTitle: ?[*:0]const u8,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKA,
    pcRefParent: ?*u32,
    pszHeaderTitle: ?[*:0]const u8,
    pszHeaderSubTitle: ?[*:0]const u8,
    hActCtx: ?HANDLE,
    Anonymous3: extern union {
        hbmHeader: ?HBITMAP,
        pszbmHeader: ?[*:0]const u8,
    },
};

pub const PROPSHEETPAGEW_V1 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u16,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u16,
    },
    pszTitle: ?[*:0]const u16,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKW,
    pcRefParent: ?*u32,
};

pub const PROPSHEETPAGEW_V2 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u16,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u16,
    },
    pszTitle: ?[*:0]const u16,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKW,
    pcRefParent: ?*u32,
    pszHeaderTitle: ?[*:0]const u16,
    pszHeaderSubTitle: ?[*:0]const u16,
};

pub const PROPSHEETPAGEW_V3 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u16,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u16,
    },
    pszTitle: ?[*:0]const u16,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKW,
    pcRefParent: ?*u32,
    pszHeaderTitle: ?[*:0]const u16,
    pszHeaderSubTitle: ?[*:0]const u16,
    hActCtx: ?HANDLE,
};

pub const PROPSHEETPAGEW = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        pszTemplate: ?[*:0]const u16,
        pResource: ?*DLGTEMPLATE,
    },
    Anonymous2: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u16,
    },
    pszTitle: ?[*:0]const u16,
    pfnDlgProc: ?DLGPROC,
    lParam: LPARAM,
    pfnCallback: ?LPFNPSPCALLBACKW,
    pcRefParent: ?*u32,
    pszHeaderTitle: ?[*:0]const u16,
    pszHeaderSubTitle: ?[*:0]const u16,
    hActCtx: ?HANDLE,
    Anonymous3: extern union {
        hbmHeader: ?HBITMAP,
        pszbmHeader: ?[*:0]const u16,
    },
};

pub const PFNPROPSHEETCALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HWND,
        param1: u32,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: ?HWND,
        param1: u32,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PROPSHEETHEADERA_V1 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hwndParent: ?HWND,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u8,
    },
    pszCaption: ?[*:0]const u8,
    nPages: u32,
    Anonymous2: extern union {
        nStartPage: u32,
        pStartPage: ?[*:0]const u8,
    },
    Anonymous3: extern union {
        ppsp: ?*PROPSHEETPAGEA,
        phpage: ?*?HPROPSHEETPAGE,
    },
    pfnCallback: ?PFNPROPSHEETCALLBACK,
};

pub const PROPSHEETHEADERA_V2 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hwndParent: ?HWND,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u8,
    },
    pszCaption: ?[*:0]const u8,
    nPages: u32,
    Anonymous2: extern union {
        nStartPage: u32,
        pStartPage: ?[*:0]const u8,
    },
    Anonymous3: extern union {
        ppsp: ?*PROPSHEETPAGEA,
        phpage: ?*?HPROPSHEETPAGE,
    },
    pfnCallback: ?PFNPROPSHEETCALLBACK,
    Anonymous4: extern union {
        hbmWatermark: ?HBITMAP,
        pszbmWatermark: ?[*:0]const u8,
    },
    hplWatermark: ?HPALETTE,
    Anonymous5: extern union {
        hbmHeader: ?HBITMAP,
        pszbmHeader: ?[*:0]const u8,
    },
};

pub const PROPSHEETHEADERW_V1 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hwndParent: ?HWND,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u16,
    },
    pszCaption: ?[*:0]const u16,
    nPages: u32,
    Anonymous2: extern union {
        nStartPage: u32,
        pStartPage: ?[*:0]const u16,
    },
    Anonymous3: extern union {
        ppsp: ?*PROPSHEETPAGEW,
        phpage: ?*?HPROPSHEETPAGE,
    },
    pfnCallback: ?PFNPROPSHEETCALLBACK,
};

pub const PROPSHEETHEADERW_V2 = extern struct {
    dwSize: u32,
    dwFlags: u32,
    hwndParent: ?HWND,
    hInstance: ?HINSTANCE,
    Anonymous1: extern union {
        hIcon: ?HICON,
        pszIcon: ?[*:0]const u16,
    },
    pszCaption: ?[*:0]const u16,
    nPages: u32,
    Anonymous2: extern union {
        nStartPage: u32,
        pStartPage: ?[*:0]const u16,
    },
    Anonymous3: extern union {
        ppsp: ?*PROPSHEETPAGEW,
        phpage: ?*?HPROPSHEETPAGE,
    },
    pfnCallback: ?PFNPROPSHEETCALLBACK,
    Anonymous4: extern union {
        hbmWatermark: ?HBITMAP,
        pszbmWatermark: ?[*:0]const u16,
    },
    hplWatermark: ?HPALETTE,
    Anonymous5: extern union {
        hbmHeader: ?HBITMAP,
        pszbmHeader: ?[*:0]const u16,
    },
};

pub const LPFNSVADDPROPSHEETPAGE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HPROPSHEETPAGE,
        param1: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?HPROPSHEETPAGE,
        param1: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const LPFNADDPROPSHEETPAGES = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*anyopaque,
        param1: ?LPFNSVADDPROPSHEETPAGE,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*anyopaque,
        param1: ?LPFNSVADDPROPSHEETPAGE,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PSHNOTIFY = extern struct {
    hdr: NMHDR,
    lParam: LPARAM,
};

pub const INITCOMMONCONTROLSEX = extern struct {
    dwSize: u32,
    dwICC: INITCOMMONCONTROLSEX_ICC,
};

pub const COLORSCHEME = extern struct {
    dwSize: u32,
    clrBtnHighlight: u32,
    clrBtnShadow: u32,
};

pub const NMTOOLTIPSCREATED = extern struct {
    hdr: NMHDR,
    hwndToolTips: ?HWND,
};

pub const NMMOUSE = extern struct {
    hdr: NMHDR,
    dwItemSpec: usize,
    dwItemData: usize,
    pt: POINT,
    dwHitInfo: LPARAM,
};

pub const NMOBJECTNOTIFY = extern struct {
    hdr: NMHDR,
    iItem: i32,
    piid: ?*const Guid,
    pObject: ?*anyopaque,
    hResult: HRESULT,
    dwFlags: u32,
};

pub const NMKEY = extern struct {
    hdr: NMHDR,
    nVKey: u32,
    uFlags: u32,
};

pub const NMCHAR = extern struct {
    hdr: NMHDR,
    ch: u32,
    dwItemPrev: u32,
    dwItemNext: u32,
};

pub const NMCUSTOMTEXT = extern struct {
    hdr: NMHDR,
    hDC: ?HDC,
    lpString: ?[*:0]const u16,
    nCount: i32,
    lpRect: ?*RECT,
    uFormat: u32,
    fLink: BOOL,
};

pub const NMCUSTOMDRAW = extern struct {
    hdr: NMHDR,
    dwDrawStage: NMCUSTOMDRAW_DRAW_STAGE,
    hdc: ?HDC,
    rc: RECT,
    dwItemSpec: usize,
    uItemState: u32,
    lItemlParam: LPARAM,
};

pub const NMTTCUSTOMDRAW = extern struct {
    nmcd: NMCUSTOMDRAW,
    uDrawFlags: u32,
};

pub const NMCUSTOMSPLITRECTINFO = extern struct {
    hdr: NMHDR,
    rcClient: RECT,
    rcButton: RECT,
    rcSplit: RECT,
};

pub const IMAGELISTDRAWPARAMS = extern struct {
    cbSize: u32,
    himl: ?HIMAGELIST,
    i: i32,
    hdcDst: ?HDC,
    x: i32,
    y: i32,
    cx: i32,
    cy: i32,
    xBitmap: i32,
    yBitmap: i32,
    rgbBk: u32,
    rgbFg: u32,
    fStyle: u32,
    dwRop: u32,
    fState: u32,
    Frame: u32,
    crEffect: u32,
};

pub const IMAGEINFO = extern struct {
    hbmImage: ?HBITMAP,
    hbmMask: ?HBITMAP,
    Unused1: i32,
    Unused2: i32,
    rcImage: RECT,
};

pub const HD_TEXTFILTERA = extern struct {
    pszText: ?PSTR,
    cchTextMax: i32,
};

pub const HD_TEXTFILTERW = extern struct {
    pszText: ?PWSTR,
    cchTextMax: i32,
};

pub const HDITEMA = extern struct {
    mask: HDI_MASK,
    cxy: i32,
    pszText: ?PSTR,
    hbm: ?HBITMAP,
    cchTextMax: i32,
    fmt: i32,
    lParam: LPARAM,
    iImage: i32,
    iOrder: i32,
    type: u32,
    pvFilter: ?*anyopaque,
    state: u32,
};

pub const HDITEMW = extern struct {
    mask: HDI_MASK,
    cxy: i32,
    pszText: ?PWSTR,
    hbm: ?HBITMAP,
    cchTextMax: i32,
    fmt: i32,
    lParam: LPARAM,
    iImage: i32,
    iOrder: i32,
    type: u32,
    pvFilter: ?*anyopaque,
    state: u32,
};

pub const HDLAYOUT = extern struct {
    prc: ?*RECT,
    pwpos: ?*WINDOWPOS,
};

pub const HDHITTESTINFO = extern struct {
    pt: POINT,
    flags: u32,
    iItem: i32,
};

pub const NMHEADERA = extern struct {
    hdr: NMHDR,
    iItem: i32,
    iButton: HEADER_CONTROL_NOTIFICATION_BUTTON,
    pitem: ?*HDITEMA,
};

pub const NMHEADERW = extern struct {
    hdr: NMHDR,
    iItem: i32,
    iButton: HEADER_CONTROL_NOTIFICATION_BUTTON,
    pitem: ?*HDITEMW,
};

pub const NMHDDISPINFOW = extern struct {
    hdr: NMHDR,
    iItem: i32,
    mask: HDI_MASK,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iImage: i32,
    lParam: LPARAM,
};

pub const NMHDDISPINFOA = extern struct {
    hdr: NMHDR,
    iItem: i32,
    mask: HDI_MASK,
    pszText: ?PSTR,
    cchTextMax: i32,
    iImage: i32,
    lParam: LPARAM,
};

pub const NMHDFILTERBTNCLICK = extern struct {
    hdr: NMHDR,
    iItem: i32,
    rc: RECT,
};

pub const COLORMAP = extern struct {
    from: u32,
    to: u32,
};

pub const NMTBCUSTOMDRAW = extern struct {
    nmcd: NMCUSTOMDRAW,
    hbrMonoDither: ?HBRUSH,
    hbrLines: ?HBRUSH,
    hpenLines: ?HPEN,
    clrText: u32,
    clrMark: u32,
    clrTextHighlight: u32,
    clrBtnFace: u32,
    clrBtnHighlight: u32,
    clrHighlightHotTrack: u32,
    rcText: RECT,
    nStringBkMode: i32,
    nHLStringBkMode: i32,
    iListGap: i32,
};

pub const TBADDBITMAP = extern struct {
    hInst: ?HINSTANCE,
    nID: usize,
};

pub const TBSAVEPARAMSA = extern struct {
    hkr: ?HKEY,
    pszSubKey: ?[*:0]const u8,
    pszValueName: ?[*:0]const u8,
};

pub const TBSAVEPARAMSW = extern struct {
    hkr: ?HKEY,
    pszSubKey: ?[*:0]const u16,
    pszValueName: ?[*:0]const u16,
};

pub const TBINSERTMARK = extern struct {
    iButton: i32,
    dwFlags: TBINSERTMARK_FLAGS,
};

pub const TBREPLACEBITMAP = extern struct {
    hInstOld: ?HINSTANCE,
    nIDOld: usize,
    hInstNew: ?HINSTANCE,
    nIDNew: usize,
    nButtons: i32,
};

pub const TBBUTTONINFOA = extern struct {
    cbSize: u32,
    dwMask: TBBUTTONINFOW_MASK,
    idCommand: i32,
    iImage: i32,
    fsState: u8,
    fsStyle: u8,
    cx: u16,
    lParam: usize,
    pszText: ?PSTR,
    cchText: i32,
};

pub const TBBUTTONINFOW = extern struct {
    cbSize: u32,
    dwMask: TBBUTTONINFOW_MASK,
    idCommand: i32,
    iImage: i32,
    fsState: u8,
    fsStyle: u8,
    cx: u16,
    lParam: usize,
    pszText: ?PWSTR,
    cchText: i32,
};

pub const TBMETRICS = extern struct {
    cbSize: u32,
    dwMask: u32,
    cxPad: i32,
    cyPad: i32,
    cxBarPad: i32,
    cyBarPad: i32,
    cxButtonSpacing: i32,
    cyButtonSpacing: i32,
};

pub const NMTBHOTITEM = extern struct {
    hdr: NMHDR,
    idOld: i32,
    idNew: i32,
    dwFlags: NMTBHOTITEM_FLAGS,
};

pub const NMTBSAVE = extern struct {
    hdr: NMHDR,
    pData: ?*u32,
    pCurrent: ?*u32,
    cbData: u32,
    iItem: i32,
    cButtons: i32,
    tbButton: TBBUTTON,
};

pub const NMTBRESTORE = extern struct {
    hdr: NMHDR,
    pData: ?*u32,
    pCurrent: ?*u32,
    cbData: u32,
    iItem: i32,
    cButtons: i32,
    cbBytesPerRecord: i32,
    tbButton: TBBUTTON,
};

pub const NMTBGETINFOTIPA = extern struct {
    hdr: NMHDR,
    pszText: ?PSTR,
    cchTextMax: i32,
    iItem: i32,
    lParam: LPARAM,
};

pub const NMTBGETINFOTIPW = extern struct {
    hdr: NMHDR,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iItem: i32,
    lParam: LPARAM,
};

pub const NMTBDISPINFOA = extern struct {
    hdr: NMHDR,
    dwMask: NMTBDISPINFOW_MASK,
    idCommand: i32,
    lParam: usize,
    iImage: i32,
    pszText: ?PSTR,
    cchText: i32,
};

pub const NMTBDISPINFOW = extern struct {
    hdr: NMHDR,
    dwMask: NMTBDISPINFOW_MASK,
    idCommand: i32,
    lParam: usize,
    iImage: i32,
    pszText: ?PWSTR,
    cchText: i32,
};

pub const NMTOOLBARA = extern struct {
    hdr: NMHDR,
    iItem: i32,
    tbButton: TBBUTTON,
    cchText: i32,
    pszText: ?PSTR,
    rcButton: RECT,
};

pub const NMTOOLBARW = extern struct {
    hdr: NMHDR,
    iItem: i32,
    tbButton: TBBUTTON,
    cchText: i32,
    pszText: ?PWSTR,
    rcButton: RECT,
};

pub const REBARINFO = extern struct {
    cbSize: u32,
    fMask: u32,
    himl: ?HIMAGELIST,
};

pub const REBARBANDINFOA = extern struct {
    cbSize: u32,
    fMask: u32,
    fStyle: u32,
    clrFore: u32,
    clrBack: u32,
    lpText: ?PSTR,
    cch: u32,
    iImage: i32,
    hwndChild: ?HWND,
    cxMinChild: u32,
    cyMinChild: u32,
    cx: u32,
    hbmBack: ?HBITMAP,
    wID: u32,
    cyChild: u32,
    cyMaxChild: u32,
    cyIntegral: u32,
    cxIdeal: u32,
    lParam: LPARAM,
    cxHeader: u32,
    rcChevronLocation: RECT,
    uChevronState: u32,
};

pub const REBARBANDINFOW = extern struct {
    cbSize: u32,
    fMask: u32,
    fStyle: u32,
    clrFore: u32,
    clrBack: u32,
    lpText: ?PWSTR,
    cch: u32,
    iImage: i32,
    hwndChild: ?HWND,
    cxMinChild: u32,
    cyMinChild: u32,
    cx: u32,
    hbmBack: ?HBITMAP,
    wID: u32,
    cyChild: u32,
    cyMaxChild: u32,
    cyIntegral: u32,
    cxIdeal: u32,
    lParam: LPARAM,
    cxHeader: u32,
    rcChevronLocation: RECT,
    uChevronState: u32,
};

pub const NMREBARCHILDSIZE = extern struct {
    hdr: NMHDR,
    uBand: u32,
    wID: u32,
    rcChild: RECT,
    rcBand: RECT,
};

pub const NMREBAR = extern struct {
    hdr: NMHDR,
    dwMask: NMREBAR_MASK_FLAGS,
    uBand: u32,
    fStyle: u32,
    wID: u32,
    lParam: LPARAM,
};

pub const NMRBAUTOSIZE = extern struct {
    hdr: NMHDR,
    fChanged: BOOL,
    rcTarget: RECT,
    rcActual: RECT,
};

pub const NMREBARCHEVRON = extern struct {
    hdr: NMHDR,
    uBand: u32,
    wID: u32,
    lParam: LPARAM,
    rc: RECT,
    lParamNM: LPARAM,
};

pub const NMREBARSPLITTER = extern struct {
    hdr: NMHDR,
    rcSizing: RECT,
};

pub const NMREBARAUTOBREAK = extern struct {
    hdr: NMHDR,
    uBand: u32,
    wID: u32,
    lParam: LPARAM,
    uMsg: u32,
    fStyleCurrent: u32,
    fAutoBreak: BOOL,
};

pub const RBHITTESTINFO = extern struct {
    pt: POINT,
    flags: u32,
    iBand: i32,
};

pub const TTTOOLINFOA = extern struct {
    cbSize: u32,
    uFlags: TTTOOLINFO_FLAGS,
    hwnd: ?HWND,
    uId: usize,
    rect: RECT,
    hinst: ?HINSTANCE,
    lpszText: ?PSTR,
    lParam: LPARAM,
    lpReserved: ?*anyopaque,
};

pub const TTTOOLINFOW = extern struct {
    cbSize: u32,
    uFlags: TTTOOLINFO_FLAGS,
    hwnd: ?HWND,
    uId: usize,
    rect: RECT,
    hinst: ?HINSTANCE,
    lpszText: ?PWSTR,
    lParam: LPARAM,
    lpReserved: ?*anyopaque,
};

pub const TTGETTITLE = extern struct {
    dwSize: u32,
    uTitleBitmap: u32,
    cch: u32,
    pszTitle: ?PWSTR,
};

pub const TTHITTESTINFOA = extern struct {
    hwnd: ?HWND,
    pt: POINT,
    ti: TTTOOLINFOA,
};

pub const TTHITTESTINFOW = extern struct {
    hwnd: ?HWND,
    pt: POINT,
    ti: TTTOOLINFOW,
};

pub const NMTTDISPINFOA = extern struct {
    hdr: NMHDR,
    lpszText: ?PSTR,
    szText: [80]CHAR,
    hinst: ?HINSTANCE,
    uFlags: u32,
    lParam: LPARAM,
};

pub const NMTTDISPINFOW = extern struct {
    hdr: NMHDR,
    lpszText: ?PWSTR,
    szText: [80]u16,
    hinst: ?HINSTANCE,
    uFlags: u32,
    lParam: LPARAM,
};

pub const NMTRBTHUMBPOSCHANGING = extern struct {
    hdr: NMHDR,
    dwPos: u32,
    nReason: i32,
};

pub const DRAGLISTINFO = extern struct {
    uNotification: DRAGLISTINFO_NOTIFICATION_FLAGS,
    hWnd: ?HWND,
    ptCursor: POINT,
};

pub const UDACCEL = extern struct {
    nSec: u32,
    nInc: u32,
};

pub const NMUPDOWN = extern struct {
    hdr: NMHDR,
    iPos: i32,
    iDelta: i32,
};

pub const PBRANGE = extern struct {
    iLow: i32,
    iHigh: i32,
};

pub const LITEM = extern struct {
    mask: u32,
    iLink: i32,
    state: u32,
    stateMask: u32,
    szID: [48]u16,
    szUrl: [2084]u16,
};

pub const LHITTESTINFO = extern struct {
    pt: POINT,
    item: LITEM,
};

pub const NMLINK = extern struct {
    hdr: NMHDR,
    item: LITEM,
};

pub const LVITEMA = extern struct {
    mask: u32,
    iItem: i32,
    iSubItem: i32,
    state: u32,
    stateMask: u32,
    pszText: ?PSTR,
    cchTextMax: i32,
    iImage: i32,
    lParam: LPARAM,
    iIndent: i32,
    iGroupId: LVITEMA_GROUP_ID,
    cColumns: u32,
    puColumns: ?*u32,
    piColFmt: ?*i32,
    iGroup: i32,
};

pub const LVITEMW = extern struct {
    mask: u32,
    iItem: i32,
    iSubItem: i32,
    state: u32,
    stateMask: u32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iImage: i32,
    lParam: LPARAM,
    iIndent: i32,
    iGroupId: LVITEMA_GROUP_ID,
    cColumns: u32,
    puColumns: ?*u32,
    piColFmt: ?*i32,
    iGroup: i32,
};

pub const LVFINDINFOA = extern struct {
    flags: LVFINDINFOW_FLAGS,
    psz: ?[*:0]const u8,
    lParam: LPARAM,
    pt: POINT,
    vkDirection: u32,
};

pub const LVFINDINFOW = extern struct {
    flags: LVFINDINFOW_FLAGS,
    psz: ?[*:0]const u16,
    lParam: LPARAM,
    pt: POINT,
    vkDirection: u32,
};

pub const LVHITTESTINFO = extern struct {
    pt: POINT,
    flags: LVHITTESTINFO_FLAGS,
    iItem: i32,
    iSubItem: i32,
    iGroup: i32,
};

pub const LVCOLUMNA = extern struct {
    mask: LVCOLUMNW_MASK,
    fmt: LVCOLUMNW_FORMAT,
    cx: i32,
    pszText: ?PSTR,
    cchTextMax: i32,
    iSubItem: i32,
    iImage: i32,
    iOrder: i32,
    cxMin: i32,
    cxDefault: i32,
    cxIdeal: i32,
};

pub const LVCOLUMNW = extern struct {
    mask: LVCOLUMNW_MASK,
    fmt: LVCOLUMNW_FORMAT,
    cx: i32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iSubItem: i32,
    iImage: i32,
    iOrder: i32,
    cxMin: i32,
    cxDefault: i32,
    cxIdeal: i32,
};

pub const PFNLVCOMPARE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: LPARAM,
        param1: LPARAM,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: LPARAM,
        param1: LPARAM,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const LVBKIMAGEA = extern struct {
    ulFlags: u32,
    hbm: ?HBITMAP,
    pszImage: ?PSTR,
    cchImageMax: u32,
    xOffsetPercent: i32,
    yOffsetPercent: i32,
};

pub const LVBKIMAGEW = extern struct {
    ulFlags: u32,
    hbm: ?HBITMAP,
    pszImage: ?PWSTR,
    cchImageMax: u32,
    xOffsetPercent: i32,
    yOffsetPercent: i32,
};

pub const LVGROUP = extern struct {
    cbSize: u32,
    mask: LVGROUP_MASK,
    pszHeader: ?PWSTR,
    cchHeader: i32,
    pszFooter: ?PWSTR,
    cchFooter: i32,
    iGroupId: i32,
    stateMask: u32,
    state: u32,
    uAlign: u32,
    pszSubtitle: ?PWSTR,
    cchSubtitle: u32,
    pszTask: ?PWSTR,
    cchTask: u32,
    pszDescriptionTop: ?PWSTR,
    cchDescriptionTop: u32,
    pszDescriptionBottom: ?PWSTR,
    cchDescriptionBottom: u32,
    iTitleImage: i32,
    iExtendedImage: i32,
    iFirstItem: i32,
    cItems: u32,
    pszSubsetTitle: ?PWSTR,
    cchSubsetTitle: u32,
};

pub const LVGROUPMETRICS = extern struct {
    cbSize: u32,
    mask: u32,
    Left: u32,
    Top: u32,
    Right: u32,
    Bottom: u32,
    crLeft: u32,
    crTop: u32,
    crRight: u32,
    crBottom: u32,
    crHeader: u32,
    crFooter: u32,
};

pub const PFNLVGROUPCOMPARE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: i32,
        param1: i32,
        param2: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: i32,
        param1: i32,
        param2: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const LVINSERTGROUPSORTED = extern struct {
    pfnGroupCompare: ?PFNLVGROUPCOMPARE,
    pvData: ?*anyopaque,
    lvGroup: LVGROUP,
};

pub const LVTILEVIEWINFO = extern struct {
    cbSize: u32,
    dwMask: u32,
    dwFlags: LVTILEVIEWINFO_FLAGS,
    sizeTile: SIZE,
    cLines: i32,
    rcLabelMargin: RECT,
};

pub const LVTILEINFO = extern struct {
    cbSize: u32,
    iItem: i32,
    cColumns: u32,
    puColumns: ?*u32,
    piColFmt: ?*i32,
};

pub const LVINSERTMARK = extern struct {
    cbSize: u32,
    dwFlags: u32,
    iItem: i32,
    dwReserved: u32,
};

pub const LVSETINFOTIP = extern struct {
    cbSize: u32,
    dwFlags: u32,
    pszText: ?PWSTR,
    iItem: i32,
    iSubItem: i32,
};

pub const LVFOOTERINFO = extern struct {
    mask: u32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    cItems: u32,
};

pub const LVFOOTERITEM = extern struct {
    mask: LVFOOTERITEM_MASK,
    iItem: i32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    state: u32,
    stateMask: u32,
};

pub const LVITEMINDEX = extern struct {
    iItem: i32,
    iGroup: i32,
};

pub const NMLISTVIEW = extern struct {
    hdr: NMHDR,
    iItem: i32,
    iSubItem: i32,
    uNewState: u32,
    uOldState: u32,
    uChanged: u32,
    ptAction: POINT,
    lParam: LPARAM,
};

pub const NMITEMACTIVATE = extern struct {
    hdr: NMHDR,
    iItem: i32,
    iSubItem: i32,
    uNewState: u32,
    uOldState: u32,
    uChanged: u32,
    ptAction: POINT,
    lParam: LPARAM,
    uKeyFlags: u32,
};

pub const NMLVCUSTOMDRAW = extern struct {
    nmcd: NMCUSTOMDRAW,
    clrText: u32,
    clrTextBk: u32,
    iSubItem: i32,
    dwItemType: NMLVCUSTOMDRAW_ITEM_TYPE,
    clrFace: u32,
    iIconEffect: i32,
    iIconPhase: i32,
    iPartId: i32,
    iStateId: i32,
    rcText: RECT,
    uAlign: NMLVCUSTOMDRAW_ALIGN,
};

pub const NMLVCACHEHINT = extern struct {
    hdr: NMHDR,
    iFrom: i32,
    iTo: i32,
};

pub const NMLVFINDITEMA = extern struct {
    hdr: NMHDR,
    iStart: i32,
    lvfi: LVFINDINFOA,
};

pub const NMLVFINDITEMW = extern struct {
    hdr: NMHDR,
    iStart: i32,
    lvfi: LVFINDINFOW,
};

pub const NMLVODSTATECHANGE = extern struct {
    hdr: NMHDR,
    iFrom: i32,
    iTo: i32,
    uNewState: u32,
    uOldState: u32,
};

pub const NMLVDISPINFOA = extern struct {
    hdr: NMHDR,
    item: LVITEMA,
};

pub const NMLVDISPINFOW = extern struct {
    hdr: NMHDR,
    item: LVITEMW,
};

pub const NMLVKEYDOWN = extern struct {
    hdr: NMHDR align(1),
    wVKey: u16 align(1),
    flags: u32 align(1),
};

pub const NMLVLINK = extern struct {
    hdr: NMHDR,
    link: LITEM,
    iItem: i32,
    iSubItem: i32,
};

pub const NMLVGETINFOTIPA = extern struct {
    hdr: NMHDR,
    dwFlags: u32,
    pszText: ?PSTR,
    cchTextMax: i32,
    iItem: i32,
    iSubItem: i32,
    lParam: LPARAM,
};

pub const NMLVGETINFOTIPW = extern struct {
    hdr: NMHDR,
    dwFlags: u32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iItem: i32,
    iSubItem: i32,
    lParam: LPARAM,
};

pub const NMLVSCROLL = extern struct {
    hdr: NMHDR,
    dx: i32,
    dy: i32,
};

pub const NMLVEMPTYMARKUP = extern struct {
    hdr: NMHDR,
    dwFlags: NMLVEMPTYMARKUP_FLAGS,
    szMarkup: [2084]u16,
};

pub const NMTVSTATEIMAGECHANGING = extern struct {
    hdr: NMHDR,
    hti: ?HTREEITEM,
    iOldStateImageIndex: i32,
    iNewStateImageIndex: i32,
};

pub const TVITEMA = extern struct {
    mask: TVITEM_MASK,
    hItem: ?HTREEITEM,
    state: u32,
    stateMask: u32,
    pszText: ?PSTR,
    cchTextMax: i32,
    iImage: i32,
    iSelectedImage: i32,
    cChildren: TVITEMEXW_CHILDREN,
    lParam: LPARAM,
};

pub const TVITEMW = extern struct {
    mask: TVITEM_MASK,
    hItem: ?HTREEITEM,
    state: u32,
    stateMask: u32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iImage: i32,
    iSelectedImage: i32,
    cChildren: TVITEMEXW_CHILDREN,
    lParam: LPARAM,
};

pub const TVITEMEXA = extern struct {
    mask: TVITEM_MASK,
    hItem: ?HTREEITEM,
    state: u32,
    stateMask: u32,
    pszText: ?PSTR,
    cchTextMax: i32,
    iImage: i32,
    iSelectedImage: i32,
    cChildren: TVITEMEXW_CHILDREN,
    lParam: LPARAM,
    iIntegral: i32,
    uStateEx: u32,
    hwnd: ?HWND,
    iExpandedImage: i32,
    iReserved: i32,
};

pub const TVITEMEXW = extern struct {
    mask: TVITEM_MASK,
    hItem: ?HTREEITEM,
    state: u32,
    stateMask: u32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iImage: i32,
    iSelectedImage: i32,
    cChildren: TVITEMEXW_CHILDREN,
    lParam: LPARAM,
    iIntegral: i32,
    uStateEx: u32,
    hwnd: ?HWND,
    iExpandedImage: i32,
    iReserved: i32,
};

pub const TVINSERTSTRUCTA = extern struct {
    hParent: ?HTREEITEM,
    hInsertAfter: ?HTREEITEM,
    Anonymous: extern union {
        itemex: TVITEMEXA,
        item: TVITEMA,
    },
};

pub const TVINSERTSTRUCTW = extern struct {
    hParent: ?HTREEITEM,
    hInsertAfter: ?HTREEITEM,
    Anonymous: extern union {
        itemex: TVITEMEXW,
        item: TVITEMW,
    },
};

pub const TVHITTESTINFO = extern struct {
    pt: POINT,
    flags: TVHITTESTINFO_FLAGS,
    hItem: ?HTREEITEM,
};

pub const TVITEMPART = enum(i32) {
    N = 1,
};
pub const TVGIPR_BUTTON = TVITEMPART.N;

pub const TVGETITEMPARTRECTINFO = extern struct {
    hti: ?HTREEITEM,
    prc: ?*RECT,
    partID: TVITEMPART,
};

pub const PFNTVCOMPARE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        lParam1: LPARAM,
        lParam2: LPARAM,
        lParamSort: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        lParam1: LPARAM,
        lParam2: LPARAM,
        lParamSort: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const TVSORTCB = extern struct {
    hParent: ?HTREEITEM,
    lpfnCompare: ?PFNTVCOMPARE,
    lParam: LPARAM,
};

pub const NMTREEVIEWA = extern struct {
    hdr: NMHDR,
    action: u32,
    itemOld: TVITEMA,
    itemNew: TVITEMA,
    ptDrag: POINT,
};

pub const NMTREEVIEWW = extern struct {
    hdr: NMHDR,
    action: u32,
    itemOld: TVITEMW,
    itemNew: TVITEMW,
    ptDrag: POINT,
};

pub const NMTVDISPINFOA = extern struct {
    hdr: NMHDR,
    item: TVITEMA,
};

pub const NMTVDISPINFOW = extern struct {
    hdr: NMHDR,
    item: TVITEMW,
};

pub const NMTVDISPINFOEXA = extern struct {
    hdr: NMHDR,
    item: TVITEMEXA,
};

pub const NMTVDISPINFOEXW = extern struct {
    hdr: NMHDR,
    item: TVITEMEXW,
};

pub const NMTVKEYDOWN = extern struct {
    hdr: NMHDR align(1),
    wVKey: u16 align(1),
    flags: u32 align(1),
};

pub const NMTVCUSTOMDRAW = extern struct {
    nmcd: NMCUSTOMDRAW,
    clrText: u32,
    clrTextBk: u32,
    iLevel: i32,
};

pub const NMTVGETINFOTIPA = extern struct {
    hdr: NMHDR,
    pszText: ?PSTR,
    cchTextMax: i32,
    hItem: ?HTREEITEM,
    lParam: LPARAM,
};

pub const NMTVGETINFOTIPW = extern struct {
    hdr: NMHDR,
    pszText: ?PWSTR,
    cchTextMax: i32,
    hItem: ?HTREEITEM,
    lParam: LPARAM,
};

pub const NMTVITEMCHANGE = extern struct {
    hdr: NMHDR,
    uChanged: u32,
    hItem: ?HTREEITEM,
    uStateNew: u32,
    uStateOld: u32,
    lParam: LPARAM,
};

pub const NMTVASYNCDRAW = extern struct {
    hdr: NMHDR,
    pimldp: ?*IMAGELISTDRAWPARAMS,
    hr: HRESULT,
    hItem: ?HTREEITEM,
    lParam: LPARAM,
    dwRetFlags: u32,
    iRetImageIndex: i32,
};

pub const COMBOBOXEXITEMA = extern struct {
    mask: COMBOBOX_EX_ITEM_FLAGS,
    iItem: isize,
    pszText: ?PSTR,
    cchTextMax: i32,
    iImage: i32,
    iSelectedImage: i32,
    iOverlay: i32,
    iIndent: i32,
    lParam: LPARAM,
};

pub const COMBOBOXEXITEMW = extern struct {
    mask: COMBOBOX_EX_ITEM_FLAGS,
    iItem: isize,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iImage: i32,
    iSelectedImage: i32,
    iOverlay: i32,
    iIndent: i32,
    lParam: LPARAM,
};

pub const NMCOMBOBOXEXA = extern struct {
    hdr: NMHDR,
    ceItem: COMBOBOXEXITEMA,
};

pub const NMCOMBOBOXEXW = extern struct {
    hdr: NMHDR,
    ceItem: COMBOBOXEXITEMW,
};

pub const NMCBEDRAGBEGINW = extern struct {
    hdr: NMHDR,
    iItemid: i32,
    szText: [260]u16,
};

pub const NMCBEDRAGBEGINA = extern struct {
    hdr: NMHDR,
    iItemid: i32,
    szText: [260]CHAR,
};

pub const NMCBEENDEDITW = extern struct {
    hdr: NMHDR,
    fChanged: BOOL,
    iNewSelection: i32,
    szText: [260]u16,
    iWhy: i32,
};

pub const NMCBEENDEDITA = extern struct {
    hdr: NMHDR,
    fChanged: BOOL,
    iNewSelection: i32,
    szText: [260]CHAR,
    iWhy: i32,
};

pub const TCITEMHEADERA = extern struct {
    mask: TCITEMHEADERA_MASK,
    lpReserved1: u32,
    lpReserved2: u32,
    pszText: ?PSTR,
    cchTextMax: i32,
    iImage: i32,
};

pub const TCITEMHEADERW = extern struct {
    mask: TCITEMHEADERA_MASK,
    lpReserved1: u32,
    lpReserved2: u32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iImage: i32,
};

pub const TCITEMA = extern struct {
    mask: TCITEMHEADERA_MASK,
    dwState: u32,
    dwStateMask: u32,
    pszText: ?PSTR,
    cchTextMax: i32,
    iImage: i32,
    lParam: LPARAM,
};

pub const TCITEMW = extern struct {
    mask: TCITEMHEADERA_MASK,
    dwState: u32,
    dwStateMask: u32,
    pszText: ?PWSTR,
    cchTextMax: i32,
    iImage: i32,
    lParam: LPARAM,
};

pub const TCHITTESTINFO = extern struct {
    pt: POINT,
    flags: TCHITTESTINFO_FLAGS,
};

pub const NMTCKEYDOWN = extern struct {
    hdr: NMHDR align(1),
    wVKey: u16 align(1),
    flags: u32 align(1),
};

pub const MCHITTESTINFO = extern struct {
    cbSize: u32,
    pt: POINT,
    uHit: u32,
    st: SYSTEMTIME,
    rc: RECT,
    iOffset: i32,
    iRow: i32,
    iCol: i32,
};

pub const MCGRIDINFO = extern struct {
    cbSize: u32,
    dwPart: MCGRIDINFO_PART,
    dwFlags: MCGRIDINFO_FLAGS,
    iCalendar: i32,
    iRow: i32,
    iCol: i32,
    bSelected: BOOL,
    stStart: SYSTEMTIME,
    stEnd: SYSTEMTIME,
    rc: RECT,
    pszName: ?PWSTR,
    cchName: usize,
};

pub const NMSELCHANGE = extern struct {
    nmhdr: NMHDR,
    stSelStart: SYSTEMTIME,
    stSelEnd: SYSTEMTIME,
};

pub const NMDAYSTATE = extern struct {
    nmhdr: NMHDR,
    stStart: SYSTEMTIME,
    cDayState: i32,
    prgDayState: ?*u32,
};

pub const NMVIEWCHANGE = extern struct {
    nmhdr: NMHDR,
    dwOldView: u32,
    dwNewView: u32,
};

pub const DATETIMEPICKERINFO = extern struct {
    cbSize: u32,
    rcCheck: RECT,
    stateCheck: u32,
    rcButton: RECT,
    stateButton: u32,
    hwndEdit: ?HWND,
    hwndUD: ?HWND,
    hwndDropDown: ?HWND,
};

pub const NMDATETIMECHANGE = extern struct {
    nmhdr: NMHDR,
    dwFlags: u32,
    st: SYSTEMTIME,
};

pub const NMDATETIMESTRINGA = extern struct {
    nmhdr: NMHDR,
    pszUserString: ?[*:0]const u8,
    st: SYSTEMTIME,
    dwFlags: u32,
};

pub const NMDATETIMESTRINGW = extern struct {
    nmhdr: NMHDR,
    pszUserString: ?[*:0]const u16,
    st: SYSTEMTIME,
    dwFlags: u32,
};

pub const NMDATETIMEWMKEYDOWNA = extern struct {
    nmhdr: NMHDR,
    nVirtKey: i32,
    pszFormat: ?[*:0]const u8,
    st: SYSTEMTIME,
};

pub const NMDATETIMEWMKEYDOWNW = extern struct {
    nmhdr: NMHDR,
    nVirtKey: i32,
    pszFormat: ?[*:0]const u16,
    st: SYSTEMTIME,
};

pub const NMDATETIMEFORMATA = extern struct {
    nmhdr: NMHDR,
    pszFormat: ?[*:0]const u8,
    st: SYSTEMTIME,
    pszDisplay: ?[*:0]const u8,
    szDisplay: [64]CHAR,
};

pub const NMDATETIMEFORMATW = extern struct {
    nmhdr: NMHDR,
    pszFormat: ?[*:0]const u16,
    st: SYSTEMTIME,
    pszDisplay: ?[*:0]const u16,
    szDisplay: [64]u16,
};

pub const NMDATETIMEFORMATQUERYA = extern struct {
    nmhdr: NMHDR,
    pszFormat: ?[*:0]const u8,
    szMax: SIZE,
};

pub const NMDATETIMEFORMATQUERYW = extern struct {
    nmhdr: NMHDR,
    pszFormat: ?[*:0]const u16,
    szMax: SIZE,
};

pub const NMIPADDRESS = extern struct {
    hdr: NMHDR,
    iField: i32,
    iValue: i32,
};

pub const NMPGSCROLL = extern struct {
    hdr: NMHDR align(1),
    fwKeys: NMPGSCROLL_KEYS align(1),
    rcParent: RECT align(1),
    iDir: NMPGSCROLL_DIR align(1),
    iXpos: i32 align(1),
    iYpos: i32 align(1),
    iScroll: i32 align(1),
};

pub const NMPGCALCSIZE = extern struct {
    hdr: NMHDR,
    dwFlag: NMPGCALCSIZE_FLAGS,
    iWidth: i32,
    iHeight: i32,
};

pub const NMPGHOTITEM = extern struct {
    hdr: NMHDR,
    idOld: i32,
    idNew: i32,
    dwFlags: u32,
};

pub const BUTTON_IMAGELIST = extern struct {
    himl: ?HIMAGELIST,
    margin: RECT,
    uAlign: BUTTON_IMAGELIST_ALIGN,
};

pub const NMBCHOTITEM = extern struct {
    hdr: NMHDR,
    dwFlags: NMTBHOTITEM_FLAGS,
};

pub const BUTTON_SPLITINFO = extern struct {
    mask: u32,
    himlGlyph: ?HIMAGELIST,
    uSplitStyle: u32,
    size: SIZE,
};

pub const NMBCDROPDOWN = extern struct {
    hdr: NMHDR,
    rcButton: RECT,
};

pub const EDITBALLOONTIP = extern struct {
    cbStruct: u32,
    pszTitle: ?[*:0]const u16,
    pszText: ?[*:0]const u16,
    ttiIcon: EDITBALLOONTIP_ICON,
};

pub const EC_ENDOFLINE = enum(i32) {
    DETECTFROMCONTENT = 0,
    CRLF = 1,
    CR = 2,
    LF = 3,
};
pub const EC_ENDOFLINE_DETECTFROMCONTENT = EC_ENDOFLINE.DETECTFROMCONTENT;
pub const EC_ENDOFLINE_CRLF = EC_ENDOFLINE.CRLF;
pub const EC_ENDOFLINE_CR = EC_ENDOFLINE.CR;
pub const EC_ENDOFLINE_LF = EC_ENDOFLINE.LF;

pub const EC_SEARCHWEB_ENTRYPOINT = enum(i32) {
    EXTERNAL = 0,
    CONTEXTMENU = 1,
};
pub const EC_SEARCHWEB_ENTRYPOINT_EXTERNAL = EC_SEARCHWEB_ENTRYPOINT.EXTERNAL;
pub const EC_SEARCHWEB_ENTRYPOINT_CONTEXTMENU = EC_SEARCHWEB_ENTRYPOINT.CONTEXTMENU;

pub const NMSEARCHWEB = extern struct {
    hdr: NMHDR,
    entrypoint: EC_SEARCHWEB_ENTRYPOINT,
    hasQueryText: BOOL,
    invokeSucceeded: BOOL,
};

pub const PFTASKDIALOGCALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hwnd: ?HWND,
        msg: u32,
        wParam: WPARAM,
        lParam: LPARAM,
        lpRefData: isize,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hwnd: ?HWND,
        msg: u32,
        wParam: WPARAM,
        lParam: LPARAM,
        lpRefData: isize,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const TASKDIALOG_FLAGS = enum(i32) {
    ENABLE_HYPERLINKS = 1,
    USE_HICON_MAIN = 2,
    USE_HICON_FOOTER = 4,
    ALLOW_DIALOG_CANCELLATION = 8,
    USE_COMMAND_LINKS = 16,
    USE_COMMAND_LINKS_NO_ICON = 32,
    EXPAND_FOOTER_AREA = 64,
    EXPANDED_BY_DEFAULT = 128,
    VERIFICATION_FLAG_CHECKED = 256,
    SHOW_PROGRESS_BAR = 512,
    SHOW_MARQUEE_PROGRESS_BAR = 1024,
    CALLBACK_TIMER = 2048,
    POSITION_RELATIVE_TO_WINDOW = 4096,
    RTL_LAYOUT = 8192,
    NO_DEFAULT_RADIO_BUTTON = 16384,
    CAN_BE_MINIMIZED = 32768,
    NO_SET_FOREGROUND = 65536,
    SIZE_TO_CONTENT = 16777216,
};
pub const TDF_ENABLE_HYPERLINKS = TASKDIALOG_FLAGS.ENABLE_HYPERLINKS;
pub const TDF_USE_HICON_MAIN = TASKDIALOG_FLAGS.USE_HICON_MAIN;
pub const TDF_USE_HICON_FOOTER = TASKDIALOG_FLAGS.USE_HICON_FOOTER;
pub const TDF_ALLOW_DIALOG_CANCELLATION = TASKDIALOG_FLAGS.ALLOW_DIALOG_CANCELLATION;
pub const TDF_USE_COMMAND_LINKS = TASKDIALOG_FLAGS.USE_COMMAND_LINKS;
pub const TDF_USE_COMMAND_LINKS_NO_ICON = TASKDIALOG_FLAGS.USE_COMMAND_LINKS_NO_ICON;
pub const TDF_EXPAND_FOOTER_AREA = TASKDIALOG_FLAGS.EXPAND_FOOTER_AREA;
pub const TDF_EXPANDED_BY_DEFAULT = TASKDIALOG_FLAGS.EXPANDED_BY_DEFAULT;
pub const TDF_VERIFICATION_FLAG_CHECKED = TASKDIALOG_FLAGS.VERIFICATION_FLAG_CHECKED;
pub const TDF_SHOW_PROGRESS_BAR = TASKDIALOG_FLAGS.SHOW_PROGRESS_BAR;
pub const TDF_SHOW_MARQUEE_PROGRESS_BAR = TASKDIALOG_FLAGS.SHOW_MARQUEE_PROGRESS_BAR;
pub const TDF_CALLBACK_TIMER = TASKDIALOG_FLAGS.CALLBACK_TIMER;
pub const TDF_POSITION_RELATIVE_TO_WINDOW = TASKDIALOG_FLAGS.POSITION_RELATIVE_TO_WINDOW;
pub const TDF_RTL_LAYOUT = TASKDIALOG_FLAGS.RTL_LAYOUT;
pub const TDF_NO_DEFAULT_RADIO_BUTTON = TASKDIALOG_FLAGS.NO_DEFAULT_RADIO_BUTTON;
pub const TDF_CAN_BE_MINIMIZED = TASKDIALOG_FLAGS.CAN_BE_MINIMIZED;
pub const TDF_NO_SET_FOREGROUND = TASKDIALOG_FLAGS.NO_SET_FOREGROUND;
pub const TDF_SIZE_TO_CONTENT = TASKDIALOG_FLAGS.SIZE_TO_CONTENT;

pub const TASKDIALOG_MESSAGES = enum(i32) {
    NAVIGATE_PAGE = 1125,
    CLICK_BUTTON = 1126,
    SET_MARQUEE_PROGRESS_BAR = 1127,
    SET_PROGRESS_BAR_STATE = 1128,
    SET_PROGRESS_BAR_RANGE = 1129,
    SET_PROGRESS_BAR_POS = 1130,
    SET_PROGRESS_BAR_MARQUEE = 1131,
    SET_ELEMENT_TEXT = 1132,
    CLICK_RADIO_BUTTON = 1134,
    ENABLE_BUTTON = 1135,
    ENABLE_RADIO_BUTTON = 1136,
    CLICK_VERIFICATION = 1137,
    UPDATE_ELEMENT_TEXT = 1138,
    SET_BUTTON_ELEVATION_REQUIRED_STATE = 1139,
    UPDATE_ICON = 1140,
};
pub const TDM_NAVIGATE_PAGE = TASKDIALOG_MESSAGES.NAVIGATE_PAGE;
pub const TDM_CLICK_BUTTON = TASKDIALOG_MESSAGES.CLICK_BUTTON;
pub const TDM_SET_MARQUEE_PROGRESS_BAR = TASKDIALOG_MESSAGES.SET_MARQUEE_PROGRESS_BAR;
pub const TDM_SET_PROGRESS_BAR_STATE = TASKDIALOG_MESSAGES.SET_PROGRESS_BAR_STATE;
pub const TDM_SET_PROGRESS_BAR_RANGE = TASKDIALOG_MESSAGES.SET_PROGRESS_BAR_RANGE;
pub const TDM_SET_PROGRESS_BAR_POS = TASKDIALOG_MESSAGES.SET_PROGRESS_BAR_POS;
pub const TDM_SET_PROGRESS_BAR_MARQUEE = TASKDIALOG_MESSAGES.SET_PROGRESS_BAR_MARQUEE;
pub const TDM_SET_ELEMENT_TEXT = TASKDIALOG_MESSAGES.SET_ELEMENT_TEXT;
pub const TDM_CLICK_RADIO_BUTTON = TASKDIALOG_MESSAGES.CLICK_RADIO_BUTTON;
pub const TDM_ENABLE_BUTTON = TASKDIALOG_MESSAGES.ENABLE_BUTTON;
pub const TDM_ENABLE_RADIO_BUTTON = TASKDIALOG_MESSAGES.ENABLE_RADIO_BUTTON;
pub const TDM_CLICK_VERIFICATION = TASKDIALOG_MESSAGES.CLICK_VERIFICATION;
pub const TDM_UPDATE_ELEMENT_TEXT = TASKDIALOG_MESSAGES.UPDATE_ELEMENT_TEXT;
pub const TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = TASKDIALOG_MESSAGES.SET_BUTTON_ELEVATION_REQUIRED_STATE;
pub const TDM_UPDATE_ICON = TASKDIALOG_MESSAGES.UPDATE_ICON;

pub const TASKDIALOG_NOTIFICATIONS = enum(i32) {
    CREATED = 0,
    NAVIGATED = 1,
    BUTTON_CLICKED = 2,
    HYPERLINK_CLICKED = 3,
    TIMER = 4,
    DESTROYED = 5,
    RADIO_BUTTON_CLICKED = 6,
    DIALOG_CONSTRUCTED = 7,
    VERIFICATION_CLICKED = 8,
    HELP = 9,
    EXPANDO_BUTTON_CLICKED = 10,
};
pub const TDN_CREATED = TASKDIALOG_NOTIFICATIONS.CREATED;
pub const TDN_NAVIGATED = TASKDIALOG_NOTIFICATIONS.NAVIGATED;
pub const TDN_BUTTON_CLICKED = TASKDIALOG_NOTIFICATIONS.BUTTON_CLICKED;
pub const TDN_HYPERLINK_CLICKED = TASKDIALOG_NOTIFICATIONS.HYPERLINK_CLICKED;
pub const TDN_TIMER = TASKDIALOG_NOTIFICATIONS.TIMER;
pub const TDN_DESTROYED = TASKDIALOG_NOTIFICATIONS.DESTROYED;
pub const TDN_RADIO_BUTTON_CLICKED = TASKDIALOG_NOTIFICATIONS.RADIO_BUTTON_CLICKED;
pub const TDN_DIALOG_CONSTRUCTED = TASKDIALOG_NOTIFICATIONS.DIALOG_CONSTRUCTED;
pub const TDN_VERIFICATION_CLICKED = TASKDIALOG_NOTIFICATIONS.VERIFICATION_CLICKED;
pub const TDN_HELP = TASKDIALOG_NOTIFICATIONS.HELP;
pub const TDN_EXPANDO_BUTTON_CLICKED = TASKDIALOG_NOTIFICATIONS.EXPANDO_BUTTON_CLICKED;

pub const TASKDIALOG_BUTTON = extern struct {
    nButtonID: i32 align(1),
    pszButtonText: ?[*:0]const u16 align(1),
};

pub const TASKDIALOG_ELEMENTS = enum(i32) {
    CONTENT = 0,
    EXPANDED_INFORMATION = 1,
    FOOTER = 2,
    MAIN_INSTRUCTION = 3,
};
pub const TDE_CONTENT = TASKDIALOG_ELEMENTS.CONTENT;
pub const TDE_EXPANDED_INFORMATION = TASKDIALOG_ELEMENTS.EXPANDED_INFORMATION;
pub const TDE_FOOTER = TASKDIALOG_ELEMENTS.FOOTER;
pub const TDE_MAIN_INSTRUCTION = TASKDIALOG_ELEMENTS.MAIN_INSTRUCTION;

pub const TASKDIALOG_ICON_ELEMENTS = enum(i32) {
    MAIN = 0,
    FOOTER = 1,
};
pub const TDIE_ICON_MAIN = TASKDIALOG_ICON_ELEMENTS.MAIN;
pub const TDIE_ICON_FOOTER = TASKDIALOG_ICON_ELEMENTS.FOOTER;

pub const TASKDIALOG_COMMON_BUTTON_FLAGS = enum(i32) {
    OK_BUTTON = 1,
    YES_BUTTON = 2,
    NO_BUTTON = 4,
    CANCEL_BUTTON = 8,
    RETRY_BUTTON = 16,
    CLOSE_BUTTON = 32,
};
pub const TDCBF_OK_BUTTON = TASKDIALOG_COMMON_BUTTON_FLAGS.OK_BUTTON;
pub const TDCBF_YES_BUTTON = TASKDIALOG_COMMON_BUTTON_FLAGS.YES_BUTTON;
pub const TDCBF_NO_BUTTON = TASKDIALOG_COMMON_BUTTON_FLAGS.NO_BUTTON;
pub const TDCBF_CANCEL_BUTTON = TASKDIALOG_COMMON_BUTTON_FLAGS.CANCEL_BUTTON;
pub const TDCBF_RETRY_BUTTON = TASKDIALOG_COMMON_BUTTON_FLAGS.RETRY_BUTTON;
pub const TDCBF_CLOSE_BUTTON = TASKDIALOG_COMMON_BUTTON_FLAGS.CLOSE_BUTTON;

pub const TASKDIALOGCONFIG = extern struct {
    cbSize: u32 align(1),
    hwndParent: ?HWND align(1),
    hInstance: ?HINSTANCE align(1),
    dwFlags: TASKDIALOG_FLAGS align(1),
    dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS align(1),
    pszWindowTitle: ?[*:0]const u16 align(1),
    Anonymous1: extern union {
        hMainIcon: ?HICON align(1),
        pszMainIcon: ?[*:0]const u16 align(1),
    } align(1),
    pszMainInstruction: ?[*:0]const u16 align(1),
    pszContent: ?[*:0]const u16 align(1),
    cButtons: u32 align(1),
    pButtons: ?*const TASKDIALOG_BUTTON align(1),
    nDefaultButton: i32 align(1),
    cRadioButtons: u32 align(1),
    pRadioButtons: ?*const TASKDIALOG_BUTTON align(1),
    nDefaultRadioButton: i32 align(1),
    pszVerificationText: ?[*:0]const u16 align(1),
    pszExpandedInformation: ?[*:0]const u16 align(1),
    pszExpandedControlText: ?[*:0]const u16 align(1),
    pszCollapsedControlText: ?[*:0]const u16 align(1),
    Anonymous2: extern union {
        hFooterIcon: ?HICON align(1),
        pszFooterIcon: ?[*:0]const u16 align(1),
    } align(1),
    pszFooter: ?[*:0]const u16 align(1),
    pfCallback: ?PFTASKDIALOGCALLBACK align(1),
    lpCallbackData: isize align(1),
    cxWidth: u32 align(1),
};

pub const PFNDAENUMCALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        p: ?*anyopaque,
        pData: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        p: ?*anyopaque,
        pData: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PFNDAENUMCALLBACKCONST = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        p: ?*const anyopaque,
        pData: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        p: ?*const anyopaque,
        pData: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PFNDACOMPARE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        p1: ?*anyopaque,
        p2: ?*anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        p1: ?*anyopaque,
        p2: ?*anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PFNDACOMPARECONST = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        p1: ?*const anyopaque,
        p2: ?*const anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        p1: ?*const anyopaque,
        p2: ?*const anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const DPASTREAMINFO = extern struct {
    iPos: i32,
    pvItem: ?*anyopaque,
};

pub const PFNDPASTREAM = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pinfo: ?*DPASTREAMINFO,
        pstream: ?*IStream,
        pvInstData: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        pinfo: ?*DPASTREAMINFO,
        pstream: ?*IStream,
        pvInstData: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const PFNDPAMERGE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        uMsg: DPAMM_MESSAGE,
        pvDest: ?*anyopaque,
        pvSrc: ?*anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
    else => *const fn (
        uMsg: DPAMM_MESSAGE,
        pvDest: ?*anyopaque,
        pvSrc: ?*anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
};

pub const PFNDPAMERGECONST = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        uMsg: DPAMM_MESSAGE,
        pvDest: ?*const anyopaque,
        pvSrc: ?*const anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
    else => *const fn (
        uMsg: DPAMM_MESSAGE,
        pvDest: ?*const anyopaque,
        pvSrc: ?*const anyopaque,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
};

pub const _LI_METRIC = enum(i32) {
    SMALL = 0,
    LARGE = 1,
};
pub const LIM_SMALL = _LI_METRIC.SMALL;
pub const LIM_LARGE = _LI_METRIC.LARGE;

const CLSID_ImageList_Value = Guid.initString("7c476ba2-02b1-48f4-8048-b24619ddc058");
pub const CLSID_ImageList = &CLSID_ImageList_Value;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IImageList_Value = Guid.initString("46eb5926-582e-4017-9fdf-e8998daa0950");
pub const IID_IImageList = &IID_IImageList_Value;
pub const IImageList = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                hbmImage: ?HBITMAP,
                hbmMask: ?HBITMAP,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                hbmImage: ?HBITMAP,
                hbmMask: ?HBITMAP,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ReplaceIcon: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i: i32,
                hicon: ?HICON,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i: i32,
                hicon: ?HICON,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetOverlayImage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                iImage: i32,
                iOverlay: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                iImage: i32,
                iOverlay: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Replace: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i: i32,
                hbmImage: ?HBITMAP,
                hbmMask: ?HBITMAP,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i: i32,
                hbmImage: ?HBITMAP,
                hbmMask: ?HBITMAP,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddMasked: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                hbmImage: ?HBITMAP,
                crMask: u32,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                hbmImage: ?HBITMAP,
                crMask: u32,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Draw: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                pimldp: ?*IMAGELISTDRAWPARAMS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                pimldp: ?*IMAGELISTDRAWPARAMS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIcon: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i: i32,
                flags: u32,
                picon: ?*?HICON,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i: i32,
                flags: u32,
                picon: ?*?HICON,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetImageInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i: i32,
                pImageInfo: ?*IMAGEINFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i: i32,
                pImageInfo: ?*IMAGEINFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Copy: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                iDst: i32,
                punkSrc: ?*IUnknown,
                iSrc: i32,
                uFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                iDst: i32,
                punkSrc: ?*IUnknown,
                iSrc: i32,
                uFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Merge: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i1: i32,
                punk2: ?*IUnknown,
                i2: i32,
                dx: i32,
                dy: i32,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i1: i32,
                punk2: ?*IUnknown,
                i2: i32,
                dx: i32,
                dy: i32,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetImageRect: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i: i32,
                prc: ?*RECT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i: i32,
                prc: ?*RECT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIconSize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                cx: ?*i32,
                cy: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                cx: ?*i32,
                cy: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetIconSize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                cx: i32,
                cy: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                cx: i32,
                cy: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetImageCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                pi: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetImageCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                uNewCount: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                uNewCount: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetBkColor: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                clrBk: u32,
                pclr: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                clrBk: u32,
                pclr: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetBkColor: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                pclr: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                pclr: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        BeginDrag: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                iTrack: i32,
                dxHotspot: i32,
                dyHotspot: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                iTrack: i32,
                dxHotspot: i32,
                dyHotspot: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EndDrag: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DragEnter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                hwndLock: ?HWND,
                x: i32,
                y: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                hwndLock: ?HWND,
                x: i32,
                y: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DragLeave: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                hwndLock: ?HWND,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                hwndLock: ?HWND,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DragMove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                x: i32,
                y: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                x: i32,
                y: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetDragCursorImage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                punk: ?*IUnknown,
                iDrag: i32,
                dxHotspot: i32,
                dyHotspot: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                punk: ?*IUnknown,
                iDrag: i32,
                dxHotspot: i32,
                dyHotspot: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DragShowNolock: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                fShow: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                fShow: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDragImage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                ppt: ?*POINT,
                pptHotspot: ?*POINT,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                ppt: ?*POINT,
                pptHotspot: ?*POINT,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetItemFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                i: i32,
                dwFlags: ?*IMAGE_LIST_ITEM_FLAGS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                i: i32,
                dwFlags: ?*IMAGE_LIST_ITEM_FLAGS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetOverlayImage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList,
                iOverlay: i32,
                piIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList,
                iOverlay: i32,
                piIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_Add(self: *const T, hbmImage: ?HBITMAP, hbmMask: ?HBITMAP, pi: ?*i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).Add(@as(*const IImageList, @ptrCast(self)), hbmImage, hbmMask, pi);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_ReplaceIcon(self: *const T, i: i32, hicon: ?HICON, pi: ?*i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).ReplaceIcon(@as(*const IImageList, @ptrCast(self)), i, hicon, pi);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_SetOverlayImage(self: *const T, iImage: i32, iOverlay: i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).SetOverlayImage(@as(*const IImageList, @ptrCast(self)), iImage, iOverlay);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_Replace(self: *const T, i: i32, hbmImage: ?HBITMAP, hbmMask: ?HBITMAP) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).Replace(@as(*const IImageList, @ptrCast(self)), i, hbmImage, hbmMask);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_AddMasked(self: *const T, hbmImage: ?HBITMAP, crMask: u32, pi: ?*i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).AddMasked(@as(*const IImageList, @ptrCast(self)), hbmImage, crMask, pi);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_Draw(self: *const T, pimldp: ?*IMAGELISTDRAWPARAMS) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).Draw(@as(*const IImageList, @ptrCast(self)), pimldp);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_Remove(self: *const T, i: i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).Remove(@as(*const IImageList, @ptrCast(self)), i);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetIcon(self: *const T, i: i32, flags: u32, picon: ?*?HICON) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetIcon(@as(*const IImageList, @ptrCast(self)), i, flags, picon);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetImageInfo(self: *const T, i: i32, pImageInfo: ?*IMAGEINFO) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetImageInfo(@as(*const IImageList, @ptrCast(self)), i, pImageInfo);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_Copy(self: *const T, iDst: i32, punkSrc: ?*IUnknown, iSrc: i32, uFlags: u32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).Copy(@as(*const IImageList, @ptrCast(self)), iDst, punkSrc, iSrc, uFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_Merge(self: *const T, i1_: i32, punk2: ?*IUnknown, i2_: i32, dx: i32, dy: i32, riid: ?*const Guid, ppv: ?*?*anyopaque) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).Merge(@as(*const IImageList, @ptrCast(self)), i1_, punk2, i2_, dx, dy, riid, ppv);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_Clone(self: *const T, riid: ?*const Guid, ppv: ?*?*anyopaque) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).Clone(@as(*const IImageList, @ptrCast(self)), riid, ppv);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetImageRect(self: *const T, i: i32, prc: ?*RECT) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetImageRect(@as(*const IImageList, @ptrCast(self)), i, prc);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetIconSize(self: *const T, cx: ?*i32, cy: ?*i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetIconSize(@as(*const IImageList, @ptrCast(self)), cx, cy);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_SetIconSize(self: *const T, cx: i32, cy: i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).SetIconSize(@as(*const IImageList, @ptrCast(self)), cx, cy);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetImageCount(self: *const T, pi: ?*i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetImageCount(@as(*const IImageList, @ptrCast(self)), pi);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_SetImageCount(self: *const T, uNewCount: u32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).SetImageCount(@as(*const IImageList, @ptrCast(self)), uNewCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_SetBkColor(self: *const T, clrBk: u32, pclr: ?*u32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).SetBkColor(@as(*const IImageList, @ptrCast(self)), clrBk, pclr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetBkColor(self: *const T, pclr: ?*u32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetBkColor(@as(*const IImageList, @ptrCast(self)), pclr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_BeginDrag(self: *const T, iTrack: i32, dxHotspot: i32, dyHotspot: i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).BeginDrag(@as(*const IImageList, @ptrCast(self)), iTrack, dxHotspot, dyHotspot);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_EndDrag(self: *const T) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).EndDrag(@as(*const IImageList, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_DragEnter(self: *const T, hwndLock: ?HWND, x: i32, y: i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).DragEnter(@as(*const IImageList, @ptrCast(self)), hwndLock, x, y);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_DragLeave(self: *const T, hwndLock: ?HWND) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).DragLeave(@as(*const IImageList, @ptrCast(self)), hwndLock);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_DragMove(self: *const T, x: i32, y: i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).DragMove(@as(*const IImageList, @ptrCast(self)), x, y);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_SetDragCursorImage(self: *const T, punk: ?*IUnknown, iDrag: i32, dxHotspot: i32, dyHotspot: i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).SetDragCursorImage(@as(*const IImageList, @ptrCast(self)), punk, iDrag, dxHotspot, dyHotspot);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_DragShowNolock(self: *const T, fShow: BOOL) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).DragShowNolock(@as(*const IImageList, @ptrCast(self)), fShow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetDragImage(self: *const T, ppt: ?*POINT, pptHotspot: ?*POINT, riid: ?*const Guid, ppv: ?*?*anyopaque) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetDragImage(@as(*const IImageList, @ptrCast(self)), ppt, pptHotspot, riid, ppv);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetItemFlags(self: *const T, i: i32, dwFlags: ?*IMAGE_LIST_ITEM_FLAGS) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetItemFlags(@as(*const IImageList, @ptrCast(self)), i, dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList_GetOverlayImage(self: *const T, iOverlay: i32, piIndex: ?*i32) HRESULT {
                return @as(*const IImageList.VTable, @ptrCast(self.vtable)).GetOverlayImage(@as(*const IImageList, @ptrCast(self)), iOverlay, piIndex);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const IMAGELISTSTATS = extern struct {
    cbSize: u32,
    cAlloc: i32,
    cUsed: i32,
    cStandby: i32,
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IImageList2_Value = Guid.initString("192b9d83-50fc-457b-90a0-2b82a8b5dae1");
pub const IID_IImageList2 = &IID_IImageList2_Value;
pub const IImageList2 = extern struct {
    pub const VTable = extern struct {
        base: IImageList.VTable,
        Resize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                cxNewIconSize: i32,
                cyNewIconSize: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                cxNewIconSize: i32,
                cyNewIconSize: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetOriginalSize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                iImage: i32,
                dwFlags: u32,
                pcx: ?*i32,
                pcy: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                iImage: i32,
                dwFlags: u32,
                pcx: ?*i32,
                pcy: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetOriginalSize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                iImage: i32,
                cx: i32,
                cy: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                iImage: i32,
                cx: i32,
                cy: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetCallback: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                punk: ?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                punk: ?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCallback: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                riid: ?*const Guid,
                ppv: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ForceImagePresent: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                iImage: i32,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                iImage: i32,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DiscardImages: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                iFirstImage: i32,
                iLastImage: i32,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                iFirstImage: i32,
                iLastImage: i32,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        PreloadImages: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                pimldp: ?*IMAGELISTDRAWPARAMS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                pimldp: ?*IMAGELISTDRAWPARAMS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStatistics: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                pils: ?*IMAGELISTSTATS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                pils: ?*IMAGELISTSTATS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                cx: i32,
                cy: i32,
                flags: IMAGELIST_CREATION_FLAGS,
                cInitial: i32,
                cGrow: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                cx: i32,
                cy: i32,
                flags: IMAGELIST_CREATION_FLAGS,
                cInitial: i32,
                cGrow: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Replace2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                i: i32,
                hbmImage: ?HBITMAP,
                hbmMask: ?HBITMAP,
                punk: ?*IUnknown,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                i: i32,
                hbmImage: ?HBITMAP,
                hbmMask: ?HBITMAP,
                punk: ?*IUnknown,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ReplaceFromImageList: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IImageList2,
                i: i32,
                pil: ?*IImageList,
                iSrc: i32,
                punk: ?*IUnknown,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IImageList2,
                i: i32,
                pil: ?*IImageList,
                iSrc: i32,
                punk: ?*IUnknown,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IImageList.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_Resize(self: *const T, cxNewIconSize: i32, cyNewIconSize: i32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).Resize(@as(*const IImageList2, @ptrCast(self)), cxNewIconSize, cyNewIconSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_GetOriginalSize(self: *const T, iImage: i32, dwFlags: u32, pcx: ?*i32, pcy: ?*i32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).GetOriginalSize(@as(*const IImageList2, @ptrCast(self)), iImage, dwFlags, pcx, pcy);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_SetOriginalSize(self: *const T, iImage: i32, cx: i32, cy: i32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).SetOriginalSize(@as(*const IImageList2, @ptrCast(self)), iImage, cx, cy);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_SetCallback(self: *const T, punk: ?*IUnknown) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).SetCallback(@as(*const IImageList2, @ptrCast(self)), punk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_GetCallback(self: *const T, riid: ?*const Guid, ppv: ?*?*anyopaque) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).GetCallback(@as(*const IImageList2, @ptrCast(self)), riid, ppv);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_ForceImagePresent(self: *const T, iImage: i32, dwFlags: u32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).ForceImagePresent(@as(*const IImageList2, @ptrCast(self)), iImage, dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_DiscardImages(self: *const T, iFirstImage: i32, iLastImage: i32, dwFlags: u32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).DiscardImages(@as(*const IImageList2, @ptrCast(self)), iFirstImage, iLastImage, dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_PreloadImages(self: *const T, pimldp: ?*IMAGELISTDRAWPARAMS) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).PreloadImages(@as(*const IImageList2, @ptrCast(self)), pimldp);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_GetStatistics(self: *const T, pils: ?*IMAGELISTSTATS) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).GetStatistics(@as(*const IImageList2, @ptrCast(self)), pils);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_Initialize(self: *const T, cx: i32, cy: i32, flags: IMAGELIST_CREATION_FLAGS, cInitial: i32, cGrow: i32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IImageList2, @ptrCast(self)), cx, cy, flags, cInitial, cGrow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_Replace2(self: *const T, i: i32, hbmImage: ?HBITMAP, hbmMask: ?HBITMAP, punk: ?*IUnknown, dwFlags: u32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).Replace2(@as(*const IImageList2, @ptrCast(self)), i, hbmImage, hbmMask, punk, dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IImageList2_ReplaceFromImageList(self: *const T, i: i32, pil: ?*IImageList, iSrc: i32, punk: ?*IUnknown, dwFlags: u32) HRESULT {
                return @as(*const IImageList2.VTable, @ptrCast(self.vtable)).ReplaceFromImageList(@as(*const IImageList2, @ptrCast(self)), i, pil, iSrc, punk, dwFlags);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const TA_PROPERTY = enum(i32) {
    FLAGS = 0,
    TRANSFORMCOUNT = 1,
    STAGGERDELAY = 2,
    STAGGERDELAYCAP = 3,
    STAGGERDELAYFACTOR = 4,
    ZORDER = 5,
};
pub const TAP_FLAGS = TA_PROPERTY.FLAGS;
pub const TAP_TRANSFORMCOUNT = TA_PROPERTY.TRANSFORMCOUNT;
pub const TAP_STAGGERDELAY = TA_PROPERTY.STAGGERDELAY;
pub const TAP_STAGGERDELAYCAP = TA_PROPERTY.STAGGERDELAYCAP;
pub const TAP_STAGGERDELAYFACTOR = TA_PROPERTY.STAGGERDELAYFACTOR;
pub const TAP_ZORDER = TA_PROPERTY.ZORDER;

pub const TA_PROPERTY_FLAG = enum(u32) {
    NONE = 0,
    HASSTAGGER = 1,
    ISRTLAWARE = 2,
    ALLOWCOLLECTION = 4,
    HASBACKGROUND = 8,
    HASPERSPECTIVE = 16,
    _,
    pub fn initFlags(o: struct {
        NONE: u1 = 0,
        HASSTAGGER: u1 = 0,
        ISRTLAWARE: u1 = 0,
        ALLOWCOLLECTION: u1 = 0,
        HASBACKGROUND: u1 = 0,
        HASPERSPECTIVE: u1 = 0,
    }) TA_PROPERTY_FLAG {
        return @as(TA_PROPERTY_FLAG, @enumFromInt((if (o.NONE == 1) @intFromEnum(TA_PROPERTY_FLAG.NONE) else 0) | (if (o.HASSTAGGER == 1) @intFromEnum(TA_PROPERTY_FLAG.HASSTAGGER) else 0) | (if (o.ISRTLAWARE == 1) @intFromEnum(TA_PROPERTY_FLAG.ISRTLAWARE) else 0) | (if (o.ALLOWCOLLECTION == 1) @intFromEnum(TA_PROPERTY_FLAG.ALLOWCOLLECTION) else 0) | (if (o.HASBACKGROUND == 1) @intFromEnum(TA_PROPERTY_FLAG.HASBACKGROUND) else 0) | (if (o.HASPERSPECTIVE == 1) @intFromEnum(TA_PROPERTY_FLAG.HASPERSPECTIVE) else 0)));
    }
};
pub const TAPF_NONE = TA_PROPERTY_FLAG.NONE;
pub const TAPF_HASSTAGGER = TA_PROPERTY_FLAG.HASSTAGGER;
pub const TAPF_ISRTLAWARE = TA_PROPERTY_FLAG.ISRTLAWARE;
pub const TAPF_ALLOWCOLLECTION = TA_PROPERTY_FLAG.ALLOWCOLLECTION;
pub const TAPF_HASBACKGROUND = TA_PROPERTY_FLAG.HASBACKGROUND;
pub const TAPF_HASPERSPECTIVE = TA_PROPERTY_FLAG.HASPERSPECTIVE;

pub const TA_TRANSFORM_TYPE = enum(i32) {
    TRANSLATE_2D = 0,
    SCALE_2D = 1,
    OPACITY = 2,
    CLIP = 3,
};
pub const TATT_TRANSLATE_2D = TA_TRANSFORM_TYPE.TRANSLATE_2D;
pub const TATT_SCALE_2D = TA_TRANSFORM_TYPE.SCALE_2D;
pub const TATT_OPACITY = TA_TRANSFORM_TYPE.OPACITY;
pub const TATT_CLIP = TA_TRANSFORM_TYPE.CLIP;

pub const TA_TRANSFORM_FLAG = enum(i32) {
    NONE = 0,
    TARGETVALUES_USER = 1,
    HASINITIALVALUES = 2,
    HASORIGINVALUES = 4,
};
pub const TATF_NONE = TA_TRANSFORM_FLAG.NONE;
pub const TATF_TARGETVALUES_USER = TA_TRANSFORM_FLAG.TARGETVALUES_USER;
pub const TATF_HASINITIALVALUES = TA_TRANSFORM_FLAG.HASINITIALVALUES;
pub const TATF_HASORIGINVALUES = TA_TRANSFORM_FLAG.HASORIGINVALUES;

pub const TA_TRANSFORM = extern struct {
    eTransformType: TA_TRANSFORM_TYPE,
    dwTimingFunctionId: u32,
    dwStartTime: u32,
    dwDurationTime: u32,
    eFlags: TA_TRANSFORM_FLAG,
};

pub const TA_TRANSFORM_2D = extern struct {
    header: TA_TRANSFORM,
    rX: f32,
    rY: f32,
    rInitialX: f32,
    rInitialY: f32,
    rOriginX: f32,
    rOriginY: f32,
};

pub const TA_TRANSFORM_OPACITY = extern struct {
    header: TA_TRANSFORM,
    rOpacity: f32,
    rInitialOpacity: f32,
};

pub const TA_TRANSFORM_CLIP = extern struct {
    header: TA_TRANSFORM,
    rLeft: f32,
    rTop: f32,
    rRight: f32,
    rBottom: f32,
    rInitialLeft: f32,
    rInitialTop: f32,
    rInitialRight: f32,
    rInitialBottom: f32,
};

pub const TA_TIMINGFUNCTION_TYPE = enum(i32) {
    UNDEFINED = 0,
    CUBIC_BEZIER = 1,
};
pub const TTFT_UNDEFINED = TA_TIMINGFUNCTION_TYPE.UNDEFINED;
pub const TTFT_CUBIC_BEZIER = TA_TIMINGFUNCTION_TYPE.CUBIC_BEZIER;

pub const TA_TIMINGFUNCTION = extern struct {
    eTimingFunctionType: TA_TIMINGFUNCTION_TYPE,
};

pub const TA_CUBIC_BEZIER = extern struct {
    header: TA_TIMINGFUNCTION,
    rX0: f32,
    rY0: f32,
    rX1: f32,
    rY1: f32,
};

pub const DTBGOPTS = extern struct {
    dwSize: u32,
    dwFlags: u32,
    rcClip: RECT,
};

pub const THEMESIZE = enum(i32) {
    MIN = 0,
    TRUE = 1,
    DRAW = 2,
};
pub const TS_MIN = THEMESIZE.MIN;
pub const TS_TRUE = THEMESIZE.TRUE;
pub const TS_DRAW = THEMESIZE.DRAW;

pub const MARGINS = extern struct {
    cxLeftWidth: i32,
    cxRightWidth: i32,
    cyTopHeight: i32,
    cyBottomHeight: i32,
};

pub const INTLIST = extern struct {
    iValueCount: i32,
    iValues: [402]i32,
};

pub const PROPERTYORIGIN = enum(i32) {
    STATE = 0,
    PART = 1,
    CLASS = 2,
    GLOBAL = 3,
    NOTFOUND = 4,
};
pub const PO_STATE = PROPERTYORIGIN.STATE;
pub const PO_PART = PROPERTYORIGIN.PART;
pub const PO_CLASS = PROPERTYORIGIN.CLASS;
pub const PO_GLOBAL = PROPERTYORIGIN.GLOBAL;
pub const PO_NOTFOUND = PROPERTYORIGIN.NOTFOUND;

pub const WINDOWTHEMEATTRIBUTETYPE = enum(i32) {
    T = 1,
};
pub const WTA_NONCLIENT = WINDOWTHEMEATTRIBUTETYPE.T;

pub const WTA_OPTIONS = extern struct {
    dwFlags: u32,
    dwMask: u32,
};

pub const DTT_CALLBACK_PROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hdc: ?HDC,
        pszText: [*:0]u16,
        cchText: i32,
        prc: ?*RECT,
        dwFlags: u32,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hdc: ?HDC,
        pszText: [*:0]u16,
        cchText: i32,
        prc: ?*RECT,
        dwFlags: u32,
        lParam: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const DTTOPTS = extern struct {
    dwSize: u32,
    dwFlags: u32,
    crText: u32,
    crBorder: u32,
    crShadow: u32,
    iTextShadowType: i32,
    ptShadowOffset: POINT,
    iBorderSize: i32,
    iFontPropId: i32,
    iColorPropId: i32,
    iStateId: i32,
    fApplyOverlay: BOOL,
    iGlowSize: i32,
    pfnDrawTextCallback: ?DTT_CALLBACK_PROC,
    lParam: LPARAM,
};

pub const BP_BUFFERFORMAT = enum(i32) {
    COMPATIBLEBITMAP = 0,
    DIB = 1,
    TOPDOWNDIB = 2,
    TOPDOWNMONODIB = 3,
};
pub const BPBF_COMPATIBLEBITMAP = BP_BUFFERFORMAT.COMPATIBLEBITMAP;
pub const BPBF_DIB = BP_BUFFERFORMAT.DIB;
pub const BPBF_TOPDOWNDIB = BP_BUFFERFORMAT.TOPDOWNDIB;
pub const BPBF_TOPDOWNMONODIB = BP_BUFFERFORMAT.TOPDOWNMONODIB;

pub const BP_ANIMATIONSTYLE = enum(i32) {
    NONE = 0,
    LINEAR = 1,
    CUBIC = 2,
    SINE = 3,
};
pub const BPAS_NONE = BP_ANIMATIONSTYLE.NONE;
pub const BPAS_LINEAR = BP_ANIMATIONSTYLE.LINEAR;
pub const BPAS_CUBIC = BP_ANIMATIONSTYLE.CUBIC;
pub const BPAS_SINE = BP_ANIMATIONSTYLE.SINE;

pub const BP_ANIMATIONPARAMS = extern struct {
    cbSize: u32,
    dwFlags: u32,
    style: BP_ANIMATIONSTYLE,
    dwDuration: u32,
};

pub const BP_PAINTPARAMS = extern struct {
    cbSize: u32,
    dwFlags: BP_PAINTPARAMS_FLAGS,
    prcExclude: ?*const RECT,
    pBlendFunction: ?*const BLENDFUNCTION,
};

pub const BGTYPE = enum(i32) {
    IMAGEFILE = 0,
    BORDERFILL = 1,
    NONE = 2,
};
pub const BT_IMAGEFILE = BGTYPE.IMAGEFILE;
pub const BT_BORDERFILL = BGTYPE.BORDERFILL;
pub const BT_NONE = BGTYPE.NONE;

pub const IMAGELAYOUT = enum(i32) {
    VERTICAL = 0,
    HORIZONTAL = 1,
};
pub const IL_VERTICAL = IMAGELAYOUT.VERTICAL;
pub const IL_HORIZONTAL = IMAGELAYOUT.HORIZONTAL;

pub const BORDERTYPE = enum(i32) {
    RECT = 0,
    ROUNDRECT = 1,
    ELLIPSE = 2,
};
pub const BT_RECT = BORDERTYPE.RECT;
pub const BT_ROUNDRECT = BORDERTYPE.ROUNDRECT;
pub const BT_ELLIPSE = BORDERTYPE.ELLIPSE;

pub const FILLTYPE = enum(i32) {
    SOLID = 0,
    VERTGRADIENT = 1,
    HORZGRADIENT = 2,
    RADIALGRADIENT = 3,
    TILEIMAGE = 4,
};
pub const FT_SOLID = FILLTYPE.SOLID;
pub const FT_VERTGRADIENT = FILLTYPE.VERTGRADIENT;
pub const FT_HORZGRADIENT = FILLTYPE.HORZGRADIENT;
pub const FT_RADIALGRADIENT = FILLTYPE.RADIALGRADIENT;
pub const FT_TILEIMAGE = FILLTYPE.TILEIMAGE;

pub const SIZINGTYPE = enum(i32) {
    TRUESIZE = 0,
    STRETCH = 1,
    TILE = 2,
};
pub const ST_TRUESIZE = SIZINGTYPE.TRUESIZE;
pub const ST_STRETCH = SIZINGTYPE.STRETCH;
pub const ST_TILE = SIZINGTYPE.TILE;

pub const HALIGN = enum(i32) {
    LEFT = 0,
    CENTER = 1,
    RIGHT = 2,
};
pub const HA_LEFT = HALIGN.LEFT;
pub const HA_CENTER = HALIGN.CENTER;
pub const HA_RIGHT = HALIGN.RIGHT;

pub const CONTENTALIGNMENT = enum(i32) {
    LEFT = 0,
    CENTER = 1,
    RIGHT = 2,
};
pub const CA_LEFT = CONTENTALIGNMENT.LEFT;
pub const CA_CENTER = CONTENTALIGNMENT.CENTER;
pub const CA_RIGHT = CONTENTALIGNMENT.RIGHT;

pub const VALIGN = enum(i32) {
    TOP = 0,
    CENTER = 1,
    BOTTOM = 2,
};
pub const VA_TOP = VALIGN.TOP;
pub const VA_CENTER = VALIGN.CENTER;
pub const VA_BOTTOM = VALIGN.BOTTOM;

pub const OFFSETTYPE = enum(i32) {
    TOPLEFT = 0,
    TOPRIGHT = 1,
    TOPMIDDLE = 2,
    BOTTOMLEFT = 3,
    BOTTOMRIGHT = 4,
    BOTTOMMIDDLE = 5,
    MIDDLELEFT = 6,
    MIDDLERIGHT = 7,
    LEFTOFCAPTION = 8,
    RIGHTOFCAPTION = 9,
    LEFTOFLASTBUTTON = 10,
    RIGHTOFLASTBUTTON = 11,
    ABOVELASTBUTTON = 12,
    BELOWLASTBUTTON = 13,
};
pub const OT_TOPLEFT = OFFSETTYPE.TOPLEFT;
pub const OT_TOPRIGHT = OFFSETTYPE.TOPRIGHT;
pub const OT_TOPMIDDLE = OFFSETTYPE.TOPMIDDLE;
pub const OT_BOTTOMLEFT = OFFSETTYPE.BOTTOMLEFT;
pub const OT_BOTTOMRIGHT = OFFSETTYPE.BOTTOMRIGHT;
pub const OT_BOTTOMMIDDLE = OFFSETTYPE.BOTTOMMIDDLE;
pub const OT_MIDDLELEFT = OFFSETTYPE.MIDDLELEFT;
pub const OT_MIDDLERIGHT = OFFSETTYPE.MIDDLERIGHT;
pub const OT_LEFTOFCAPTION = OFFSETTYPE.LEFTOFCAPTION;
pub const OT_RIGHTOFCAPTION = OFFSETTYPE.RIGHTOFCAPTION;
pub const OT_LEFTOFLASTBUTTON = OFFSETTYPE.LEFTOFLASTBUTTON;
pub const OT_RIGHTOFLASTBUTTON = OFFSETTYPE.RIGHTOFLASTBUTTON;
pub const OT_ABOVELASTBUTTON = OFFSETTYPE.ABOVELASTBUTTON;
pub const OT_BELOWLASTBUTTON = OFFSETTYPE.BELOWLASTBUTTON;

pub const ICONEFFECT = enum(i32) {
    NONE = 0,
    GLOW = 1,
    SHADOW = 2,
    PULSE = 3,
    ALPHA = 4,
};
pub const ICE_NONE = ICONEFFECT.NONE;
pub const ICE_GLOW = ICONEFFECT.GLOW;
pub const ICE_SHADOW = ICONEFFECT.SHADOW;
pub const ICE_PULSE = ICONEFFECT.PULSE;
pub const ICE_ALPHA = ICONEFFECT.ALPHA;

pub const TEXTSHADOWTYPE = enum(i32) {
    NONE = 0,
    SINGLE = 1,
    CONTINUOUS = 2,
};
pub const TST_NONE = TEXTSHADOWTYPE.NONE;
pub const TST_SINGLE = TEXTSHADOWTYPE.SINGLE;
pub const TST_CONTINUOUS = TEXTSHADOWTYPE.CONTINUOUS;

pub const GLYPHTYPE = enum(i32) {
    NONE = 0,
    IMAGEGLYPH = 1,
    FONTGLYPH = 2,
};
pub const GT_NONE = GLYPHTYPE.NONE;
pub const GT_IMAGEGLYPH = GLYPHTYPE.IMAGEGLYPH;
pub const GT_FONTGLYPH = GLYPHTYPE.FONTGLYPH;

pub const IMAGESELECTTYPE = enum(i32) {
    NONE = 0,
    SIZE = 1,
    DPI = 2,
};
pub const IST_NONE = IMAGESELECTTYPE.NONE;
pub const IST_SIZE = IMAGESELECTTYPE.SIZE;
pub const IST_DPI = IMAGESELECTTYPE.DPI;

pub const TRUESIZESCALINGTYPE = enum(i32) {
    NONE = 0,
    SIZE = 1,
    DPI = 2,
};
pub const TSST_NONE = TRUESIZESCALINGTYPE.NONE;
pub const TSST_SIZE = TRUESIZESCALINGTYPE.SIZE;
pub const TSST_DPI = TRUESIZESCALINGTYPE.DPI;

pub const GLYPHFONTSIZINGTYPE = enum(i32) {
    NONE = 0,
    SIZE = 1,
    DPI = 2,
};
pub const GFST_NONE = GLYPHFONTSIZINGTYPE.NONE;
pub const GFST_SIZE = GLYPHFONTSIZINGTYPE.SIZE;
pub const GFST_DPI = GLYPHFONTSIZINGTYPE.DPI;

pub const LINKPARTS = enum(i32) {
    K = 1,
};
pub const LP_HYPERLINK = LINKPARTS.K;

pub const HYPERLINKSTATES = enum(i32) {
    NORMALTEXT = 1,
    LINKTEXT = 2,
};
pub const HLS_NORMALTEXT = HYPERLINKSTATES.NORMALTEXT;
pub const HLS_LINKTEXT = HYPERLINKSTATES.LINKTEXT;

pub const EMPTYMARKUPPARTS = enum(i32) {
    T = 1,
};
pub const EMP_MARKUPTEXT = EMPTYMARKUPPARTS.T;

pub const MARKUPTEXTSTATES = enum(i32) {
    NORMALTEXT = 1,
    LINKTEXT = 2,
};
pub const EMT_NORMALTEXT = MARKUPTEXTSTATES.NORMALTEXT;
pub const EMT_LINKTEXT = MARKUPTEXTSTATES.LINKTEXT;

pub const STATICPARTS = enum(i32) {
    T = 1,
};
pub const STAT_TEXT = STATICPARTS.T;

pub const PAGEPARTS = enum(i32) {
    UP = 1,
    DOWN = 2,
    UPHORZ = 3,
    DOWNHORZ = 4,
};
pub const PGRP_UP = PAGEPARTS.UP;
pub const PGRP_DOWN = PAGEPARTS.DOWN;
pub const PGRP_UPHORZ = PAGEPARTS.UPHORZ;
pub const PGRP_DOWNHORZ = PAGEPARTS.DOWNHORZ;

pub const MONTHCALPARTS = enum(i32) {
    BACKGROUND = 1,
    BORDERS = 2,
    GRIDBACKGROUND = 3,
    COLHEADERSPLITTER = 4,
    GRIDCELLBACKGROUND = 5,
    GRIDCELL = 6,
    GRIDCELLUPPER = 7,
    TRAILINGGRIDCELL = 8,
    TRAILINGGRIDCELLUPPER = 9,
    NAVNEXT = 10,
    NAVPREV = 11,
};
pub const MC_BACKGROUND = MONTHCALPARTS.BACKGROUND;
pub const MC_BORDERS = MONTHCALPARTS.BORDERS;
pub const MC_GRIDBACKGROUND = MONTHCALPARTS.GRIDBACKGROUND;
pub const MC_COLHEADERSPLITTER = MONTHCALPARTS.COLHEADERSPLITTER;
pub const MC_GRIDCELLBACKGROUND = MONTHCALPARTS.GRIDCELLBACKGROUND;
pub const MC_GRIDCELL = MONTHCALPARTS.GRIDCELL;
pub const MC_GRIDCELLUPPER = MONTHCALPARTS.GRIDCELLUPPER;
pub const MC_TRAILINGGRIDCELL = MONTHCALPARTS.TRAILINGGRIDCELL;
pub const MC_TRAILINGGRIDCELLUPPER = MONTHCALPARTS.TRAILINGGRIDCELLUPPER;
pub const MC_NAVNEXT = MONTHCALPARTS.NAVNEXT;
pub const MC_NAVPREV = MONTHCALPARTS.NAVPREV;

pub const GRIDCELLBACKGROUNDSTATES = enum(i32) {
    SELECTED = 1,
    HOT = 2,
    SELECTEDHOT = 3,
    SELECTEDNOTFOCUSED = 4,
    TODAY = 5,
    TODAYSELECTED = 6,
};
pub const MCGCB_SELECTED = GRIDCELLBACKGROUNDSTATES.SELECTED;
pub const MCGCB_HOT = GRIDCELLBACKGROUNDSTATES.HOT;
pub const MCGCB_SELECTEDHOT = GRIDCELLBACKGROUNDSTATES.SELECTEDHOT;
pub const MCGCB_SELECTEDNOTFOCUSED = GRIDCELLBACKGROUNDSTATES.SELECTEDNOTFOCUSED;
pub const MCGCB_TODAY = GRIDCELLBACKGROUNDSTATES.TODAY;
pub const MCGCB_TODAYSELECTED = GRIDCELLBACKGROUNDSTATES.TODAYSELECTED;

pub const GRIDCELLSTATES = enum(i32) {
    HOT = 1,
    HASSTATE = 2,
    HASSTATEHOT = 3,
    TODAY = 4,
    TODAYSELECTED = 5,
    SELECTED = 6,
    SELECTEDHOT = 7,
};
pub const MCGC_HOT = GRIDCELLSTATES.HOT;
pub const MCGC_HASSTATE = GRIDCELLSTATES.HASSTATE;
pub const MCGC_HASSTATEHOT = GRIDCELLSTATES.HASSTATEHOT;
pub const MCGC_TODAY = GRIDCELLSTATES.TODAY;
pub const MCGC_TODAYSELECTED = GRIDCELLSTATES.TODAYSELECTED;
pub const MCGC_SELECTED = GRIDCELLSTATES.SELECTED;
pub const MCGC_SELECTEDHOT = GRIDCELLSTATES.SELECTEDHOT;

pub const GRIDCELLUPPERSTATES = enum(i32) {
    HOT = 1,
    HASSTATE = 2,
    HASSTATEHOT = 3,
    SELECTED = 4,
    SELECTEDHOT = 5,
};
pub const MCGCU_HOT = GRIDCELLUPPERSTATES.HOT;
pub const MCGCU_HASSTATE = GRIDCELLUPPERSTATES.HASSTATE;
pub const MCGCU_HASSTATEHOT = GRIDCELLUPPERSTATES.HASSTATEHOT;
pub const MCGCU_SELECTED = GRIDCELLUPPERSTATES.SELECTED;
pub const MCGCU_SELECTEDHOT = GRIDCELLUPPERSTATES.SELECTEDHOT;

pub const TRAILINGGRIDCELLSTATES = enum(i32) {
    HOT = 1,
    HASSTATE = 2,
    HASSTATEHOT = 3,
    TODAY = 4,
    TODAYSELECTED = 5,
    SELECTED = 6,
    SELECTEDHOT = 7,
};
pub const MCTGC_HOT = TRAILINGGRIDCELLSTATES.HOT;
pub const MCTGC_HASSTATE = TRAILINGGRIDCELLSTATES.HASSTATE;
pub const MCTGC_HASSTATEHOT = TRAILINGGRIDCELLSTATES.HASSTATEHOT;
pub const MCTGC_TODAY = TRAILINGGRIDCELLSTATES.TODAY;
pub const MCTGC_TODAYSELECTED = TRAILINGGRIDCELLSTATES.TODAYSELECTED;
pub const MCTGC_SELECTED = TRAILINGGRIDCELLSTATES.SELECTED;
pub const MCTGC_SELECTEDHOT = TRAILINGGRIDCELLSTATES.SELECTEDHOT;

pub const TRAILINGGRIDCELLUPPERSTATES = enum(i32) {
    HOT = 1,
    HASSTATE = 2,
    HASSTATEHOT = 3,
    SELECTED = 4,
    SELECTEDHOT = 5,
};
pub const MCTGCU_HOT = TRAILINGGRIDCELLUPPERSTATES.HOT;
pub const MCTGCU_HASSTATE = TRAILINGGRIDCELLUPPERSTATES.HASSTATE;
pub const MCTGCU_HASSTATEHOT = TRAILINGGRIDCELLUPPERSTATES.HASSTATEHOT;
pub const MCTGCU_SELECTED = TRAILINGGRIDCELLUPPERSTATES.SELECTED;
pub const MCTGCU_SELECTEDHOT = TRAILINGGRIDCELLUPPERSTATES.SELECTEDHOT;

pub const NAVNEXTSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    PRESSED = 3,
    DISABLED = 4,
};
pub const MCNN_NORMAL = NAVNEXTSTATES.NORMAL;
pub const MCNN_HOT = NAVNEXTSTATES.HOT;
pub const MCNN_PRESSED = NAVNEXTSTATES.PRESSED;
pub const MCNN_DISABLED = NAVNEXTSTATES.DISABLED;

pub const NAVPREVSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    PRESSED = 3,
    DISABLED = 4,
};
pub const MCNP_NORMAL = NAVPREVSTATES.NORMAL;
pub const MCNP_HOT = NAVPREVSTATES.HOT;
pub const MCNP_PRESSED = NAVPREVSTATES.PRESSED;
pub const MCNP_DISABLED = NAVPREVSTATES.DISABLED;

pub const CLOCKPARTS = enum(i32) {
    E = 1,
};
pub const CLP_TIME = CLOCKPARTS.E;

pub const CLOCKSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    PRESSED = 3,
};
pub const CLS_NORMAL = CLOCKSTATES.NORMAL;
pub const CLS_HOT = CLOCKSTATES.HOT;
pub const CLS_PRESSED = CLOCKSTATES.PRESSED;

pub const TRAYNOTIFYPARTS = enum(i32) {
    BACKGROUND = 1,
    ANIMBACKGROUND = 2,
};
pub const TNP_BACKGROUND = TRAYNOTIFYPARTS.BACKGROUND;
pub const TNP_ANIMBACKGROUND = TRAYNOTIFYPARTS.ANIMBACKGROUND;

pub const TASKBARPARTS = enum(i32) {
    BACKGROUNDBOTTOM = 1,
    BACKGROUNDRIGHT = 2,
    BACKGROUNDTOP = 3,
    BACKGROUNDLEFT = 4,
    SIZINGBARBOTTOM = 5,
    SIZINGBARRIGHT = 6,
    SIZINGBARTOP = 7,
    SIZINGBARLEFT = 8,
};
pub const TBP_BACKGROUNDBOTTOM = TASKBARPARTS.BACKGROUNDBOTTOM;
pub const TBP_BACKGROUNDRIGHT = TASKBARPARTS.BACKGROUNDRIGHT;
pub const TBP_BACKGROUNDTOP = TASKBARPARTS.BACKGROUNDTOP;
pub const TBP_BACKGROUNDLEFT = TASKBARPARTS.BACKGROUNDLEFT;
pub const TBP_SIZINGBARBOTTOM = TASKBARPARTS.SIZINGBARBOTTOM;
pub const TBP_SIZINGBARRIGHT = TASKBARPARTS.SIZINGBARRIGHT;
pub const TBP_SIZINGBARTOP = TASKBARPARTS.SIZINGBARTOP;
pub const TBP_SIZINGBARLEFT = TASKBARPARTS.SIZINGBARLEFT;

pub const TASKBANDPARTS = enum(i32) {
    GROUPCOUNT = 1,
    FLASHBUTTON = 2,
    FLASHBUTTONGROUPMENU = 3,
};
pub const TDP_GROUPCOUNT = TASKBANDPARTS.GROUPCOUNT;
pub const TDP_FLASHBUTTON = TASKBANDPARTS.FLASHBUTTON;
pub const TDP_FLASHBUTTONGROUPMENU = TASKBANDPARTS.FLASHBUTTONGROUPMENU;

pub const STARTPANELPARTS = enum(i32) {
    USERPANE = 1,
    MOREPROGRAMS = 2,
    MOREPROGRAMSARROW = 3,
    PROGLIST = 4,
    PROGLISTSEPARATOR = 5,
    PLACESLIST = 6,
    PLACESLISTSEPARATOR = 7,
    LOGOFF = 8,
    LOGOFFBUTTONS = 9,
    USERPICTURE = 10,
    PREVIEW = 11,
    MOREPROGRAMSTAB = 12,
    NSCHOST = 13,
    SOFTWAREEXPLORER = 14,
    OPENBOX = 15,
    SEARCHVIEW = 16,
    MOREPROGRAMSARROWBACK = 17,
    TOPMATCH = 18,
    LOGOFFSPLITBUTTONDROPDOWN = 19,
};
pub const SPP_USERPANE = STARTPANELPARTS.USERPANE;
pub const SPP_MOREPROGRAMS = STARTPANELPARTS.MOREPROGRAMS;
pub const SPP_MOREPROGRAMSARROW = STARTPANELPARTS.MOREPROGRAMSARROW;
pub const SPP_PROGLIST = STARTPANELPARTS.PROGLIST;
pub const SPP_PROGLISTSEPARATOR = STARTPANELPARTS.PROGLISTSEPARATOR;
pub const SPP_PLACESLIST = STARTPANELPARTS.PLACESLIST;
pub const SPP_PLACESLISTSEPARATOR = STARTPANELPARTS.PLACESLISTSEPARATOR;
pub const SPP_LOGOFF = STARTPANELPARTS.LOGOFF;
pub const SPP_LOGOFFBUTTONS = STARTPANELPARTS.LOGOFFBUTTONS;
pub const SPP_USERPICTURE = STARTPANELPARTS.USERPICTURE;
pub const SPP_PREVIEW = STARTPANELPARTS.PREVIEW;
pub const SPP_MOREPROGRAMSTAB = STARTPANELPARTS.MOREPROGRAMSTAB;
pub const SPP_NSCHOST = STARTPANELPARTS.NSCHOST;
pub const SPP_SOFTWAREEXPLORER = STARTPANELPARTS.SOFTWAREEXPLORER;
pub const SPP_OPENBOX = STARTPANELPARTS.OPENBOX;
pub const SPP_SEARCHVIEW = STARTPANELPARTS.SEARCHVIEW;
pub const SPP_MOREPROGRAMSARROWBACK = STARTPANELPARTS.MOREPROGRAMSARROWBACK;
pub const SPP_TOPMATCH = STARTPANELPARTS.TOPMATCH;
pub const SPP_LOGOFFSPLITBUTTONDROPDOWN = STARTPANELPARTS.LOGOFFSPLITBUTTONDROPDOWN;

pub const MOREPROGRAMSTABSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    SELECTED = 3,
    DISABLED = 4,
    FOCUSED = 5,
};
pub const SPMPT_NORMAL = MOREPROGRAMSTABSTATES.NORMAL;
pub const SPMPT_HOT = MOREPROGRAMSTABSTATES.HOT;
pub const SPMPT_SELECTED = MOREPROGRAMSTABSTATES.SELECTED;
pub const SPMPT_DISABLED = MOREPROGRAMSTABSTATES.DISABLED;
pub const SPMPT_FOCUSED = MOREPROGRAMSTABSTATES.FOCUSED;

pub const SOFTWAREEXPLORERSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    SELECTED = 3,
    DISABLED = 4,
    FOCUSED = 5,
};
pub const SPSE_NORMAL = SOFTWAREEXPLORERSTATES.NORMAL;
pub const SPSE_HOT = SOFTWAREEXPLORERSTATES.HOT;
pub const SPSE_SELECTED = SOFTWAREEXPLORERSTATES.SELECTED;
pub const SPSE_DISABLED = SOFTWAREEXPLORERSTATES.DISABLED;
pub const SPSE_FOCUSED = SOFTWAREEXPLORERSTATES.FOCUSED;

pub const OPENBOXSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    SELECTED = 3,
    DISABLED = 4,
    FOCUSED = 5,
};
pub const SPOB_NORMAL = OPENBOXSTATES.NORMAL;
pub const SPOB_HOT = OPENBOXSTATES.HOT;
pub const SPOB_SELECTED = OPENBOXSTATES.SELECTED;
pub const SPOB_DISABLED = OPENBOXSTATES.DISABLED;
pub const SPOB_FOCUSED = OPENBOXSTATES.FOCUSED;

pub const MOREPROGRAMSARROWSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    PRESSED = 3,
};
pub const SPS_NORMAL = MOREPROGRAMSARROWSTATES.NORMAL;
pub const SPS_HOT = MOREPROGRAMSARROWSTATES.HOT;
pub const SPS_PRESSED = MOREPROGRAMSARROWSTATES.PRESSED;

pub const MOREPROGRAMSARROWBACKSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    PRESSED = 3,
};
pub const SPSB_NORMAL = MOREPROGRAMSARROWBACKSTATES.NORMAL;
pub const SPSB_HOT = MOREPROGRAMSARROWBACKSTATES.HOT;
pub const SPSB_PRESSED = MOREPROGRAMSARROWBACKSTATES.PRESSED;

pub const LOGOFFBUTTONSSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    PRESSED = 3,
};
pub const SPLS_NORMAL = LOGOFFBUTTONSSTATES.NORMAL;
pub const SPLS_HOT = LOGOFFBUTTONSSTATES.HOT;
pub const SPLS_PRESSED = LOGOFFBUTTONSSTATES.PRESSED;

pub const MENUBANDPARTS = enum(i32) {
    NEWAPPBUTTON = 1,
    SEPERATOR = 2,
};
pub const MDP_NEWAPPBUTTON = MENUBANDPARTS.NEWAPPBUTTON;
pub const MDP_SEPERATOR = MENUBANDPARTS.SEPERATOR;

pub const MENUBANDSTATES = enum(i32) {
    NORMAL = 1,
    HOT = 2,
    PRESSED = 3,
    DISABLED = 4,
    CHECKED = 5,
    HOTCHECKED = 6,
};
pub const MDS_NORMAL = MENUBANDSTATES.NORMAL;
pub const MDS_HOT = MENUBANDSTATES.HOT;
pub const MDS_PRESSED = MENUBANDSTATES.PRESSED;
pub const MDS_DISABLED = MENUBANDSTATES.DISABLED;
pub const MDS_CHECKED = MENUBANDSTATES.CHECKED;
pub const MDS_HOTCHECKED = MENUBANDSTATES.HOTCHECKED;

pub const CCSTYLEA = extern struct {
    flStyle: u32,
    flExtStyle: u32,
    szText: [256]CHAR,
    lgid: u16,
    wReserved1: u16,
};

pub const CCSTYLEW = extern struct {
    flStyle: u32,
    flExtStyle: u32,
    szText: [256]u16,
    lgid: u16,
    wReserved1: u16,
};

pub const LPFNCCSTYLEA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hwndParent: ?HWND,
        pccs: ?*CCSTYLEA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        hwndParent: ?HWND,
        pccs: ?*CCSTYLEA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const LPFNCCSTYLEW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hwndParent: ?HWND,
        pccs: ?*CCSTYLEW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        hwndParent: ?HWND,
        pccs: ?*CCSTYLEW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const LPFNCCSIZETOTEXTA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        flStyle: u32,
        flExtStyle: u32,
        hfont: ?HFONT,
        pszText: ?PSTR,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        flStyle: u32,
        flExtStyle: u32,
        hfont: ?HFONT,
        pszText: ?PSTR,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const LPFNCCSIZETOTEXTW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        flStyle: u32,
        flExtStyle: u32,
        hfont: ?HFONT,
        pszText: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        flStyle: u32,
        flExtStyle: u32,
        hfont: ?HFONT,
        pszText: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const CCSTYLEFLAGA = extern struct {
    flStyle: u32,
    flStyleMask: u32,
    pszStyle: ?PSTR,
};

pub const CCSTYLEFLAGW = extern struct {
    flStyle: u32,
    flStyleMask: u32,
    pszStyle: ?PWSTR,
};

pub const CCINFOA = extern struct {
    szClass: [32]CHAR,
    flOptions: u32,
    szDesc: [32]CHAR,
    cxDefault: u32,
    cyDefault: u32,
    flStyleDefault: u32,
    flExtStyleDefault: u32,
    flCtrlTypeMask: u32,
    szTextDefault: [256]CHAR,
    cStyleFlags: i32,
    aStyleFlags: ?*CCSTYLEFLAGA,
    lpfnStyle: ?LPFNCCSTYLEA,
    lpfnSizeToText: ?LPFNCCSIZETOTEXTA,
    dwReserved1: u32,
    dwReserved2: u32,
};

pub const CCINFOW = extern struct {
    szClass: [32]u16,
    flOptions: u32,
    szDesc: [32]u16,
    cxDefault: u32,
    cyDefault: u32,
    flStyleDefault: u32,
    flExtStyleDefault: u32,
    flCtrlTypeMask: u32,
    cStyleFlags: i32,
    aStyleFlags: ?*CCSTYLEFLAGW,
    szTextDefault: [256]u16,
    lpfnStyle: ?LPFNCCSTYLEW,
    lpfnSizeToText: ?LPFNCCSIZETOTEXTW,
    dwReserved1: u32,
    dwReserved2: u32,
};

pub const LPFNCCINFOA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        acci: ?*CCINFOA,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        acci: ?*CCINFOA,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPFNCCINFOW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        acci: ?*CCINFOW,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        acci: ?*CCINFOW,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const EDITWORDBREAKPROCA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        lpch: ?PSTR,
        ichCurrent: i32,
        cch: i32,
        code: WORD_BREAK_ACTION,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        lpch: ?PSTR,
        ichCurrent: i32,
        cch: i32,
        code: WORD_BREAK_ACTION,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const EDITWORDBREAKPROCW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        lpch: ?PWSTR,
        ichCurrent: i32,
        cch: i32,
        code: WORD_BREAK_ACTION,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        lpch: ?PWSTR,
        ichCurrent: i32,
        cch: i32,
        code: WORD_BREAK_ACTION,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const NMHDR = extern struct {
    hwndFrom: ?HWND,
    idFrom: usize,
    code: u32,
};

pub const MEASUREITEMSTRUCT = extern struct {
    CtlType: u32,
    CtlID: u32,
    itemID: u32,
    itemWidth: u32,
    itemHeight: u32,
    itemData: usize,
};

pub const DRAWITEMSTRUCT = extern struct {
    CtlType: DRAWITEMSTRUCT_CTL_TYPE,
    CtlID: u32,
    itemID: u32,
    itemAction: u32,
    itemState: u32,
    hwndItem: ?HWND,
    hDC: ?HDC,
    rcItem: RECT,
    itemData: usize,
};

pub const DELETEITEMSTRUCT = extern struct {
    CtlType: DRAWITEMSTRUCT_CTL_TYPE,
    CtlID: u32,
    itemID: u32,
    hwndItem: ?HWND,
    itemData: usize,
};

pub const COMPAREITEMSTRUCT = extern struct {
    CtlType: u32,
    CtlID: u32,
    hwndItem: ?HWND,
    itemID1: u32,
    itemData1: usize,
    itemID2: u32,
    itemData2: usize,
    dwLocaleId: u32,
};

pub const POINTER_FEEDBACK_MODE = enum(i32) {
    DEFAULT = 1,
    INDIRECT = 2,
    NONE = 3,
};
pub const POINTER_FEEDBACK_DEFAULT = POINTER_FEEDBACK_MODE.DEFAULT;
pub const POINTER_FEEDBACK_INDIRECT = POINTER_FEEDBACK_MODE.INDIRECT;
pub const POINTER_FEEDBACK_NONE = POINTER_FEEDBACK_MODE.NONE;

pub const USAGE_PROPERTIES = extern struct {
    level: u16,
    page: u16,
    usage: u16,
    logicalMinimum: i32,
    logicalMaximum: i32,
    unit: u16,
    exponent: u16,
    count: u8,
    physicalMinimum: i32,
    physicalMaximum: i32,
};

pub const POINTER_TYPE_INFO = extern struct {
    type: POINTER_INPUT_TYPE,
    Anonymous: extern union {
        touchInfo: POINTER_TOUCH_INFO,
        penInfo: POINTER_PEN_INFO,
    },
};

pub const TOUCH_HIT_TESTING_PROXIMITY_EVALUATION = extern struct {
    score: u16,
    adjustedPoint: POINT,
};

pub const TOUCH_HIT_TESTING_INPUT = extern struct {
    pointerId: u32,
    point: POINT,
    boundingBox: RECT,
    nonOccludedBoundingBox: RECT,
    orientation: u32,
};

pub const FEEDBACK_TYPE = enum(i32) {
    TOUCH_CONTACTVISUALIZATION = 1,
    PEN_BARRELVISUALIZATION = 2,
    PEN_TAP = 3,
    PEN_DOUBLETAP = 4,
    PEN_PRESSANDHOLD = 5,
    PEN_RIGHTTAP = 6,
    TOUCH_TAP = 7,
    TOUCH_DOUBLETAP = 8,
    TOUCH_PRESSANDHOLD = 9,
    TOUCH_RIGHTTAP = 10,
    GESTURE_PRESSANDTAP = 11,
    MAX = -1,
};
pub const FEEDBACK_TOUCH_CONTACTVISUALIZATION = FEEDBACK_TYPE.TOUCH_CONTACTVISUALIZATION;
pub const FEEDBACK_PEN_BARRELVISUALIZATION = FEEDBACK_TYPE.PEN_BARRELVISUALIZATION;
pub const FEEDBACK_PEN_TAP = FEEDBACK_TYPE.PEN_TAP;
pub const FEEDBACK_PEN_DOUBLETAP = FEEDBACK_TYPE.PEN_DOUBLETAP;
pub const FEEDBACK_PEN_PRESSANDHOLD = FEEDBACK_TYPE.PEN_PRESSANDHOLD;
pub const FEEDBACK_PEN_RIGHTTAP = FEEDBACK_TYPE.PEN_RIGHTTAP;
pub const FEEDBACK_TOUCH_TAP = FEEDBACK_TYPE.TOUCH_TAP;
pub const FEEDBACK_TOUCH_DOUBLETAP = FEEDBACK_TYPE.TOUCH_DOUBLETAP;
pub const FEEDBACK_TOUCH_PRESSANDHOLD = FEEDBACK_TYPE.TOUCH_PRESSANDHOLD;
pub const FEEDBACK_TOUCH_RIGHTTAP = FEEDBACK_TYPE.TOUCH_RIGHTTAP;
pub const FEEDBACK_GESTURE_PRESSANDTAP = FEEDBACK_TYPE.GESTURE_PRESSANDTAP;
pub const FEEDBACK_MAX = FEEDBACK_TYPE.MAX;

pub const COMBOBOXINFO = extern struct {
    cbSize: u32,
    rcItem: RECT,
    rcButton: RECT,
    stateButton: COMBOBOXINFO_BUTTON_STATE,
    hwndCombo: ?HWND,
    hwndItem: ?HWND,
    hwndList: ?HWND,
};

pub const POINTER_DEVICE_TYPE = enum(i32) {
    INTEGRATED_PEN = 1,
    EXTERNAL_PEN = 2,
    TOUCH = 3,
    TOUCH_PAD = 4,
    MAX = -1,
};
pub const POINTER_DEVICE_TYPE_INTEGRATED_PEN = POINTER_DEVICE_TYPE.INTEGRATED_PEN;
pub const POINTER_DEVICE_TYPE_EXTERNAL_PEN = POINTER_DEVICE_TYPE.EXTERNAL_PEN;
pub const POINTER_DEVICE_TYPE_TOUCH = POINTER_DEVICE_TYPE.TOUCH;
pub const POINTER_DEVICE_TYPE_TOUCH_PAD = POINTER_DEVICE_TYPE.TOUCH_PAD;
pub const POINTER_DEVICE_TYPE_MAX = POINTER_DEVICE_TYPE.MAX;

pub const POINTER_DEVICE_INFO = extern struct {
    displayOrientation: u32,
    device: ?HANDLE,
    pointerDeviceType: POINTER_DEVICE_TYPE,
    monitor: ?HMONITOR,
    startingCursorId: u32,
    maxActiveContacts: u16,
    productString: [520]u16,
};

pub const POINTER_DEVICE_PROPERTY = extern struct {
    logicalMin: i32,
    logicalMax: i32,
    physicalMin: i32,
    physicalMax: i32,
    unit: u32,
    unitExponent: u32,
    usagePageId: u16,
    usageId: u16,
};

pub const POINTER_DEVICE_CURSOR_TYPE = enum(i32) {
    UNKNOWN = 0,
    TIP = 1,
    ERASER = 2,
    MAX = -1,
};
pub const POINTER_DEVICE_CURSOR_TYPE_UNKNOWN = POINTER_DEVICE_CURSOR_TYPE.UNKNOWN;
pub const POINTER_DEVICE_CURSOR_TYPE_TIP = POINTER_DEVICE_CURSOR_TYPE.TIP;
pub const POINTER_DEVICE_CURSOR_TYPE_ERASER = POINTER_DEVICE_CURSOR_TYPE.ERASER;
pub const POINTER_DEVICE_CURSOR_TYPE_MAX = POINTER_DEVICE_CURSOR_TYPE.MAX;

pub const POINTER_DEVICE_CURSOR_INFO = extern struct {
    cursorId: u32,
    cursor: POINTER_DEVICE_CURSOR_TYPE,
};

pub const TBBUTTON = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        iBitmap: i32,
        idCommand: i32,
        fsState: u8,
        fsStyle: u8,
        bReserved: [6]u8,
        dwData: usize,
        iString: isize,
    },
    .X86 => extern struct {
        iBitmap: i32,
        idCommand: i32,
        fsState: u8,
        fsStyle: u8,
        bReserved: [2]u8,
        dwData: usize,
        iString: isize,
    },
};

//--------------------------------------------------------------------------------
// Section: Functions (214)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn CreatePropertySheetPageA(
    constPropSheetPagePointer: ?*PROPSHEETPAGEA,
) callconv(@import("std").os.windows.WINAPI) ?HPROPSHEETPAGE;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn CreatePropertySheetPageW(
    constPropSheetPagePointer: ?*PROPSHEETPAGEW,
) callconv(@import("std").os.windows.WINAPI) ?HPROPSHEETPAGE;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DestroyPropertySheetPage(
    param0: ?HPROPSHEETPAGE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn PropertySheetA(
    param0: ?*PROPSHEETHEADERA_V2,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn PropertySheetW(
    param0: ?*PROPSHEETHEADERW_V2,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn InitCommonControls() callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn InitCommonControlsEx(
    picce: ?*const INITCOMMONCONTROLSEX,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Create(
    cx: i32,
    cy: i32,
    flags: IMAGELIST_CREATION_FLAGS,
    cInitial: i32,
    cGrow: i32,
) callconv(@import("std").os.windows.WINAPI) ?HIMAGELIST;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Destroy(
    himl: ?HIMAGELIST,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_GetImageCount(
    himl: ?HIMAGELIST,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_SetImageCount(
    himl: ?HIMAGELIST,
    uNewCount: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Add(
    himl: ?HIMAGELIST,
    hbmImage: ?HBITMAP,
    hbmMask: ?HBITMAP,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_ReplaceIcon(
    himl: ?HIMAGELIST,
    i: i32,
    hicon: ?HICON,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_SetBkColor(
    himl: ?HIMAGELIST,
    clrBk: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_GetBkColor(
    himl: ?HIMAGELIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_SetOverlayImage(
    himl: ?HIMAGELIST,
    iImage: i32,
    iOverlay: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Draw(
    himl: ?HIMAGELIST,
    i: i32,
    hdcDst: ?HDC,
    x: i32,
    y: i32,
    fStyle: IMAGE_LIST_DRAW_STYLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Replace(
    himl: ?HIMAGELIST,
    i: i32,
    hbmImage: ?HBITMAP,
    hbmMask: ?HBITMAP,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_AddMasked(
    himl: ?HIMAGELIST,
    hbmImage: ?HBITMAP,
    crMask: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_DrawEx(
    himl: ?HIMAGELIST,
    i: i32,
    hdcDst: ?HDC,
    x: i32,
    y: i32,
    dx: i32,
    dy: i32,
    rgbBk: u32,
    rgbFg: u32,
    fStyle: IMAGE_LIST_DRAW_STYLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_DrawIndirect(
    pimldp: ?*IMAGELISTDRAWPARAMS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Remove(
    himl: ?HIMAGELIST,
    i: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_GetIcon(
    himl: ?HIMAGELIST,
    i: i32,
    flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?HICON;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_LoadImageA(
    hi: ?HINSTANCE,
    lpbmp: ?[*:0]const u8,
    cx: i32,
    cGrow: i32,
    crMask: u32,
    uType: u32,
    uFlags: IMAGE_FLAGS,
) callconv(@import("std").os.windows.WINAPI) ?HIMAGELIST;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_LoadImageW(
    hi: ?HINSTANCE,
    lpbmp: ?[*:0]const u16,
    cx: i32,
    cGrow: i32,
    crMask: u32,
    uType: u32,
    uFlags: IMAGE_FLAGS,
) callconv(@import("std").os.windows.WINAPI) ?HIMAGELIST;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Copy(
    himlDst: ?HIMAGELIST,
    iDst: i32,
    himlSrc: ?HIMAGELIST,
    iSrc: i32,
    uFlags: IMAGE_LIST_COPY_FLAGS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_BeginDrag(
    himlTrack: ?HIMAGELIST,
    iTrack: i32,
    dxHotspot: i32,
    dyHotspot: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_EndDrag() callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_DragEnter(
    hwndLock: ?HWND,
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_DragLeave(
    hwndLock: ?HWND,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_DragMove(
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_SetDragCursorImage(
    himlDrag: ?HIMAGELIST,
    iDrag: i32,
    dxHotspot: i32,
    dyHotspot: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_DragShowNolock(
    fShow: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_GetDragImage(
    ppt: ?*POINT,
    pptHotspot: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) ?HIMAGELIST;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Read(
    pstm: ?*IStream,
) callconv(@import("std").os.windows.WINAPI) ?HIMAGELIST;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Write(
    himl: ?HIMAGELIST,
    pstm: ?*IStream,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_ReadEx(
    dwFlags: u32,
    pstm: ?*IStream,
    riid: ?*const Guid,
    ppv: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_WriteEx(
    himl: ?HIMAGELIST,
    dwFlags: u32,
    pstm: ?*IStream,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_GetIconSize(
    himl: ?HIMAGELIST,
    cx: ?*i32,
    cy: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_SetIconSize(
    himl: ?HIMAGELIST,
    cx: i32,
    cy: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_GetImageInfo(
    himl: ?HIMAGELIST,
    i: i32,
    pImageInfo: ?*IMAGEINFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Merge(
    himl1: ?HIMAGELIST,
    i1: i32,
    himl2: ?HIMAGELIST,
    i2: i32,
    dx: i32,
    dy: i32,
) callconv(@import("std").os.windows.WINAPI) ?HIMAGELIST;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_Duplicate(
    himl: ?HIMAGELIST,
) callconv(@import("std").os.windows.WINAPI) ?HIMAGELIST;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn HIMAGELIST_QueryInterface(
    himl: ?HIMAGELIST,
    riid: ?*const Guid,
    ppv: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn CreateToolbarEx(
    hwnd: ?HWND,
    ws: u32,
    wID: u32,
    nBitmaps: i32,
    hBMInst: ?HINSTANCE,
    wBMID: usize,
    lpButtons: ?*TBBUTTON,
    iNumButtons: i32,
    dxButton: i32,
    dyButton: i32,
    dxBitmap: i32,
    dyBitmap: i32,
    uStructSize: u32,
) callconv(@import("std").os.windows.WINAPI) ?HWND;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn CreateMappedBitmap(
    hInstance: ?HINSTANCE,
    idBitmap: isize,
    wFlags: u32,
    lpColorMap: ?*COLORMAP,
    iNumMaps: i32,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DrawStatusTextA(
    hDC: ?HDC,
    lprc: ?*RECT,
    pszText: ?[*:0]const u8,
    uFlags: u32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DrawStatusTextW(
    hDC: ?HDC,
    lprc: ?*RECT,
    pszText: ?[*:0]const u16,
    uFlags: u32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn CreateStatusWindowA(
    style: i32,
    lpszText: ?[*:0]const u8,
    hwndParent: ?HWND,
    wID: u32,
) callconv(@import("std").os.windows.WINAPI) ?HWND;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn CreateStatusWindowW(
    style: i32,
    lpszText: ?[*:0]const u16,
    hwndParent: ?HWND,
    wID: u32,
) callconv(@import("std").os.windows.WINAPI) ?HWND;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn MenuHelp(
    uMsg: u32,
    wParam: WPARAM,
    lParam: LPARAM,
    hMainMenu: ?HMENU,
    hInst: ?HINSTANCE,
    hwndStatus: ?HWND,
    lpwIDs: ?*u32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ShowHideMenuCtl(
    hWnd: ?HWND,
    uFlags: usize,
    lpInfo: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn GetEffectiveClientRect(
    hWnd: ?HWND,
    lprc: ?*RECT,
    lpInfo: ?*const i32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn MakeDragList(
    hLB: ?HWND,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DrawInsert(
    handParent: ?HWND,
    hLB: ?HWND,
    nItem: i32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn LBItemFromPt(
    hLB: ?HWND,
    pt: POINT,
    bAutoScroll: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn CreateUpDownControl(
    dwStyle: u32,
    x: i32,
    y: i32,
    cx: i32,
    cy: i32,
    hParent: ?HWND,
    nID: i32,
    hInst: ?HINSTANCE,
    hBuddy: ?HWND,
    nUpper: i32,
    nLower: i32,
    nPos: i32,
) callconv(@import("std").os.windows.WINAPI) ?HWND;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn TaskDialogIndirect(
    pTaskConfig: ?*const TASKDIALOGCONFIG,
    pnButton: ?*i32,
    pnRadioButton: ?*i32,
    pfVerificationFlagChecked: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn TaskDialog(
    hwndOwner: ?HWND,
    hInstance: ?HINSTANCE,
    pszWindowTitle: ?[*:0]const u16,
    pszMainInstruction: ?[*:0]const u16,
    pszContent: ?[*:0]const u16,
    dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
    pszIcon: ?[*:0]const u16,
    pnButton: ?*i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn InitMUILanguage(
    uiLang: u16,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn GetMUILanguage() callconv(@import("std").os.windows.WINAPI) u16;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_Create(
    cbItem: i32,
    cItemGrow: i32,
) callconv(@import("std").os.windows.WINAPI) ?HDSA;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_Destroy(
    hdsa: ?HDSA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_DestroyCallback(
    hdsa: ?HDSA,
    pfnCB: ?PFNDAENUMCALLBACK,
    pData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_DeleteItem(
    hdsa: ?HDSA,
    i: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_DeleteAllItems(
    hdsa: ?HDSA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_EnumCallback(
    hdsa: ?HDSA,
    pfnCB: ?PFNDAENUMCALLBACK,
    pData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_InsertItem(
    hdsa: ?HDSA,
    i: i32,
    pitem: ?*const anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_GetItemPtr(
    hdsa: ?HDSA,
    i: i32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_GetItem(
    hdsa: ?HDSA,
    i: i32,
    pitem: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_SetItem(
    hdsa: ?HDSA,
    i: i32,
    pitem: ?*const anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_Clone(
    hdsa: ?HDSA,
) callconv(@import("std").os.windows.WINAPI) ?HDSA;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_GetSize(
    hdsa: ?HDSA,
) callconv(@import("std").os.windows.WINAPI) u64;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DSA_Sort(
    pdsa: ?HDSA,
    pfnCompare: ?PFNDACOMPARE,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_Create(
    cItemGrow: i32,
) callconv(@import("std").os.windows.WINAPI) ?HDPA;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_CreateEx(
    cpGrow: i32,
    hheap: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) ?HDPA;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_Clone(
    hdpa: ?HDPA,
    hdpaNew: ?HDPA,
) callconv(@import("std").os.windows.WINAPI) ?HDPA;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_Destroy(
    hdpa: ?HDPA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_DestroyCallback(
    hdpa: ?HDPA,
    pfnCB: ?PFNDAENUMCALLBACK,
    pData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_DeletePtr(
    hdpa: ?HDPA,
    i: i32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_DeleteAllPtrs(
    hdpa: ?HDPA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_EnumCallback(
    hdpa: ?HDPA,
    pfnCB: ?PFNDAENUMCALLBACK,
    pData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_Grow(
    pdpa: ?HDPA,
    cp: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_InsertPtr(
    hdpa: ?HDPA,
    i: i32,
    p: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_SetPtr(
    hdpa: ?HDPA,
    i: i32,
    p: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_GetPtr(
    hdpa: ?HDPA,
    i: isize,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_GetPtrIndex(
    hdpa: ?HDPA,
    p: ?*const anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_GetSize(
    hdpa: ?HDPA,
) callconv(@import("std").os.windows.WINAPI) u64;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_Sort(
    hdpa: ?HDPA,
    pfnCompare: ?PFNDACOMPARE,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_LoadStream(
    phdpa: ?*?HDPA,
    pfn: ?PFNDPASTREAM,
    pstream: ?*IStream,
    pvInstData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_SaveStream(
    hdpa: ?HDPA,
    pfn: ?PFNDPASTREAM,
    pstream: ?*IStream,
    pvInstData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_Merge(
    hdpaDest: ?HDPA,
    hdpaSrc: ?HDPA,
    dwFlags: u32,
    pfnCompare: ?PFNDACOMPARE,
    pfnMerge: ?PFNDPAMERGE,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DPA_Search(
    hdpa: ?HDPA,
    pFind: ?*anyopaque,
    iStart: i32,
    pfnCompare: ?PFNDACOMPARE,
    lParam: LPARAM,
    options: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn Str_SetPtrW(
    ppsz: ?*?PWSTR,
    psz: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_EnableScrollBar(
    param0: ?HWND,
    param1: i32,
    param2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_ShowScrollBar(
    param0: ?HWND,
    code: SCROLLBAR_CONSTANTS,
    param2: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_GetScrollRange(
    param0: ?HWND,
    code: SCROLLBAR_CONSTANTS,
    param2: ?*i32,
    param3: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_GetScrollInfo(
    param0: ?HWND,
    code: SCROLLBAR_CONSTANTS,
    param2: ?*SCROLLINFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_GetScrollPos(
    param0: ?HWND,
    code: SCROLLBAR_CONSTANTS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_GetScrollProp(
    param0: ?HWND,
    propIndex: WSB_PROP,
    param2: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_SetScrollPos(
    param0: ?HWND,
    code: SCROLLBAR_CONSTANTS,
    pos: i32,
    fRedraw: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_SetScrollInfo(
    param0: ?HWND,
    code: SCROLLBAR_CONSTANTS,
    psi: ?*SCROLLINFO,
    fRedraw: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_SetScrollRange(
    param0: ?HWND,
    code: SCROLLBAR_CONSTANTS,
    min: i32,
    max: i32,
    fRedraw: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn FlatSB_SetScrollProp(
    param0: ?HWND,
    index: WSB_PROP,
    newValue: isize,
    param3: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn InitializeFlatSB(
    param0: ?HWND,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn UninitializeFlatSB(
    param0: ?HWND,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn LoadIconMetric(
    hinst: ?HINSTANCE,
    pszName: ?[*:0]const u16,
    lims: _LI_METRIC,
    phico: ?*?HICON,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn LoadIconWithScaleDown(
    hinst: ?HINSTANCE,
    pszName: ?[*:0]const u16,
    cx: i32,
    cy: i32,
    phico: ?*?HICON,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn DrawShadowText(
    hdc: ?HDC,
    pszText: [*:0]const u16,
    cch: u32,
    prc: ?*RECT,
    dwFlags: u32,
    crText: u32,
    crShadow: u32,
    ixOffset: i32,
    iyOffset: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "comctl32" fn ImageList_CoCreateInstance(
    rclsid: ?*const Guid,
    punkOuter: ?*IUnknown,
    riid: ?*const Guid,
    ppv: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.1'
pub extern "uxtheme" fn BeginPanningFeedback(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.1'
pub extern "uxtheme" fn UpdatePanningFeedback(
    hwnd: ?HWND,
    lTotalOverpanOffsetX: i32,
    lTotalOverpanOffsetY: i32,
    fInInertia: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.1'
pub extern "uxtheme" fn EndPanningFeedback(
    hwnd: ?HWND,
    fAnimateBack: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows8.0'
pub extern "uxtheme" fn GetThemeAnimationProperty(
    hTheme: isize,
    iStoryboardId: i32,
    iTargetId: i32,
    eProperty: TA_PROPERTY,
    // TODO: what to do with BytesParamIndex 5?
    pvProperty: ?*anyopaque,
    cbSize: u32,
    pcbSizeOut: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows8.0'
pub extern "uxtheme" fn GetThemeAnimationTransform(
    hTheme: isize,
    iStoryboardId: i32,
    iTargetId: i32,
    dwTransformIndex: u32,
    // TODO: what to do with BytesParamIndex 5?
    pTransform: ?*TA_TRANSFORM,
    cbSize: u32,
    pcbSizeOut: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows8.0'
pub extern "uxtheme" fn GetThemeTimingFunction(
    hTheme: isize,
    iTimingFunctionId: i32,
    // TODO: what to do with BytesParamIndex 3?
    pTimingFunction: ?*TA_TIMINGFUNCTION,
    cbSize: u32,
    pcbSizeOut: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn OpenThemeData(
    hwnd: ?HWND,
    pszClassList: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn OpenThemeDataEx(
    hwnd: ?HWND,
    pszClassList: ?[*:0]const u16,
    dwFlags: OPEN_THEME_DATA_FLAGS,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn CloseThemeData(
    hTheme: isize,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeBackground(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pRect: ?*RECT,
    pClipRect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeBackgroundEx(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pRect: ?*RECT,
    pOptions: ?*const DTBGOPTS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeText(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pszText: [*:0]const u16,
    cchText: i32,
    dwTextFlags: u32,
    dwTextFlags2: u32,
    pRect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeBackgroundContentRect(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pBoundingRect: ?*RECT,
    pContentRect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeBackgroundExtent(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pContentRect: ?*RECT,
    pExtentRect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeBackgroundRegion(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pRect: ?*RECT,
    pRegion: ?*?HRGN,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemePartSize(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    prc: ?*RECT,
    eSize: THEMESIZE,
    psz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeTextExtent(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pszText: [*:0]const u16,
    cchCharCount: i32,
    dwTextFlags: u32,
    pBoundingRect: ?*RECT,
    pExtentRect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeTextMetrics(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    ptm: ?*TEXTMETRICW,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn HitTestThemeBackground(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    dwOptions: u32,
    pRect: ?*RECT,
    hrgn: ?HRGN,
    ptTest: POINT,
    pwHitTestCode: ?*u16,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeEdge(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pDestRect: ?*RECT,
    uEdge: u32,
    uFlags: u32,
    pContentRect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeIcon(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pRect: ?*RECT,
    himl: ?HIMAGELIST,
    iImageIndex: i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn IsThemePartDefined(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn IsThemeBackgroundPartiallyTransparent(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeColor(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pColor: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeMetric(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    iPropId: THEME_PROPERTY_SYMBOL_ID,
    piVal: ?*i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeString(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pszBuff: [*:0]u16,
    cchMaxBuffChars: i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeBool(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: THEME_PROPERTY_SYMBOL_ID,
    pfVal: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeInt(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    piVal: ?*i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeEnumValue(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    piVal: ?*i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemePosition(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pPoint: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeFont(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pFont: ?*LOGFONTW,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeRect(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pRect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeMargins(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    prc: ?*RECT,
    pMargins: ?*MARGINS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeIntList(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pIntList: ?*INTLIST,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemePropertyOrigin(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pOrigin: ?*PROPERTYORIGIN,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn SetWindowTheme(
    hwnd: ?HWND,
    pszSubAppName: ?[*:0]const u16,
    pszSubIdList: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeFilename(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    pszThemeFileName: [*:0]u16,
    cchMaxBuffChars: i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeSysColor(
    hTheme: isize,
    iColorId: i32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeSysColorBrush(
    hTheme: isize,
    iColorId: THEME_PROPERTY_SYMBOL_ID,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeSysBool(
    hTheme: isize,
    iBoolId: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeSysSize(
    hTheme: isize,
    iSizeId: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeSysFont(
    hTheme: isize,
    iFontId: THEME_PROPERTY_SYMBOL_ID,
    plf: ?*LOGFONTW,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeSysString(
    hTheme: isize,
    iStringId: THEME_PROPERTY_SYMBOL_ID,
    pszStringBuff: [*:0]u16,
    cchMaxStringChars: i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeSysInt(
    hTheme: isize,
    iIntId: i32,
    piValue: ?*i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn IsThemeActive() callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn IsAppThemed() callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetWindowTheme(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn EnableThemeDialogTexture(
    hwnd: ?HWND,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn IsThemeDialogTextureEnabled(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeAppProperties() callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn SetThemeAppProperties(
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetCurrentThemeName(
    pszThemeFileName: [*:0]u16,
    cchMaxNameChars: i32,
    pszColorBuff: ?[*:0]u16,
    cchMaxColorChars: i32,
    pszSizeBuff: ?[*:0]u16,
    cchMaxSizeChars: i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeDocumentationProperty(
    pszThemeName: ?[*:0]const u16,
    pszPropertyName: ?[*:0]const u16,
    pszValueBuff: [*:0]u16,
    cchMaxValChars: i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeParentBackground(
    hwnd: ?HWND,
    hdc: ?HDC,
    prc: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn EnableTheming(
    fEnable: BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeParentBackgroundEx(
    hwnd: ?HWND,
    hdc: ?HDC,
    dwFlags: DRAW_THEME_PARENT_BACKGROUND_FLAGS,
    prc: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn SetWindowThemeAttribute(
    hwnd: ?HWND,
    eAttribute: WINDOWTHEMEATTRIBUTETYPE,
    // TODO: what to do with BytesParamIndex 3?
    pvAttribute: ?*anyopaque,
    cbAttribute: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn DrawThemeTextEx(
    hTheme: isize,
    hdc: ?HDC,
    iPartId: i32,
    iStateId: i32,
    pszText: [*:0]const u16,
    cchText: i32,
    dwTextFlags: u32,
    pRect: ?*RECT,
    pOptions: ?*const DTTOPTS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeBitmap(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: THEME_PROPERTY_SYMBOL_ID,
    dwFlags: GET_THEME_BITMAP_FLAGS,
    phBitmap: ?*?HBITMAP,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeStream(
    hTheme: isize,
    iPartId: i32,
    iStateId: i32,
    iPropId: i32,
    ppvStream: ?*?*anyopaque,
    pcbStream: ?*u32,
    hInst: ?HINSTANCE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BufferedPaintInit() callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BufferedPaintUnInit() callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BeginBufferedPaint(
    hdcTarget: ?HDC,
    prcTarget: ?*const RECT,
    dwFormat: BP_BUFFERFORMAT,
    pPaintParams: ?*BP_PAINTPARAMS,
    phdc: ?*?HDC,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn EndBufferedPaint(
    hBufferedPaint: isize,
    fUpdateTarget: BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetBufferedPaintTargetRect(
    hBufferedPaint: isize,
    prc: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetBufferedPaintTargetDC(
    hBufferedPaint: isize,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetBufferedPaintDC(
    hBufferedPaint: isize,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetBufferedPaintBits(
    hBufferedPaint: isize,
    ppbBuffer: ?*?*RGBQUAD,
    pcxRow: ?*i32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BufferedPaintClear(
    hBufferedPaint: isize,
    prc: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BufferedPaintSetAlpha(
    hBufferedPaint: isize,
    prc: ?*const RECT,
    alpha: u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BufferedPaintStopAllAnimations(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BeginBufferedAnimation(
    hwnd: ?HWND,
    hdcTarget: ?HDC,
    prcTarget: ?*const RECT,
    dwFormat: BP_BUFFERFORMAT,
    pPaintParams: ?*BP_PAINTPARAMS,
    pAnimationParams: ?*BP_ANIMATIONPARAMS,
    phdcFrom: ?*?HDC,
    phdcTo: ?*?HDC,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn EndBufferedAnimation(
    hbpAnimation: isize,
    fUpdateTarget: BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn BufferedPaintRenderAnimation(
    hwnd: ?HWND,
    hdcTarget: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn IsCompositionActive() callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "uxtheme" fn GetThemeTransitionDuration(
    hTheme: isize,
    iPartId: i32,
    iStateIdFrom: i32,
    iStateIdTo: i32,
    iPropId: i32,
    pdwDuration: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn CheckDlgButton(
    hDlg: ?HWND,
    nIDButton: i32,
    uCheck: DLG_BUTTON_CHECK_STATE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn CheckRadioButton(
    hDlg: ?HWND,
    nIDFirstButton: i32,
    nIDLastButton: i32,
    nIDCheckButton: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn IsDlgButtonChecked(
    hDlg: ?HWND,
    nIDButton: i32,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "user32" fn IsCharLowerW(
    ch: u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows10.0.17763'
pub extern "user32" fn CreateSyntheticPointerDevice(
    pointerType: POINTER_INPUT_TYPE,
    maxCount: u32,
    mode: POINTER_FEEDBACK_MODE,
) callconv(@import("std").os.windows.WINAPI) ?HSYNTHETICPOINTERDEVICE;

// TODO: this type is limited to platform 'windows10.0.17763'
pub extern "user32" fn DestroySyntheticPointerDevice(
    device: ?HSYNTHETICPOINTERDEVICE,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows8.0'
pub extern "user32" fn RegisterTouchHitTestingWindow(
    hwnd: ?HWND,
    value: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows8.0'
pub extern "user32" fn EvaluateProximityToRect(
    controlBoundingBox: ?*const RECT,
    pHitTestingInput: ?*const TOUCH_HIT_TESTING_INPUT,
    pProximityEval: ?*TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows8.0'
pub extern "user32" fn EvaluateProximityToPolygon(
    numVertices: u32,
    controlPolygon: [*]const POINT,
    pHitTestingInput: ?*const TOUCH_HIT_TESTING_INPUT,
    pProximityEval: ?*TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows8.0'
pub extern "user32" fn PackTouchHitTestingProximityEvaluation(
    pHitTestingInput: ?*const TOUCH_HIT_TESTING_INPUT,
    pProximityEval: ?*const TOUCH_HIT_TESTING_PROXIMITY_EVALUATION,
) callconv(@import("std").os.windows.WINAPI) LRESULT;

// TODO: this type is limited to platform 'windows8.0'
pub extern "user32" fn GetWindowFeedbackSetting(
    hwnd: ?HWND,
    feedback: FEEDBACK_TYPE,
    dwFlags: u32,
    pSize: ?*u32,
    // TODO: what to do with BytesParamIndex 3?
    config: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows8.0'
pub extern "user32" fn SetWindowFeedbackSetting(
    hwnd: ?HWND,
    feedback: FEEDBACK_TYPE,
    dwFlags: u32,
    size: u32,
    // TODO: what to do with BytesParamIndex 3?
    configuration: ?*const anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn SetScrollPos(
    hWnd: ?HWND,
    nBar: SCROLLBAR_CONSTANTS,
    nPos: i32,
    bRedraw: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn SetScrollRange(
    hWnd: ?HWND,
    nBar: SCROLLBAR_CONSTANTS,
    nMinPos: i32,
    nMaxPos: i32,
    bRedraw: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn ShowScrollBar(
    hWnd: ?HWND,
    wBar: SCROLLBAR_CONSTANTS,
    bShow: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn EnableScrollBar(
    hWnd: ?HWND,
    wSBflags: SCROLLBAR_CONSTANTS,
    wArrows: ENABLE_SCROLL_BAR_ARROWS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirListA(
    hDlg: ?HWND,
    lpPathSpec: ?PSTR,
    nIDListBox: i32,
    nIDStaticPath: i32,
    uFileType: DLG_DIR_LIST_FILE_TYPE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirListW(
    hDlg: ?HWND,
    lpPathSpec: ?PWSTR,
    nIDListBox: i32,
    nIDStaticPath: i32,
    uFileType: DLG_DIR_LIST_FILE_TYPE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirSelectExA(
    hwndDlg: ?HWND,
    lpString: [*:0]u8,
    chCount: i32,
    idListBox: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirSelectExW(
    hwndDlg: ?HWND,
    lpString: [*:0]u16,
    chCount: i32,
    idListBox: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirListComboBoxA(
    hDlg: ?HWND,
    lpPathSpec: ?PSTR,
    nIDComboBox: i32,
    nIDStaticPath: i32,
    uFiletype: DLG_DIR_LIST_FILE_TYPE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirListComboBoxW(
    hDlg: ?HWND,
    lpPathSpec: ?PWSTR,
    nIDComboBox: i32,
    nIDStaticPath: i32,
    uFiletype: DLG_DIR_LIST_FILE_TYPE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirSelectComboBoxExA(
    hwndDlg: ?HWND,
    lpString: [*:0]u8,
    cchOut: i32,
    idComboBox: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DlgDirSelectComboBoxExW(
    hwndDlg: ?HWND,
    lpString: [*:0]u16,
    cchOut: i32,
    idComboBox: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn SetScrollInfo(
    hwnd: ?HWND,
    nBar: SCROLLBAR_CONSTANTS,
    lpsi: ?*SCROLLINFO,
    redraw: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn GetComboBoxInfo(
    hwndCombo: ?HWND,
    pcbi: ?*COMBOBOXINFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn GetListBoxInfo(
    hwnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "user32" fn RegisterPointerDeviceNotifications(
    window: ?HWND,
    notifyRange: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (55)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {
        pub const LPFNPSPCALLBACK = thismodule.LPFNPSPCALLBACKA;
        pub const PROPSHEETPAGE = thismodule.PROPSHEETPAGEA;
        pub const HD_TEXTFILTER = thismodule.HD_TEXTFILTERA;
        pub const HDITEM = thismodule.HDITEMA;
        pub const NMHEADER = thismodule.NMHEADERA;
        pub const NMHDDISPINFO = thismodule.NMHDDISPINFOA;
        pub const TBSAVEPARAMS = thismodule.TBSAVEPARAMSA;
        pub const TBBUTTONINFO = thismodule.TBBUTTONINFOA;
        pub const NMTBGETINFOTIP = thismodule.NMTBGETINFOTIPA;
        pub const NMTBDISPINFO = thismodule.NMTBDISPINFOA;
        pub const NMTOOLBAR = thismodule.NMTOOLBARA;
        pub const REBARBANDINFO = thismodule.REBARBANDINFOA;
        pub const TTTOOLINFO = thismodule.TTTOOLINFOA;
        pub const TTHITTESTINFO = thismodule.TTHITTESTINFOA;
        pub const NMTTDISPINFO = thismodule.NMTTDISPINFOA;
        pub const LVITEM = thismodule.LVITEMA;
        pub const LVFINDINFO = thismodule.LVFINDINFOA;
        pub const LVCOLUMN = thismodule.LVCOLUMNA;
        pub const LVBKIMAGE = thismodule.LVBKIMAGEA;
        pub const NMLVFINDITEM = thismodule.NMLVFINDITEMA;
        pub const NMLVDISPINFO = thismodule.NMLVDISPINFOA;
        pub const NMLVGETINFOTIP = thismodule.NMLVGETINFOTIPA;
        pub const TVITEM = thismodule.TVITEMA;
        pub const TVITEMEX = thismodule.TVITEMEXA;
        pub const TVINSERTSTRUCT = thismodule.TVINSERTSTRUCTA;
        pub const NMTREEVIEW = thismodule.NMTREEVIEWA;
        pub const NMTVDISPINFO = thismodule.NMTVDISPINFOA;
        pub const NMTVDISPINFOEX = thismodule.NMTVDISPINFOEXA;
        pub const NMTVGETINFOTIP = thismodule.NMTVGETINFOTIPA;
        pub const COMBOBOXEXITEM = thismodule.COMBOBOXEXITEMA;
        pub const NMCOMBOBOXEX = thismodule.NMCOMBOBOXEXA;
        pub const NMCBEDRAGBEGIN = thismodule.NMCBEDRAGBEGINA;
        pub const NMCBEENDEDIT = thismodule.NMCBEENDEDITA;
        pub const TCITEMHEADER = thismodule.TCITEMHEADERA;
        pub const TCITEM = thismodule.TCITEMA;
        pub const NMDATETIMESTRING = thismodule.NMDATETIMESTRINGA;
        pub const NMDATETIMEWMKEYDOWN = thismodule.NMDATETIMEWMKEYDOWNA;
        pub const NMDATETIMEFORMAT = thismodule.NMDATETIMEFORMATA;
        pub const NMDATETIMEFORMATQUERY = thismodule.NMDATETIMEFORMATQUERYA;
        pub const CCSTYLE = thismodule.CCSTYLEA;
        pub const LPFNCCSTYLE = thismodule.LPFNCCSTYLEA;
        pub const LPFNCCSIZETOTEXT = thismodule.LPFNCCSIZETOTEXTA;
        pub const CCSTYLEFLAG = thismodule.CCSTYLEFLAGA;
        pub const CCINFO = thismodule.CCINFOA;
        pub const LPFNCCINFO = thismodule.LPFNCCINFOA;
        pub const EDITWORDBREAKPROC = thismodule.EDITWORDBREAKPROCA;
        pub const CreatePropertySheetPage = thismodule.CreatePropertySheetPageA;
        pub const PropertySheet = thismodule.PropertySheetA;
        pub const ImageList_LoadImage = thismodule.ImageList_LoadImageA;
        pub const DrawStatusText = thismodule.DrawStatusTextA;
        pub const CreateStatusWindow = thismodule.CreateStatusWindowA;
        pub const DlgDirList = thismodule.DlgDirListA;
        pub const DlgDirSelectEx = thismodule.DlgDirSelectExA;
        pub const DlgDirListComboBox = thismodule.DlgDirListComboBoxA;
        pub const DlgDirSelectComboBoxEx = thismodule.DlgDirSelectComboBoxExA;
    },
    .wide => struct {
        pub const LPFNPSPCALLBACK = thismodule.LPFNPSPCALLBACKW;
        pub const PROPSHEETPAGE = thismodule.PROPSHEETPAGEW;
        pub const HD_TEXTFILTER = thismodule.HD_TEXTFILTERW;
        pub const HDITEM = thismodule.HDITEMW;
        pub const NMHEADER = thismodule.NMHEADERW;
        pub const NMHDDISPINFO = thismodule.NMHDDISPINFOW;
        pub const TBSAVEPARAMS = thismodule.TBSAVEPARAMSW;
        pub const TBBUTTONINFO = thismodule.TBBUTTONINFOW;
        pub const NMTBGETINFOTIP = thismodule.NMTBGETINFOTIPW;
        pub const NMTBDISPINFO = thismodule.NMTBDISPINFOW;
        pub const NMTOOLBAR = thismodule.NMTOOLBARW;
        pub const REBARBANDINFO = thismodule.REBARBANDINFOW;
        pub const TTTOOLINFO = thismodule.TTTOOLINFOW;
        pub const TTHITTESTINFO = thismodule.TTHITTESTINFOW;
        pub const NMTTDISPINFO = thismodule.NMTTDISPINFOW;
        pub const LVITEM = thismodule.LVITEMW;
        pub const LVFINDINFO = thismodule.LVFINDINFOW;
        pub const LVCOLUMN = thismodule.LVCOLUMNW;
        pub const LVBKIMAGE = thismodule.LVBKIMAGEW;
        pub const NMLVFINDITEM = thismodule.NMLVFINDITEMW;
        pub const NMLVDISPINFO = thismodule.NMLVDISPINFOW;
        pub const NMLVGETINFOTIP = thismodule.NMLVGETINFOTIPW;
        pub const TVITEM = thismodule.TVITEMW;
        pub const TVITEMEX = thismodule.TVITEMEXW;
        pub const TVINSERTSTRUCT = thismodule.TVINSERTSTRUCTW;
        pub const NMTREEVIEW = thismodule.NMTREEVIEWW;
        pub const NMTVDISPINFO = thismodule.NMTVDISPINFOW;
        pub const NMTVDISPINFOEX = thismodule.NMTVDISPINFOEXW;
        pub const NMTVGETINFOTIP = thismodule.NMTVGETINFOTIPW;
        pub const COMBOBOXEXITEM = thismodule.COMBOBOXEXITEMW;
        pub const NMCOMBOBOXEX = thismodule.NMCOMBOBOXEXW;
        pub const NMCBEDRAGBEGIN = thismodule.NMCBEDRAGBEGINW;
        pub const NMCBEENDEDIT = thismodule.NMCBEENDEDITW;
        pub const TCITEMHEADER = thismodule.TCITEMHEADERW;
        pub const TCITEM = thismodule.TCITEMW;
        pub const NMDATETIMESTRING = thismodule.NMDATETIMESTRINGW;
        pub const NMDATETIMEWMKEYDOWN = thismodule.NMDATETIMEWMKEYDOWNW;
        pub const NMDATETIMEFORMAT = thismodule.NMDATETIMEFORMATW;
        pub const NMDATETIMEFORMATQUERY = thismodule.NMDATETIMEFORMATQUERYW;
        pub const CCSTYLE = thismodule.CCSTYLEW;
        pub const LPFNCCSTYLE = thismodule.LPFNCCSTYLEW;
        pub const LPFNCCSIZETOTEXT = thismodule.LPFNCCSIZETOTEXTW;
        pub const CCSTYLEFLAG = thismodule.CCSTYLEFLAGW;
        pub const CCINFO = thismodule.CCINFOW;
        pub const LPFNCCINFO = thismodule.LPFNCCINFOW;
        pub const EDITWORDBREAKPROC = thismodule.EDITWORDBREAKPROCW;
        pub const CreatePropertySheetPage = thismodule.CreatePropertySheetPageW;
        pub const PropertySheet = thismodule.PropertySheetW;
        pub const ImageList_LoadImage = thismodule.ImageList_LoadImageW;
        pub const DrawStatusText = thismodule.DrawStatusTextW;
        pub const CreateStatusWindow = thismodule.CreateStatusWindowW;
        pub const DlgDirList = thismodule.DlgDirListW;
        pub const DlgDirSelectEx = thismodule.DlgDirSelectExW;
        pub const DlgDirListComboBox = thismodule.DlgDirListComboBoxW;
        pub const DlgDirSelectComboBoxEx = thismodule.DlgDirSelectComboBoxExW;
    },
    .unspecified => if (@import("builtin").is_test) struct {
        pub const LPFNPSPCALLBACK = *opaque {};
        pub const PROPSHEETPAGE = *opaque {};
        pub const HD_TEXTFILTER = *opaque {};
        pub const HDITEM = *opaque {};
        pub const NMHEADER = *opaque {};
        pub const NMHDDISPINFO = *opaque {};
        pub const TBSAVEPARAMS = *opaque {};
        pub const TBBUTTONINFO = *opaque {};
        pub const NMTBGETINFOTIP = *opaque {};
        pub const NMTBDISPINFO = *opaque {};
        pub const NMTOOLBAR = *opaque {};
        pub const REBARBANDINFO = *opaque {};
        pub const TTTOOLINFO = *opaque {};
        pub const TTHITTESTINFO = *opaque {};
        pub const NMTTDISPINFO = *opaque {};
        pub const LVITEM = *opaque {};
        pub const LVFINDINFO = *opaque {};
        pub const LVCOLUMN = *opaque {};
        pub const LVBKIMAGE = *opaque {};
        pub const NMLVFINDITEM = *opaque {};
        pub const NMLVDISPINFO = *opaque {};
        pub const NMLVGETINFOTIP = *opaque {};
        pub const TVITEM = *opaque {};
        pub const TVITEMEX = *opaque {};
        pub const TVINSERTSTRUCT = *opaque {};
        pub const NMTREEVIEW = *opaque {};
        pub const NMTVDISPINFO = *opaque {};
        pub const NMTVDISPINFOEX = *opaque {};
        pub const NMTVGETINFOTIP = *opaque {};
        pub const COMBOBOXEXITEM = *opaque {};
        pub const NMCOMBOBOXEX = *opaque {};
        pub const NMCBEDRAGBEGIN = *opaque {};
        pub const NMCBEENDEDIT = *opaque {};
        pub const TCITEMHEADER = *opaque {};
        pub const TCITEM = *opaque {};
        pub const NMDATETIMESTRING = *opaque {};
        pub const NMDATETIMEWMKEYDOWN = *opaque {};
        pub const NMDATETIMEFORMAT = *opaque {};
        pub const NMDATETIMEFORMATQUERY = *opaque {};
        pub const CCSTYLE = *opaque {};
        pub const LPFNCCSTYLE = *opaque {};
        pub const LPFNCCSIZETOTEXT = *opaque {};
        pub const CCSTYLEFLAG = *opaque {};
        pub const CCINFO = *opaque {};
        pub const LPFNCCINFO = *opaque {};
        pub const EDITWORDBREAKPROC = *opaque {};
        pub const CreatePropertySheetPage = *opaque {};
        pub const PropertySheet = *opaque {};
        pub const ImageList_LoadImage = *opaque {};
        pub const DrawStatusText = *opaque {};
        pub const CreateStatusWindow = *opaque {};
        pub const DlgDirList = *opaque {};
        pub const DlgDirSelectEx = *opaque {};
        pub const DlgDirListComboBox = *opaque {};
        pub const DlgDirSelectComboBoxEx = *opaque {};
    } else struct {
        pub const LPFNPSPCALLBACK = @compileError("'LPFNPSPCALLBACK' requires that UNICODE be set to true or false in the root module");
        pub const PROPSHEETPAGE = @compileError("'PROPSHEETPAGE' requires that UNICODE be set to true or false in the root module");
        pub const HD_TEXTFILTER = @compileError("'HD_TEXTFILTER' requires that UNICODE be set to true or false in the root module");
        pub const HDITEM = @compileError("'HDITEM' requires that UNICODE be set to true or false in the root module");
        pub const NMHEADER = @compileError("'NMHEADER' requires that UNICODE be set to true or false in the root module");
        pub const NMHDDISPINFO = @compileError("'NMHDDISPINFO' requires that UNICODE be set to true or false in the root module");
        pub const TBSAVEPARAMS = @compileError("'TBSAVEPARAMS' requires that UNICODE be set to true or false in the root module");
        pub const TBBUTTONINFO = @compileError("'TBBUTTONINFO' requires that UNICODE be set to true or false in the root module");
        pub const NMTBGETINFOTIP = @compileError("'NMTBGETINFOTIP' requires that UNICODE be set to true or false in the root module");
        pub const NMTBDISPINFO = @compileError("'NMTBDISPINFO' requires that UNICODE be set to true or false in the root module");
        pub const NMTOOLBAR = @compileError("'NMTOOLBAR' requires that UNICODE be set to true or false in the root module");
        pub const REBARBANDINFO = @compileError("'REBARBANDINFO' requires that UNICODE be set to true or false in the root module");
        pub const TTTOOLINFO = @compileError("'TTTOOLINFO' requires that UNICODE be set to true or false in the root module");
        pub const TTHITTESTINFO = @compileError("'TTHITTESTINFO' requires that UNICODE be set to true or false in the root module");
        pub const NMTTDISPINFO = @compileError("'NMTTDISPINFO' requires that UNICODE be set to true or false in the root module");
        pub const LVITEM = @compileError("'LVITEM' requires that UNICODE be set to true or false in the root module");
        pub const LVFINDINFO = @compileError("'LVFINDINFO' requires that UNICODE be set to true or false in the root module");
        pub const LVCOLUMN = @compileError("'LVCOLUMN' requires that UNICODE be set to true or false in the root module");
        pub const LVBKIMAGE = @compileError("'LVBKIMAGE' requires that UNICODE be set to true or false in the root module");
        pub const NMLVFINDITEM = @compileError("'NMLVFINDITEM' requires that UNICODE be set to true or false in the root module");
        pub const NMLVDISPINFO = @compileError("'NMLVDISPINFO' requires that UNICODE be set to true or false in the root module");
        pub const NMLVGETINFOTIP = @compileError("'NMLVGETINFOTIP' requires that UNICODE be set to true or false in the root module");
        pub const TVITEM = @compileError("'TVITEM' requires that UNICODE be set to true or false in the root module");
        pub const TVITEMEX = @compileError("'TVITEMEX' requires that UNICODE be set to true or false in the root module");
        pub const TVINSERTSTRUCT = @compileError("'TVINSERTSTRUCT' requires that UNICODE be set to true or false in the root module");
        pub const NMTREEVIEW = @compileError("'NMTREEVIEW' requires that UNICODE be set to true or false in the root module");
        pub const NMTVDISPINFO = @compileError("'NMTVDISPINFO' requires that UNICODE be set to true or false in the root module");
        pub const NMTVDISPINFOEX = @compileError("'NMTVDISPINFOEX' requires that UNICODE be set to true or false in the root module");
        pub const NMTVGETINFOTIP = @compileError("'NMTVGETINFOTIP' requires that UNICODE be set to true or false in the root module");
        pub const COMBOBOXEXITEM = @compileError("'COMBOBOXEXITEM' requires that UNICODE be set to true or false in the root module");
        pub const NMCOMBOBOXEX = @compileError("'NMCOMBOBOXEX' requires that UNICODE be set to true or false in the root module");
        pub const NMCBEDRAGBEGIN = @compileError("'NMCBEDRAGBEGIN' requires that UNICODE be set to true or false in the root module");
        pub const NMCBEENDEDIT = @compileError("'NMCBEENDEDIT' requires that UNICODE be set to true or false in the root module");
        pub const TCITEMHEADER = @compileError("'TCITEMHEADER' requires that UNICODE be set to true or false in the root module");
        pub const TCITEM = @compileError("'TCITEM' requires that UNICODE be set to true or false in the root module");
        pub const NMDATETIMESTRING = @compileError("'NMDATETIMESTRING' requires that UNICODE be set to true or false in the root module");
        pub const NMDATETIMEWMKEYDOWN = @compileError("'NMDATETIMEWMKEYDOWN' requires that UNICODE be set to true or false in the root module");
        pub const NMDATETIMEFORMAT = @compileError("'NMDATETIMEFORMAT' requires that UNICODE be set to true or false in the root module");
        pub const NMDATETIMEFORMATQUERY = @compileError("'NMDATETIMEFORMATQUERY' requires that UNICODE be set to true or false in the root module");
        pub const CCSTYLE = @compileError("'CCSTYLE' requires that UNICODE be set to true or false in the root module");
        pub const LPFNCCSTYLE = @compileError("'LPFNCCSTYLE' requires that UNICODE be set to true or false in the root module");
        pub const LPFNCCSIZETOTEXT = @compileError("'LPFNCCSIZETOTEXT' requires that UNICODE be set to true or false in the root module");
        pub const CCSTYLEFLAG = @compileError("'CCSTYLEFLAG' requires that UNICODE be set to true or false in the root module");
        pub const CCINFO = @compileError("'CCINFO' requires that UNICODE be set to true or false in the root module");
        pub const LPFNCCINFO = @compileError("'LPFNCCINFO' requires that UNICODE be set to true or false in the root module");
        pub const EDITWORDBREAKPROC = @compileError("'EDITWORDBREAKPROC' requires that UNICODE be set to true or false in the root module");
        pub const CreatePropertySheetPage = @compileError("'CreatePropertySheetPage' requires that UNICODE be set to true or false in the root module");
        pub const PropertySheet = @compileError("'PropertySheet' requires that UNICODE be set to true or false in the root module");
        pub const ImageList_LoadImage = @compileError("'ImageList_LoadImage' requires that UNICODE be set to true or false in the root module");
        pub const DrawStatusText = @compileError("'DrawStatusText' requires that UNICODE be set to true or false in the root module");
        pub const CreateStatusWindow = @compileError("'CreateStatusWindow' requires that UNICODE be set to true or false in the root module");
        pub const DlgDirList = @compileError("'DlgDirList' requires that UNICODE be set to true or false in the root module");
        pub const DlgDirSelectEx = @compileError("'DlgDirSelectEx' requires that UNICODE be set to true or false in the root module");
        pub const DlgDirListComboBox = @compileError("'DlgDirListComboBox' requires that UNICODE be set to true or false in the root module");
        pub const DlgDirSelectComboBoxEx = @compileError("'DlgDirSelectComboBoxEx' requires that UNICODE be set to true or false in the root module");
    },
};
//--------------------------------------------------------------------------------
// Section: Imports (42)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BLENDFUNCTION = @import("../graphics/gdi.zig").BLENDFUNCTION;
const BOOL = @import("../foundation.zig").BOOL;
const CHAR = @import("../foundation.zig").CHAR;
const DLGPROC = @import("../ui/windows_and_messaging.zig").DLGPROC;
const DLGTEMPLATE = @import("../ui/windows_and_messaging.zig").DLGTEMPLATE;
const HANDLE = @import("../foundation.zig").HANDLE;
const HBITMAP = @import("../graphics/gdi.zig").HBITMAP;
const HBRUSH = @import("../graphics/gdi.zig").HBRUSH;
const HDC = @import("../graphics/gdi.zig").HDC;
const HFONT = @import("../graphics/gdi.zig").HFONT;
const HICON = @import("../ui/windows_and_messaging.zig").HICON;
const HINSTANCE = @import("../foundation.zig").HINSTANCE;
const HKEY = @import("../system/registry.zig").HKEY;
const HMENU = @import("../ui/windows_and_messaging.zig").HMENU;
const HMONITOR = @import("../graphics/gdi.zig").HMONITOR;
const HPALETTE = @import("../graphics/gdi.zig").HPALETTE;
const HPEN = @import("../graphics/gdi.zig").HPEN;
const HRESULT = @import("../foundation.zig").HRESULT;
const HRGN = @import("../graphics/gdi.zig").HRGN;
const HWND = @import("../foundation.zig").HWND;
const IMAGE_FLAGS = @import("../ui/windows_and_messaging.zig").IMAGE_FLAGS;
const IStream = @import("../system/com.zig").IStream;
const IUnknown = @import("../system/com.zig").IUnknown;
const LOGFONTW = @import("../graphics/gdi.zig").LOGFONTW;
const LPARAM = @import("../foundation.zig").LPARAM;
const LRESULT = @import("../foundation.zig").LRESULT;
const POINT = @import("../foundation.zig").POINT;
const POINTER_INPUT_TYPE = @import("../ui/windows_and_messaging.zig").POINTER_INPUT_TYPE;
const POINTER_PEN_INFO = @import("../ui/input/pointer.zig").POINTER_PEN_INFO;
const POINTER_TOUCH_INFO = @import("../ui/input/pointer.zig").POINTER_TOUCH_INFO;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
const RECT = @import("../foundation.zig").RECT;
const RGBQUAD = @import("../graphics/gdi.zig").RGBQUAD;
const SCROLLBAR_CONSTANTS = @import("../ui/windows_and_messaging.zig").SCROLLBAR_CONSTANTS;
const SCROLLINFO = @import("../ui/windows_and_messaging.zig").SCROLLINFO;
const SIZE = @import("../foundation.zig").SIZE;
const SYSTEMTIME = @import("../foundation.zig").SYSTEMTIME;
const TEXTMETRICW = @import("../graphics/gdi.zig").TEXTMETRICW;
const WINDOWPOS = @import("../ui/windows_and_messaging.zig").WINDOWPOS;
const WPARAM = @import("../foundation.zig").WPARAM;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "LPFNPSPCALLBACKA")) {
        _ = LPFNPSPCALLBACKA;
    }
    if (@hasDecl(@This(), "LPFNPSPCALLBACKW")) {
        _ = LPFNPSPCALLBACKW;
    }
    if (@hasDecl(@This(), "PFNPROPSHEETCALLBACK")) {
        _ = PFNPROPSHEETCALLBACK;
    }
    if (@hasDecl(@This(), "LPFNSVADDPROPSHEETPAGE")) {
        _ = LPFNSVADDPROPSHEETPAGE;
    }
    if (@hasDecl(@This(), "LPFNADDPROPSHEETPAGES")) {
        _ = LPFNADDPROPSHEETPAGES;
    }
    if (@hasDecl(@This(), "PFNLVCOMPARE")) {
        _ = PFNLVCOMPARE;
    }
    if (@hasDecl(@This(), "PFNLVGROUPCOMPARE")) {
        _ = PFNLVGROUPCOMPARE;
    }
    if (@hasDecl(@This(), "PFNTVCOMPARE")) {
        _ = PFNTVCOMPARE;
    }
    if (@hasDecl(@This(), "PFTASKDIALOGCALLBACK")) {
        _ = PFTASKDIALOGCALLBACK;
    }
    if (@hasDecl(@This(), "PFNDAENUMCALLBACK")) {
        _ = PFNDAENUMCALLBACK;
    }
    if (@hasDecl(@This(), "PFNDAENUMCALLBACKCONST")) {
        _ = PFNDAENUMCALLBACKCONST;
    }
    if (@hasDecl(@This(), "PFNDACOMPARE")) {
        _ = PFNDACOMPARE;
    }
    if (@hasDecl(@This(), "PFNDACOMPARECONST")) {
        _ = PFNDACOMPARECONST;
    }
    if (@hasDecl(@This(), "PFNDPASTREAM")) {
        _ = PFNDPASTREAM;
    }
    if (@hasDecl(@This(), "PFNDPAMERGE")) {
        _ = PFNDPAMERGE;
    }
    if (@hasDecl(@This(), "PFNDPAMERGECONST")) {
        _ = PFNDPAMERGECONST;
    }
    if (@hasDecl(@This(), "DTT_CALLBACK_PROC")) {
        _ = DTT_CALLBACK_PROC;
    }
    if (@hasDecl(@This(), "LPFNCCSTYLEA")) {
        _ = LPFNCCSTYLEA;
    }
    if (@hasDecl(@This(), "LPFNCCSTYLEW")) {
        _ = LPFNCCSTYLEW;
    }
    if (@hasDecl(@This(), "LPFNCCSIZETOTEXTA")) {
        _ = LPFNCCSIZETOTEXTA;
    }
    if (@hasDecl(@This(), "LPFNCCSIZETOTEXTW")) {
        _ = LPFNCCSIZETOTEXTW;
    }
    if (@hasDecl(@This(), "LPFNCCINFOA")) {
        _ = LPFNCCINFOA;
    }
    if (@hasDecl(@This(), "LPFNCCINFOW")) {
        _ = LPFNCCINFOW;
    }
    if (@hasDecl(@This(), "EDITWORDBREAKPROCA")) {
        _ = EDITWORDBREAKPROCA;
    }
    if (@hasDecl(@This(), "EDITWORDBREAKPROCW")) {
        _ = EDITWORDBREAKPROCW;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
//--------------------------------------------------------------------------------
// Section: SubModules (2)
//--------------------------------------------------------------------------------
pub const dialogs = @import("controls/dialogs.zig");
pub const rich_edit = @import("controls/rich_edit.zig");
