zig/lib/std / os/windows/user32.zig

const std = @import("../../std.zig");
const builtin = @import("builtin");
const assert = std.debug.assert;

WNDPROC


const windows = std.os.windows;
const GetLastError = windows.kernel32.GetLastError;
const SetLastError = windows.kernel32.SetLastError;
const unexpectedError = windows.unexpectedError;
const HWND = windows.HWND;
const UINT = windows.UINT;
const HDC = windows.HDC;
const LONG = windows.LONG;
const LONG_PTR = windows.LONG_PTR;
const WINAPI = windows.WINAPI;
const RECT = windows.RECT;
const DWORD = windows.DWORD;
const BOOL = windows.BOOL;
const TRUE = windows.TRUE;
const HMENU = windows.HMENU;
const HINSTANCE = windows.HINSTANCE;
const LPVOID = windows.LPVOID;
const ATOM = windows.ATOM;
const WPARAM = windows.WPARAM;
const LRESULT = windows.LRESULT;
const HICON = windows.HICON;
const LPARAM = windows.LPARAM;
const POINT = windows.POINT;
const HCURSOR = windows.HCURSOR;
const HBRUSH = windows.HBRUSH;

MSG


inline fn selectSymbol(comptime function_static: anytype, function_dynamic: *const @TypeOf(function_static), comptime os: std.Target.Os.WindowsVersion) *const @TypeOf(function_static) {
    const sym_ok = comptime builtin.os.isAtLeast(.windows, os);
    if (sym_ok == true) return function_static;
    if (sym_ok == null) return function_dynamic;
    if (sym_ok == false) @compileError("Target OS range does not support function, at least " ++ @tagName(os) ++ " is required");
}

WM_NULL


// === Messages ===

WM_CREATE


pub const WNDPROC = *const fn (hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM) callconv(WINAPI) LRESULT;

WM_DESTROY


pub const MSG = extern struct {
    hWnd: ?HWND,
    message: UINT,
    wParam: WPARAM,
    lParam: LPARAM,
    time: DWORD,
    pt: POINT,
    lPrivate: DWORD,
};

WM_MOVE


// Compiled by the WINE team @ https://wiki.winehq.org/List_Of_Windows_Messages
pub const WM_NULL = 0x0000;
pub const WM_CREATE = 0x0001;
pub const WM_DESTROY = 0x0002;
pub const WM_MOVE = 0x0003;

WM_SIZE

pub const WM_SIZE = 0x0005;

WM_ACTIVATE

pub const WM_ACTIVATE = 0x0006;

WM_SETFOCUS

pub const WM_SETFOCUS = 0x0007;

WM_KILLFOCUS

pub const WM_KILLFOCUS = 0x0008;

WM_ENABLE

pub const WM_ENABLE = 0x000A;

WM_SETREDRAW

pub const WM_SETREDRAW = 0x000B;

WM_SETTEXT

pub const WM_SETTEXT = 0x000C;

WM_GETTEXT

pub const WM_GETTEXT = 0x000D;

WM_GETTEXTLENGTH

pub const WM_GETTEXTLENGTH = 0x000E;

WM_PAINT

pub const WM_PAINT = 0x000F;

WM_CLOSE

pub const WM_CLOSE = 0x0010;

WM_QUERYENDSESSION

pub const WM_QUERYENDSESSION = 0x0011;

WM_QUIT

pub const WM_QUIT = 0x0012;

WM_QUERYOPEN

pub const WM_QUERYOPEN = 0x0013;

WM_ERASEBKGND

pub const WM_ERASEBKGND = 0x0014;

WM_SYSCOLORCHANGE

pub const WM_SYSCOLORCHANGE = 0x0015;

WM_ENDSESSION

pub const WM_ENDSESSION = 0x0016;

WM_SHOWWINDOW

pub const WM_SHOWWINDOW = 0x0018;

WM_CTLCOLOR

pub const WM_CTLCOLOR = 0x0019;

WM_WININICHANGE

pub const WM_WININICHANGE = 0x001A;

WM_DEVMODECHANGE

pub const WM_DEVMODECHANGE = 0x001B;

WM_ACTIVATEAPP

pub const WM_ACTIVATEAPP = 0x001C;

WM_FONTCHANGE

pub const WM_FONTCHANGE = 0x001D;

WM_TIMECHANGE

pub const WM_TIMECHANGE = 0x001E;

WM_CANCELMODE

pub const WM_CANCELMODE = 0x001F;

WM_SETCURSOR

pub const WM_SETCURSOR = 0x0020;

WM_MOUSEACTIVATE

pub const WM_MOUSEACTIVATE = 0x0021;

WM_CHILDACTIVATE

pub const WM_CHILDACTIVATE = 0x0022;

WM_QUEUESYNC

pub const WM_QUEUESYNC = 0x0023;

WM_GETMINMAXINFO

pub const WM_GETMINMAXINFO = 0x0024;

WM_PAINTICON

pub const WM_PAINTICON = 0x0026;

WM_ICONERASEBKGND

pub const WM_ICONERASEBKGND = 0x0027;

WM_NEXTDLGCTL

pub const WM_NEXTDLGCTL = 0x0028;

WM_SPOOLERSTATUS

pub const WM_SPOOLERSTATUS = 0x002A;

WM_DRAWITEM

pub const WM_DRAWITEM = 0x002B;

WM_MEASUREITEM

pub const WM_MEASUREITEM = 0x002C;

WM_DELETEITEM

pub const WM_DELETEITEM = 0x002D;

WM_VKEYTOITEM

pub const WM_VKEYTOITEM = 0x002E;

WM_CHARTOITEM

pub const WM_CHARTOITEM = 0x002F;

WM_SETFONT

pub const WM_SETFONT = 0x0030;

WM_GETFONT

pub const WM_GETFONT = 0x0031;

WM_SETHOTKEY

pub const WM_SETHOTKEY = 0x0032;

WM_GETHOTKEY

pub const WM_GETHOTKEY = 0x0033;

WM_QUERYDRAGICON

pub const WM_QUERYDRAGICON = 0x0037;

WM_COMPAREITEM

pub const WM_COMPAREITEM = 0x0039;

WM_GETOBJECT

pub const WM_GETOBJECT = 0x003D;

WM_COMPACTING

pub const WM_COMPACTING = 0x0041;

WM_COMMNOTIFY

pub const WM_COMMNOTIFY = 0x0044;

WM_WINDOWPOSCHANGING

pub const WM_WINDOWPOSCHANGING = 0x0046;

WM_WINDOWPOSCHANGED

pub const WM_WINDOWPOSCHANGED = 0x0047;

WM_POWER

pub const WM_POWER = 0x0048;

WM_COPYGLOBALDATA

pub const WM_COPYGLOBALDATA = 0x0049;

WM_COPYDATA

pub const WM_COPYDATA = 0x004A;

WM_CANCELJOURNAL

pub const WM_CANCELJOURNAL = 0x004B;

WM_NOTIFY

pub const WM_NOTIFY = 0x004E;

WM_INPUTLANGCHANGEREQUEST

pub const WM_INPUTLANGCHANGEREQUEST = 0x0050;

WM_INPUTLANGCHANGE

pub const WM_INPUTLANGCHANGE = 0x0051;

WM_TCARD

pub const WM_TCARD = 0x0052;

WM_HELP

pub const WM_HELP = 0x0053;

WM_USERCHANGED

pub const WM_USERCHANGED = 0x0054;

WM_NOTIFYFORMAT

pub const WM_NOTIFYFORMAT = 0x0055;

WM_CONTEXTMENU

pub const WM_CONTEXTMENU = 0x007B;

WM_STYLECHANGING

pub const WM_STYLECHANGING = 0x007C;

WM_STYLECHANGED

pub const WM_STYLECHANGED = 0x007D;

WM_DISPLAYCHANGE

pub const WM_DISPLAYCHANGE = 0x007E;

WM_GETICON

pub const WM_GETICON = 0x007F;

WM_SETICON

pub const WM_SETICON = 0x0080;

WM_NCCREATE

pub const WM_NCCREATE = 0x0081;

WM_NCDESTROY

pub const WM_NCDESTROY = 0x0082;

WM_NCCALCSIZE

pub const WM_NCCALCSIZE = 0x0083;

WM_NCHITTEST

pub const WM_NCHITTEST = 0x0084;

WM_NCPAINT

pub const WM_NCPAINT = 0x0085;

WM_NCACTIVATE

pub const WM_NCACTIVATE = 0x0086;

WM_GETDLGCODE

pub const WM_GETDLGCODE = 0x0087;

WM_SYNCPAINT

pub const WM_SYNCPAINT = 0x0088;

WM_NCMOUSEMOVE

pub const WM_NCMOUSEMOVE = 0x00A0;

WM_NCLBUTTONDOWN

pub const WM_NCLBUTTONDOWN = 0x00A1;

WM_NCLBUTTONUP

pub const WM_NCLBUTTONUP = 0x00A2;

WM_NCLBUTTONDBLCLK

pub const WM_NCLBUTTONDBLCLK = 0x00A3;

WM_NCRBUTTONDOWN

pub const WM_NCRBUTTONDOWN = 0x00A4;

WM_NCRBUTTONUP

pub const WM_NCRBUTTONUP = 0x00A5;

WM_NCRBUTTONDBLCLK

pub const WM_NCRBUTTONDBLCLK = 0x00A6;

WM_NCMBUTTONDOWN

pub const WM_NCMBUTTONDOWN = 0x00A7;

WM_NCMBUTTONUP

pub const WM_NCMBUTTONUP = 0x00A8;

WM_NCMBUTTONDBLCLK

pub const WM_NCMBUTTONDBLCLK = 0x00A9;

WM_NCXBUTTONDOWN

pub const WM_NCXBUTTONDOWN = 0x00AB;

WM_NCXBUTTONUP

pub const WM_NCXBUTTONUP = 0x00AC;

WM_NCXBUTTONDBLCLK

pub const WM_NCXBUTTONDBLCLK = 0x00AD;

EM_GETSEL

pub const EM_GETSEL = 0x00B0;

EM_SETSEL

pub const EM_SETSEL = 0x00B1;

EM_GETRECT

pub const EM_GETRECT = 0x00B2;

EM_SETRECT

pub const EM_SETRECT = 0x00B3;

EM_SETRECTNP

pub const EM_SETRECTNP = 0x00B4;

EM_SCROLL

pub const EM_SCROLL = 0x00B5;

EM_LINESCROLL

pub const EM_LINESCROLL = 0x00B6;

EM_SCROLLCARET

pub const EM_SCROLLCARET = 0x00B7;

EM_GETMODIFY

pub const EM_GETMODIFY = 0x00B8;

EM_SETMODIFY

pub const EM_SETMODIFY = 0x00B9;

EM_GETLINECOUNT

pub const EM_GETLINECOUNT = 0x00BA;

EM_LINEINDEX

pub const EM_LINEINDEX = 0x00BB;

EM_SETHANDLE

pub const EM_SETHANDLE = 0x00BC;

EM_GETHANDLE

pub const EM_GETHANDLE = 0x00BD;

EM_GETTHUMB

pub const EM_GETTHUMB = 0x00BE;

EM_LINELENGTH

pub const EM_LINELENGTH = 0x00C1;

EM_REPLACESEL

pub const EM_REPLACESEL = 0x00C2;

EM_SETFONT

pub const EM_SETFONT = 0x00C3;

EM_GETLINE

pub const EM_GETLINE = 0x00C4;

EM_LIMITTEXT

pub const EM_LIMITTEXT = 0x00C5;

EM_SETLIMITTEXT

pub const EM_SETLIMITTEXT = 0x00C5;

EM_CANUNDO

pub const EM_CANUNDO = 0x00C6;

EM_UNDO

pub const EM_UNDO = 0x00C7;

EM_FMTLINES

pub const EM_FMTLINES = 0x00C8;

EM_LINEFROMCHAR

pub const EM_LINEFROMCHAR = 0x00C9;

EM_SETWORDBREAK

pub const EM_SETWORDBREAK = 0x00CA;

EM_SETTABSTOPS

pub const EM_SETTABSTOPS = 0x00CB;

EM_SETPASSWORDCHAR

pub const EM_SETPASSWORDCHAR = 0x00CC;

EM_EMPTYUNDOBUFFER

pub const EM_EMPTYUNDOBUFFER = 0x00CD;

EM_GETFIRSTVISIBLELINE

pub const EM_GETFIRSTVISIBLELINE = 0x00CE;

EM_SETREADONLY

pub const EM_SETREADONLY = 0x00CF;

EM_SETWORDBREAKPROC

pub const EM_SETWORDBREAKPROC = 0x00D0;

EM_GETWORDBREAKPROC

pub const EM_GETWORDBREAKPROC = 0x00D1;

EM_GETPASSWORDCHAR

pub const EM_GETPASSWORDCHAR = 0x00D2;

EM_SETMARGINS

pub const EM_SETMARGINS = 0x00D3;

EM_GETMARGINS

pub const EM_GETMARGINS = 0x00D4;

EM_GETLIMITTEXT

pub const EM_GETLIMITTEXT = 0x00D5;

EM_POSFROMCHAR

pub const EM_POSFROMCHAR = 0x00D6;

EM_CHARFROMPOS

pub const EM_CHARFROMPOS = 0x00D7;

EM_SETIMESTATUS

pub const EM_SETIMESTATUS = 0x00D8;

EM_GETIMESTATUS

pub const EM_GETIMESTATUS = 0x00D9;

SBM_SETPOS

pub const SBM_SETPOS = 0x00E0;

SBM_GETPOS

pub const SBM_GETPOS = 0x00E1;

SBM_SETRANGE

pub const SBM_SETRANGE = 0x00E2;

SBM_GETRANGE

pub const SBM_GETRANGE = 0x00E3;

SBM_ENABLE_ARROWS

pub const SBM_ENABLE_ARROWS = 0x00E4;

SBM_SETRANGEREDRAW

pub const SBM_SETRANGEREDRAW = 0x00E6;

SBM_SETSCROLLINFO

pub const SBM_SETSCROLLINFO = 0x00E9;

SBM_GETSCROLLINFO

pub const SBM_GETSCROLLINFO = 0x00EA;

SBM_GETSCROLLBARINFO

pub const SBM_GETSCROLLBARINFO = 0x00EB;

BM_GETCHECK

pub const BM_GETCHECK = 0x00F0;

BM_SETCHECK

pub const BM_SETCHECK = 0x00F1;

BM_GETSTATE

pub const BM_GETSTATE = 0x00F2;

BM_SETSTATE

pub const BM_SETSTATE = 0x00F3;

BM_SETSTYLE

pub const BM_SETSTYLE = 0x00F4;

BM_CLICK

pub const BM_CLICK = 0x00F5;

BM_GETIMAGE

pub const BM_GETIMAGE = 0x00F6;

BM_SETIMAGE

pub const BM_SETIMAGE = 0x00F7;

BM_SETDONTCLICK

pub const BM_SETDONTCLICK = 0x00F8;

WM_INPUT

pub const WM_INPUT = 0x00FF;

WM_KEYDOWN

pub const WM_KEYDOWN = 0x0100;

WM_KEYUP

pub const WM_KEYUP = 0x0101;

WM_CHAR

pub const WM_CHAR = 0x0102;

WM_DEADCHAR

pub const WM_DEADCHAR = 0x0103;

WM_SYSKEYDOWN

pub const WM_SYSKEYDOWN = 0x0104;

WM_SYSKEYUP

pub const WM_SYSKEYUP = 0x0105;

WM_SYSCHAR

pub const WM_SYSCHAR = 0x0106;

WM_SYSDEADCHAR

pub const WM_SYSDEADCHAR = 0x0107;

WM_UNICHAR

pub const WM_UNICHAR = 0x0109;

WM_WNT_CONVERTREQUESTEX

pub const WM_WNT_CONVERTREQUESTEX = 0x0109;

WM_CONVERTREQUEST

pub const WM_CONVERTREQUEST = 0x010A;

WM_CONVERTRESULT

pub const WM_CONVERTRESULT = 0x010B;

WM_INTERIM

pub const WM_INTERIM = 0x010C;

WM_IME_STARTCOMPOSITION

pub const WM_IME_STARTCOMPOSITION = 0x010D;

WM_IME_ENDCOMPOSITION

pub const WM_IME_ENDCOMPOSITION = 0x010E;

WM_IME_COMPOSITION

pub const WM_IME_COMPOSITION = 0x010F;

WM_INITDIALOG

pub const WM_INITDIALOG = 0x0110;

WM_COMMAND

pub const WM_COMMAND = 0x0111;

WM_SYSCOMMAND

pub const WM_SYSCOMMAND = 0x0112;

WM_TIMER

pub const WM_TIMER = 0x0113;

WM_HSCROLL

pub const WM_HSCROLL = 0x0114;

WM_VSCROLL

pub const WM_VSCROLL = 0x0115;

WM_INITMENU

pub const WM_INITMENU = 0x0116;

WM_INITMENUPOPUP

pub const WM_INITMENUPOPUP = 0x0117;

WM_SYSTIMER

pub const WM_SYSTIMER = 0x0118;

WM_MENUSELECT

pub const WM_MENUSELECT = 0x011F;

WM_MENUCHAR

pub const WM_MENUCHAR = 0x0120;

WM_ENTERIDLE

pub const WM_ENTERIDLE = 0x0121;

WM_MENURBUTTONUP

pub const WM_MENURBUTTONUP = 0x0122;

WM_MENUDRAG

pub const WM_MENUDRAG = 0x0123;

WM_MENUGETOBJECT

pub const WM_MENUGETOBJECT = 0x0124;

WM_UNINITMENUPOPUP

pub const WM_UNINITMENUPOPUP = 0x0125;

WM_MENUCOMMAND

pub const WM_MENUCOMMAND = 0x0126;

WM_CHANGEUISTATE

pub const WM_CHANGEUISTATE = 0x0127;

WM_UPDATEUISTATE

pub const WM_UPDATEUISTATE = 0x0128;

WM_QUERYUISTATE

pub const WM_QUERYUISTATE = 0x0129;

WM_CTLCOLORMSGBOX

pub const WM_CTLCOLORMSGBOX = 0x0132;

WM_CTLCOLOREDIT

pub const WM_CTLCOLOREDIT = 0x0133;

WM_CTLCOLORLISTBOX

pub const WM_CTLCOLORLISTBOX = 0x0134;

WM_CTLCOLORBTN

pub const WM_CTLCOLORBTN = 0x0135;

WM_CTLCOLORDLG

pub const WM_CTLCOLORDLG = 0x0136;

WM_CTLCOLORSCROLLBAR

pub const WM_CTLCOLORSCROLLBAR = 0x0137;

WM_CTLCOLORSTATIC

pub const WM_CTLCOLORSTATIC = 0x0138;

WM_MOUSEMOVE

pub const WM_MOUSEMOVE = 0x0200;

WM_LBUTTONDOWN

pub const WM_LBUTTONDOWN = 0x0201;

WM_LBUTTONUP

pub const WM_LBUTTONUP = 0x0202;

WM_LBUTTONDBLCLK

pub const WM_LBUTTONDBLCLK = 0x0203;

WM_RBUTTONDOWN

pub const WM_RBUTTONDOWN = 0x0204;

WM_RBUTTONUP

pub const WM_RBUTTONUP = 0x0205;

WM_RBUTTONDBLCLK

pub const WM_RBUTTONDBLCLK = 0x0206;

WM_MBUTTONDOWN

pub const WM_MBUTTONDOWN = 0x0207;

WM_MBUTTONUP

pub const WM_MBUTTONUP = 0x0208;

WM_MBUTTONDBLCLK

pub const WM_MBUTTONDBLCLK = 0x0209;

WM_MOUSEWHEEL

pub const WM_MOUSEWHEEL = 0x020A;

WM_XBUTTONDOWN

pub const WM_XBUTTONDOWN = 0x020B;

WM_XBUTTONUP

pub const WM_XBUTTONUP = 0x020C;

WM_XBUTTONDBLCLK

pub const WM_XBUTTONDBLCLK = 0x020D;

WM_MOUSEHWHEEL

pub const WM_MOUSEHWHEEL = 0x020E;

WM_PARENTNOTIFY

pub const WM_PARENTNOTIFY = 0x0210;

WM_ENTERMENULOOP

pub const WM_ENTERMENULOOP = 0x0211;

WM_EXITMENULOOP

pub const WM_EXITMENULOOP = 0x0212;

WM_NEXTMENU

pub const WM_NEXTMENU = 0x0213;

WM_SIZING

pub const WM_SIZING = 0x0214;

WM_CAPTURECHANGED

pub const WM_CAPTURECHANGED = 0x0215;

WM_MOVING

pub const WM_MOVING = 0x0216;

WM_POWERBROADCAST

pub const WM_POWERBROADCAST = 0x0218;

WM_DEVICECHANGE

pub const WM_DEVICECHANGE = 0x0219;

WM_MDICREATE

pub const WM_MDICREATE = 0x0220;

WM_MDIDESTROY

pub const WM_MDIDESTROY = 0x0221;

WM_MDIACTIVATE

pub const WM_MDIACTIVATE = 0x0222;

WM_MDIRESTORE

pub const WM_MDIRESTORE = 0x0223;

WM_MDINEXT

pub const WM_MDINEXT = 0x0224;

WM_MDIMAXIMIZE

pub const WM_MDIMAXIMIZE = 0x0225;

WM_MDITILE

pub const WM_MDITILE = 0x0226;

WM_MDICASCADE

pub const WM_MDICASCADE = 0x0227;

WM_MDIICONARRANGE

pub const WM_MDIICONARRANGE = 0x0228;

WM_MDIGETACTIVE

pub const WM_MDIGETACTIVE = 0x0229;

WM_MDISETMENU

pub const WM_MDISETMENU = 0x0230;

WM_ENTERSIZEMOVE

pub const WM_ENTERSIZEMOVE = 0x0231;

WM_EXITSIZEMOVE

pub const WM_EXITSIZEMOVE = 0x0232;

WM_DROPFILES

pub const WM_DROPFILES = 0x0233;

WM_MDIREFRESHMENU

pub const WM_MDIREFRESHMENU = 0x0234;

WM_IME_REPORT

pub const WM_IME_REPORT = 0x0280;

WM_IME_SETCONTEXT

pub const WM_IME_SETCONTEXT = 0x0281;

WM_IME_NOTIFY

pub const WM_IME_NOTIFY = 0x0282;

WM_IME_CONTROL

pub const WM_IME_CONTROL = 0x0283;

WM_IME_COMPOSITIONFULL

pub const WM_IME_COMPOSITIONFULL = 0x0284;

WM_IME_SELECT

pub const WM_IME_SELECT = 0x0285;

WM_IME_CHAR

pub const WM_IME_CHAR = 0x0286;

WM_IME_REQUEST

pub const WM_IME_REQUEST = 0x0288;

WM_IMEKEYDOWN

pub const WM_IMEKEYDOWN = 0x0290;

WM_IME_KEYDOWN

pub const WM_IME_KEYDOWN = 0x0290;

WM_IMEKEYUP

pub const WM_IMEKEYUP = 0x0291;

WM_IME_KEYUP

pub const WM_IME_KEYUP = 0x0291;

WM_NCMOUSEHOVER

pub const WM_NCMOUSEHOVER = 0x02A0;

WM_MOUSEHOVER

pub const WM_MOUSEHOVER = 0x02A1;

WM_NCMOUSELEAVE

pub const WM_NCMOUSELEAVE = 0x02A2;

WM_MOUSELEAVE

pub const WM_MOUSELEAVE = 0x02A3;

WM_CUT

pub const WM_CUT = 0x0300;

WM_COPY

pub const WM_COPY = 0x0301;

WM_PASTE

pub const WM_PASTE = 0x0302;

WM_CLEAR

pub const WM_CLEAR = 0x0303;

WM_UNDO

pub const WM_UNDO = 0x0304;

WM_RENDERFORMAT

pub const WM_RENDERFORMAT = 0x0305;

WM_RENDERALLFORMATS

pub const WM_RENDERALLFORMATS = 0x0306;

WM_DESTROYCLIPBOARD

pub const WM_DESTROYCLIPBOARD = 0x0307;

WM_DRAWCLIPBOARD

pub const WM_DRAWCLIPBOARD = 0x0308;

WM_PAINTCLIPBOARD

pub const WM_PAINTCLIPBOARD = 0x0309;

WM_VSCROLLCLIPBOARD

pub const WM_VSCROLLCLIPBOARD = 0x030A;

WM_SIZECLIPBOARD

pub const WM_SIZECLIPBOARD = 0x030B;

WM_ASKCBFORMATNAME

pub const WM_ASKCBFORMATNAME = 0x030C;

WM_CHANGECBCHAIN

pub const WM_CHANGECBCHAIN = 0x030D;

WM_HSCROLLCLIPBOARD

pub const WM_HSCROLLCLIPBOARD = 0x030E;

WM_QUERYNEWPALETTE

pub const WM_QUERYNEWPALETTE = 0x030F;

WM_PALETTEISCHANGING

pub const WM_PALETTEISCHANGING = 0x0310;

WM_PALETTECHANGED

pub const WM_PALETTECHANGED = 0x0311;

WM_HOTKEY

pub const WM_HOTKEY = 0x0312;

WM_PRINT

pub const WM_PRINT = 0x0317;

WM_PRINTCLIENT

pub const WM_PRINTCLIENT = 0x0318;

WM_APPCOMMAND

pub const WM_APPCOMMAND = 0x0319;

WM_RCRESULT

pub const WM_RCRESULT = 0x0381;

WM_HOOKRCRESULT

pub const WM_HOOKRCRESULT = 0x0382;

WM_GLOBALRCCHANGE

pub const WM_GLOBALRCCHANGE = 0x0383;

WM_PENMISCINFO

pub const WM_PENMISCINFO = 0x0383;

WM_SKB

pub const WM_SKB = 0x0384;

WM_HEDITCTL

pub const WM_HEDITCTL = 0x0385;

WM_PENCTL

pub const WM_PENCTL = 0x0385;

WM_PENMISC

pub const WM_PENMISC = 0x0386;

WM_CTLINIT

pub const WM_CTLINIT = 0x0387;

WM_PENEVENT

pub const WM_PENEVENT = 0x0388;

WM_CARET_CREATE

pub const WM_CARET_CREATE = 0x03E0;

WM_CARET_DESTROY

pub const WM_CARET_DESTROY = 0x03E1;

WM_CARET_BLINK

pub const WM_CARET_BLINK = 0x03E2;

WM_FDINPUT

pub const WM_FDINPUT = 0x03F0;

WM_FDOUTPUT

pub const WM_FDOUTPUT = 0x03F1;

WM_FDEXCEPT

pub const WM_FDEXCEPT = 0x03F2;

DDM_SETFMT

pub const DDM_SETFMT = 0x0400;

DM_GETDEFID

pub const DM_GETDEFID = 0x0400;

NIN_SELECT

pub const NIN_SELECT = 0x0400;

TBM_GETPOS

pub const TBM_GETPOS = 0x0400;

WM_PSD_PAGESETUPDLG

pub const WM_PSD_PAGESETUPDLG = 0x0400;

WM_USER

pub const WM_USER = 0x0400;

CBEM_INSERTITEMA

pub const CBEM_INSERTITEMA = 0x0401;

DDM_DRAW

pub const DDM_DRAW = 0x0401;

DM_SETDEFID

pub const DM_SETDEFID = 0x0401;

HKM_SETHOTKEY

pub const HKM_SETHOTKEY = 0x0401;

PBM_SETRANGE

pub const PBM_SETRANGE = 0x0401;

RB_INSERTBANDA

pub const RB_INSERTBANDA = 0x0401;

SB_SETTEXTA

pub const SB_SETTEXTA = 0x0401;

TB_ENABLEBUTTON

pub const TB_ENABLEBUTTON = 0x0401;

TBM_GETRANGEMIN

pub const TBM_GETRANGEMIN = 0x0401;

TTM_ACTIVATE

pub const TTM_ACTIVATE = 0x0401;

WM_CHOOSEFONT_GETLOGFONT

pub const WM_CHOOSEFONT_GETLOGFONT = 0x0401;

WM_PSD_FULLPAGERECT

pub const WM_PSD_FULLPAGERECT = 0x0401;

CBEM_SETIMAGELIST

pub const CBEM_SETIMAGELIST = 0x0402;

DDM_CLOSE

pub const DDM_CLOSE = 0x0402;

DM_REPOSITION

pub const DM_REPOSITION = 0x0402;

HKM_GETHOTKEY

pub const HKM_GETHOTKEY = 0x0402;

PBM_SETPOS

pub const PBM_SETPOS = 0x0402;

RB_DELETEBAND

pub const RB_DELETEBAND = 0x0402;

SB_GETTEXTA

pub const SB_GETTEXTA = 0x0402;

TB_CHECKBUTTON

pub const TB_CHECKBUTTON = 0x0402;

TBM_GETRANGEMAX

pub const TBM_GETRANGEMAX = 0x0402;

WM_PSD_MINMARGINRECT

pub const WM_PSD_MINMARGINRECT = 0x0402;

CBEM_GETIMAGELIST

pub const CBEM_GETIMAGELIST = 0x0403;

DDM_BEGIN

pub const DDM_BEGIN = 0x0403;

HKM_SETRULES

pub const HKM_SETRULES = 0x0403;

PBM_DELTAPOS

pub const PBM_DELTAPOS = 0x0403;

RB_GETBARINFO

pub const RB_GETBARINFO = 0x0403;

SB_GETTEXTLENGTHA

pub const SB_GETTEXTLENGTHA = 0x0403;

TBM_GETTIC

pub const TBM_GETTIC = 0x0403;

TB_PRESSBUTTON

pub const TB_PRESSBUTTON = 0x0403;

TTM_SETDELAYTIME

pub const TTM_SETDELAYTIME = 0x0403;

WM_PSD_MARGINRECT

pub const WM_PSD_MARGINRECT = 0x0403;

CBEM_GETITEMA

pub const CBEM_GETITEMA = 0x0404;

DDM_END

pub const DDM_END = 0x0404;

PBM_SETSTEP

pub const PBM_SETSTEP = 0x0404;

RB_SETBARINFO

pub const RB_SETBARINFO = 0x0404;

SB_SETPARTS

pub const SB_SETPARTS = 0x0404;

TB_HIDEBUTTON

pub const TB_HIDEBUTTON = 0x0404;

TBM_SETTIC

pub const TBM_SETTIC = 0x0404;

TTM_ADDTOOLA

pub const TTM_ADDTOOLA = 0x0404;

WM_PSD_GREEKTEXTRECT

pub const WM_PSD_GREEKTEXTRECT = 0x0404;

CBEM_SETITEMA

pub const CBEM_SETITEMA = 0x0405;

PBM_STEPIT

pub const PBM_STEPIT = 0x0405;

TB_INDETERMINATE

pub const TB_INDETERMINATE = 0x0405;

TBM_SETPOS

pub const TBM_SETPOS = 0x0405;

TTM_DELTOOLA

pub const TTM_DELTOOLA = 0x0405;

WM_PSD_ENVSTAMPRECT

pub const WM_PSD_ENVSTAMPRECT = 0x0405;

CBEM_GETCOMBOCONTROL

pub const CBEM_GETCOMBOCONTROL = 0x0406;

PBM_SETRANGE32

pub const PBM_SETRANGE32 = 0x0406;

RB_SETBANDINFOA

pub const RB_SETBANDINFOA = 0x0406;

SB_GETPARTS

pub const SB_GETPARTS = 0x0406;

TB_MARKBUTTON

pub const TB_MARKBUTTON = 0x0406;

TBM_SETRANGE

pub const TBM_SETRANGE = 0x0406;

TTM_NEWTOOLRECTA

pub const TTM_NEWTOOLRECTA = 0x0406;

WM_PSD_YAFULLPAGERECT

pub const WM_PSD_YAFULLPAGERECT = 0x0406;

CBEM_GETEDITCONTROL

pub const CBEM_GETEDITCONTROL = 0x0407;

PBM_GETRANGE

pub const PBM_GETRANGE = 0x0407;

RB_SETPARENT

pub const RB_SETPARENT = 0x0407;

SB_GETBORDERS

pub const SB_GETBORDERS = 0x0407;

TBM_SETRANGEMIN

pub const TBM_SETRANGEMIN = 0x0407;

TTM_RELAYEVENT

pub const TTM_RELAYEVENT = 0x0407;

CBEM_SETEXSTYLE

pub const CBEM_SETEXSTYLE = 0x0408;

PBM_GETPOS

pub const PBM_GETPOS = 0x0408;

RB_HITTEST

pub const RB_HITTEST = 0x0408;

SB_SETMINHEIGHT

pub const SB_SETMINHEIGHT = 0x0408;

TBM_SETRANGEMAX

pub const TBM_SETRANGEMAX = 0x0408;

TTM_GETTOOLINFOA

pub const TTM_GETTOOLINFOA = 0x0408;

CBEM_GETEXSTYLE

pub const CBEM_GETEXSTYLE = 0x0409;

CBEM_GETEXTENDEDSTYLE

pub const CBEM_GETEXTENDEDSTYLE = 0x0409;

PBM_SETBARCOLOR

pub const PBM_SETBARCOLOR = 0x0409;

RB_GETRECT

pub const RB_GETRECT = 0x0409;

SB_SIMPLE

pub const SB_SIMPLE = 0x0409;

TB_ISBUTTONENABLED

pub const TB_ISBUTTONENABLED = 0x0409;

TBM_CLEARTICS

pub const TBM_CLEARTICS = 0x0409;

TTM_SETTOOLINFOA

pub const TTM_SETTOOLINFOA = 0x0409;

CBEM_HASEDITCHANGED

pub const CBEM_HASEDITCHANGED = 0x040A;

RB_INSERTBANDW

pub const RB_INSERTBANDW = 0x040A;

SB_GETRECT

pub const SB_GETRECT = 0x040A;

TB_ISBUTTONCHECKED

pub const TB_ISBUTTONCHECKED = 0x040A;

TBM_SETSEL

pub const TBM_SETSEL = 0x040A;

TTM_HITTESTA

pub const TTM_HITTESTA = 0x040A;

WIZ_QUERYNUMPAGES

pub const WIZ_QUERYNUMPAGES = 0x040A;

CBEM_INSERTITEMW

pub const CBEM_INSERTITEMW = 0x040B;

RB_SETBANDINFOW

pub const RB_SETBANDINFOW = 0x040B;

SB_SETTEXTW

pub const SB_SETTEXTW = 0x040B;

TB_ISBUTTONPRESSED

pub const TB_ISBUTTONPRESSED = 0x040B;

TBM_SETSELSTART

pub const TBM_SETSELSTART = 0x040B;

TTM_GETTEXTA

pub const TTM_GETTEXTA = 0x040B;

WIZ_NEXT

pub const WIZ_NEXT = 0x040B;

CBEM_SETITEMW

pub const CBEM_SETITEMW = 0x040C;

RB_GETBANDCOUNT

pub const RB_GETBANDCOUNT = 0x040C;

SB_GETTEXTLENGTHW

pub const SB_GETTEXTLENGTHW = 0x040C;

TB_ISBUTTONHIDDEN

pub const TB_ISBUTTONHIDDEN = 0x040C;

TBM_SETSELEND

pub const TBM_SETSELEND = 0x040C;

TTM_UPDATETIPTEXTA

pub const TTM_UPDATETIPTEXTA = 0x040C;

WIZ_PREV

pub const WIZ_PREV = 0x040C;

CBEM_GETITEMW

pub const CBEM_GETITEMW = 0x040D;

RB_GETROWCOUNT

pub const RB_GETROWCOUNT = 0x040D;

SB_GETTEXTW

pub const SB_GETTEXTW = 0x040D;

TB_ISBUTTONINDETERMINATE

pub const TB_ISBUTTONINDETERMINATE = 0x040D;

TTM_GETTOOLCOUNT

pub const TTM_GETTOOLCOUNT = 0x040D;

CBEM_SETEXTENDEDSTYLE

pub const CBEM_SETEXTENDEDSTYLE = 0x040E;

RB_GETROWHEIGHT

pub const RB_GETROWHEIGHT = 0x040E;

SB_ISSIMPLE

pub const SB_ISSIMPLE = 0x040E;

TB_ISBUTTONHIGHLIGHTED

pub const TB_ISBUTTONHIGHLIGHTED = 0x040E;

TBM_GETPTICS

pub const TBM_GETPTICS = 0x040E;

TTM_ENUMTOOLSA

pub const TTM_ENUMTOOLSA = 0x040E;

SB_SETICON

pub const SB_SETICON = 0x040F;

TBM_GETTICPOS

pub const TBM_GETTICPOS = 0x040F;

TTM_GETCURRENTTOOLA

pub const TTM_GETCURRENTTOOLA = 0x040F;

RB_IDTOINDEX

pub const RB_IDTOINDEX = 0x0410;

SB_SETTIPTEXTA

pub const SB_SETTIPTEXTA = 0x0410;

TBM_GETNUMTICS

pub const TBM_GETNUMTICS = 0x0410;

TTM_WINDOWFROMPOINT

pub const TTM_WINDOWFROMPOINT = 0x0410;

RB_GETTOOLTIPS

pub const RB_GETTOOLTIPS = 0x0411;

SB_SETTIPTEXTW

pub const SB_SETTIPTEXTW = 0x0411;

TBM_GETSELSTART

pub const TBM_GETSELSTART = 0x0411;

TB_SETSTATE

pub const TB_SETSTATE = 0x0411;

TTM_TRACKACTIVATE

pub const TTM_TRACKACTIVATE = 0x0411;

RB_SETTOOLTIPS

pub const RB_SETTOOLTIPS = 0x0412;

SB_GETTIPTEXTA

pub const SB_GETTIPTEXTA = 0x0412;

TB_GETSTATE

pub const TB_GETSTATE = 0x0412;

TBM_GETSELEND

pub const TBM_GETSELEND = 0x0412;

TTM_TRACKPOSITION

pub const TTM_TRACKPOSITION = 0x0412;

RB_SETBKCOLOR

pub const RB_SETBKCOLOR = 0x0413;

SB_GETTIPTEXTW

pub const SB_GETTIPTEXTW = 0x0413;

TB_ADDBITMAP

pub const TB_ADDBITMAP = 0x0413;

TBM_CLEARSEL

pub const TBM_CLEARSEL = 0x0413;

TTM_SETTIPBKCOLOR

pub const TTM_SETTIPBKCOLOR = 0x0413;

RB_GETBKCOLOR

pub const RB_GETBKCOLOR = 0x0414;

SB_GETICON

pub const SB_GETICON = 0x0414;

TB_ADDBUTTONSA

pub const TB_ADDBUTTONSA = 0x0414;

TBM_SETTICFREQ

pub const TBM_SETTICFREQ = 0x0414;

TTM_SETTIPTEXTCOLOR

pub const TTM_SETTIPTEXTCOLOR = 0x0414;

RB_SETTEXTCOLOR

pub const RB_SETTEXTCOLOR = 0x0415;

TB_INSERTBUTTONA

pub const TB_INSERTBUTTONA = 0x0415;

TBM_SETPAGESIZE

pub const TBM_SETPAGESIZE = 0x0415;

TTM_GETDELAYTIME

pub const TTM_GETDELAYTIME = 0x0415;

RB_GETTEXTCOLOR

pub const RB_GETTEXTCOLOR = 0x0416;

TB_DELETEBUTTON

pub const TB_DELETEBUTTON = 0x0416;

TBM_GETPAGESIZE

pub const TBM_GETPAGESIZE = 0x0416;

TTM_GETTIPBKCOLOR

pub const TTM_GETTIPBKCOLOR = 0x0416;

RB_SIZETORECT

pub const RB_SIZETORECT = 0x0417;

TB_GETBUTTON

pub const TB_GETBUTTON = 0x0417;

TBM_SETLINESIZE

pub const TBM_SETLINESIZE = 0x0417;

TTM_GETTIPTEXTCOLOR

pub const TTM_GETTIPTEXTCOLOR = 0x0417;

RB_BEGINDRAG

pub const RB_BEGINDRAG = 0x0418;

TB_BUTTONCOUNT

pub const TB_BUTTONCOUNT = 0x0418;

TBM_GETLINESIZE

pub const TBM_GETLINESIZE = 0x0418;

TTM_SETMAXTIPWIDTH

pub const TTM_SETMAXTIPWIDTH = 0x0418;

RB_ENDDRAG

pub const RB_ENDDRAG = 0x0419;

TB_COMMANDTOINDEX

pub const TB_COMMANDTOINDEX = 0x0419;

TBM_GETTHUMBRECT

pub const TBM_GETTHUMBRECT = 0x0419;

TTM_GETMAXTIPWIDTH

pub const TTM_GETMAXTIPWIDTH = 0x0419;

RB_DRAGMOVE

pub const RB_DRAGMOVE = 0x041A;

TBM_GETCHANNELRECT

pub const TBM_GETCHANNELRECT = 0x041A;

TB_SAVERESTOREA

pub const TB_SAVERESTOREA = 0x041A;

TTM_SETMARGIN

pub const TTM_SETMARGIN = 0x041A;

RB_GETBARHEIGHT

pub const RB_GETBARHEIGHT = 0x041B;

TB_CUSTOMIZE

pub const TB_CUSTOMIZE = 0x041B;

TBM_SETTHUMBLENGTH

pub const TBM_SETTHUMBLENGTH = 0x041B;

TTM_GETMARGIN

pub const TTM_GETMARGIN = 0x041B;

RB_GETBANDINFOW

pub const RB_GETBANDINFOW = 0x041C;

TB_ADDSTRINGA

pub const TB_ADDSTRINGA = 0x041C;

TBM_GETTHUMBLENGTH

pub const TBM_GETTHUMBLENGTH = 0x041C;

TTM_POP

pub const TTM_POP = 0x041C;

RB_GETBANDINFOA

pub const RB_GETBANDINFOA = 0x041D;

TB_GETITEMRECT

pub const TB_GETITEMRECT = 0x041D;

TBM_SETTOOLTIPS

pub const TBM_SETTOOLTIPS = 0x041D;

TTM_UPDATE

pub const TTM_UPDATE = 0x041D;

RB_MINIMIZEBAND

pub const RB_MINIMIZEBAND = 0x041E;

TB_BUTTONSTRUCTSIZE

pub const TB_BUTTONSTRUCTSIZE = 0x041E;

TBM_GETTOOLTIPS

pub const TBM_GETTOOLTIPS = 0x041E;

TTM_GETBUBBLESIZE

pub const TTM_GETBUBBLESIZE = 0x041E;

RB_MAXIMIZEBAND

pub const RB_MAXIMIZEBAND = 0x041F;

TBM_SETTIPSIDE

pub const TBM_SETTIPSIDE = 0x041F;

TB_SETBUTTONSIZE

pub const TB_SETBUTTONSIZE = 0x041F;

TTM_ADJUSTRECT

pub const TTM_ADJUSTRECT = 0x041F;

TBM_SETBUDDY

pub const TBM_SETBUDDY = 0x0420;

TB_SETBITMAPSIZE

pub const TB_SETBITMAPSIZE = 0x0420;

TTM_SETTITLEA

pub const TTM_SETTITLEA = 0x0420;

MSG_FTS_JUMP_VA

pub const MSG_FTS_JUMP_VA = 0x0421;

TB_AUTOSIZE

pub const TB_AUTOSIZE = 0x0421;

TBM_GETBUDDY

pub const TBM_GETBUDDY = 0x0421;

TTM_SETTITLEW

pub const TTM_SETTITLEW = 0x0421;

RB_GETBANDBORDERS

pub const RB_GETBANDBORDERS = 0x0422;

MSG_FTS_JUMP_QWORD

pub const MSG_FTS_JUMP_QWORD = 0x0423;

RB_SHOWBAND

pub const RB_SHOWBAND = 0x0423;

TB_GETTOOLTIPS

pub const TB_GETTOOLTIPS = 0x0423;

MSG_REINDEX_REQUEST

pub const MSG_REINDEX_REQUEST = 0x0424;

TB_SETTOOLTIPS

pub const TB_SETTOOLTIPS = 0x0424;

MSG_FTS_WHERE_IS_IT

pub const MSG_FTS_WHERE_IS_IT = 0x0425;

RB_SETPALETTE

pub const RB_SETPALETTE = 0x0425;

TB_SETPARENT

pub const TB_SETPARENT = 0x0425;

RB_GETPALETTE

pub const RB_GETPALETTE = 0x0426;

RB_MOVEBAND

pub const RB_MOVEBAND = 0x0427;

TB_SETROWS

pub const TB_SETROWS = 0x0427;

TB_GETROWS

pub const TB_GETROWS = 0x0428;

TB_GETBITMAPFLAGS

pub const TB_GETBITMAPFLAGS = 0x0429;

TB_SETCMDID

pub const TB_SETCMDID = 0x042A;

RB_PUSHCHEVRON

pub const RB_PUSHCHEVRON = 0x042B;

TB_CHANGEBITMAP

pub const TB_CHANGEBITMAP = 0x042B;

TB_GETBITMAP

pub const TB_GETBITMAP = 0x042C;

MSG_GET_DEFFONT

pub const MSG_GET_DEFFONT = 0x042D;

TB_GETBUTTONTEXTA

pub const TB_GETBUTTONTEXTA = 0x042D;

TB_REPLACEBITMAP

pub const TB_REPLACEBITMAP = 0x042E;

TB_SETINDENT

pub const TB_SETINDENT = 0x042F;

TB_SETIMAGELIST

pub const TB_SETIMAGELIST = 0x0430;

TB_GETIMAGELIST

pub const TB_GETIMAGELIST = 0x0431;

TB_LOADIMAGES

pub const TB_LOADIMAGES = 0x0432;

EM_CANPASTE

pub const EM_CANPASTE = 0x0432;

TTM_ADDTOOLW

pub const TTM_ADDTOOLW = 0x0432;

EM_DISPLAYBAND

pub const EM_DISPLAYBAND = 0x0433;

TB_GETRECT

pub const TB_GETRECT = 0x0433;

TTM_DELTOOLW

pub const TTM_DELTOOLW = 0x0433;

EM_EXGETSEL

pub const EM_EXGETSEL = 0x0434;

TB_SETHOTIMAGELIST

pub const TB_SETHOTIMAGELIST = 0x0434;

TTM_NEWTOOLRECTW

pub const TTM_NEWTOOLRECTW = 0x0434;

EM_EXLIMITTEXT

pub const EM_EXLIMITTEXT = 0x0435;

TB_GETHOTIMAGELIST

pub const TB_GETHOTIMAGELIST = 0x0435;

TTM_GETTOOLINFOW

pub const TTM_GETTOOLINFOW = 0x0435;

EM_EXLINEFROMCHAR

pub const EM_EXLINEFROMCHAR = 0x0436;

TB_SETDISABLEDIMAGELIST

pub const TB_SETDISABLEDIMAGELIST = 0x0436;

TTM_SETTOOLINFOW

pub const TTM_SETTOOLINFOW = 0x0436;

EM_EXSETSEL

pub const EM_EXSETSEL = 0x0437;

TB_GETDISABLEDIMAGELIST

pub const TB_GETDISABLEDIMAGELIST = 0x0437;

TTM_HITTESTW

pub const TTM_HITTESTW = 0x0437;

EM_FINDTEXT

pub const EM_FINDTEXT = 0x0438;

TB_SETSTYLE

pub const TB_SETSTYLE = 0x0438;

TTM_GETTEXTW

pub const TTM_GETTEXTW = 0x0438;

EM_FORMATRANGE

pub const EM_FORMATRANGE = 0x0439;

TB_GETSTYLE

pub const TB_GETSTYLE = 0x0439;

TTM_UPDATETIPTEXTW

pub const TTM_UPDATETIPTEXTW = 0x0439;

EM_GETCHARFORMAT

pub const EM_GETCHARFORMAT = 0x043A;

TB_GETBUTTONSIZE

pub const TB_GETBUTTONSIZE = 0x043A;

TTM_ENUMTOOLSW

pub const TTM_ENUMTOOLSW = 0x043A;

EM_GETEVENTMASK

pub const EM_GETEVENTMASK = 0x043B;

TB_SETBUTTONWIDTH

pub const TB_SETBUTTONWIDTH = 0x043B;

TTM_GETCURRENTTOOLW

pub const TTM_GETCURRENTTOOLW = 0x043B;

EM_GETOLEINTERFACE

pub const EM_GETOLEINTERFACE = 0x043C;

TB_SETMAXTEXTROWS

pub const TB_SETMAXTEXTROWS = 0x043C;

EM_GETPARAFORMAT

pub const EM_GETPARAFORMAT = 0x043D;

TB_GETTEXTROWS

pub const TB_GETTEXTROWS = 0x043D;

EM_GETSELTEXT

pub const EM_GETSELTEXT = 0x043E;

TB_GETOBJECT

pub const TB_GETOBJECT = 0x043E;

EM_HIDESELECTION

pub const EM_HIDESELECTION = 0x043F;

TB_GETBUTTONINFOW

pub const TB_GETBUTTONINFOW = 0x043F;

EM_PASTESPECIAL

pub const EM_PASTESPECIAL = 0x0440;

TB_SETBUTTONINFOW

pub const TB_SETBUTTONINFOW = 0x0440;

EM_REQUESTRESIZE

pub const EM_REQUESTRESIZE = 0x0441;

TB_GETBUTTONINFOA

pub const TB_GETBUTTONINFOA = 0x0441;

EM_SELECTIONTYPE

pub const EM_SELECTIONTYPE = 0x0442;

TB_SETBUTTONINFOA

pub const TB_SETBUTTONINFOA = 0x0442;

EM_SETBKGNDCOLOR

pub const EM_SETBKGNDCOLOR = 0x0443;

TB_INSERTBUTTONW

pub const TB_INSERTBUTTONW = 0x0443;

EM_SETCHARFORMAT

pub const EM_SETCHARFORMAT = 0x0444;

TB_ADDBUTTONSW

pub const TB_ADDBUTTONSW = 0x0444;

EM_SETEVENTMASK

pub const EM_SETEVENTMASK = 0x0445;

TB_HITTEST

pub const TB_HITTEST = 0x0445;

EM_SETOLECALLBACK

pub const EM_SETOLECALLBACK = 0x0446;

TB_SETDRAWTEXTFLAGS

pub const TB_SETDRAWTEXTFLAGS = 0x0446;

EM_SETPARAFORMAT

pub const EM_SETPARAFORMAT = 0x0447;

TB_GETHOTITEM

pub const TB_GETHOTITEM = 0x0447;

EM_SETTARGETDEVICE

pub const EM_SETTARGETDEVICE = 0x0448;

TB_SETHOTITEM

pub const TB_SETHOTITEM = 0x0448;

EM_STREAMIN

pub const EM_STREAMIN = 0x0449;

TB_SETANCHORHIGHLIGHT

pub const TB_SETANCHORHIGHLIGHT = 0x0449;

EM_STREAMOUT

pub const EM_STREAMOUT = 0x044A;

TB_GETANCHORHIGHLIGHT

pub const TB_GETANCHORHIGHLIGHT = 0x044A;

EM_GETTEXTRANGE

pub const EM_GETTEXTRANGE = 0x044B;

TB_GETBUTTONTEXTW

pub const TB_GETBUTTONTEXTW = 0x044B;

EM_FINDWORDBREAK

pub const EM_FINDWORDBREAK = 0x044C;

TB_SAVERESTOREW

pub const TB_SAVERESTOREW = 0x044C;

EM_SETOPTIONS

pub const EM_SETOPTIONS = 0x044D;

TB_ADDSTRINGW

pub const TB_ADDSTRINGW = 0x044D;

EM_GETOPTIONS

pub const EM_GETOPTIONS = 0x044E;

TB_MAPACCELERATORA

pub const TB_MAPACCELERATORA = 0x044E;

EM_FINDTEXTEX

pub const EM_FINDTEXTEX = 0x044F;

TB_GETINSERTMARK

pub const TB_GETINSERTMARK = 0x044F;

EM_GETWORDBREAKPROCEX

pub const EM_GETWORDBREAKPROCEX = 0x0450;

TB_SETINSERTMARK

pub const TB_SETINSERTMARK = 0x0450;

EM_SETWORDBREAKPROCEX

pub const EM_SETWORDBREAKPROCEX = 0x0451;

TB_INSERTMARKHITTEST

pub const TB_INSERTMARKHITTEST = 0x0451;

EM_SETUNDOLIMIT

pub const EM_SETUNDOLIMIT = 0x0452;

TB_MOVEBUTTON

pub const TB_MOVEBUTTON = 0x0452;

TB_GETMAXSIZE

pub const TB_GETMAXSIZE = 0x0453;

EM_REDO

pub const EM_REDO = 0x0454;

TB_SETEXTENDEDSTYLE

pub const TB_SETEXTENDEDSTYLE = 0x0454;

EM_CANREDO

pub const EM_CANREDO = 0x0455;

TB_GETEXTENDEDSTYLE

pub const TB_GETEXTENDEDSTYLE = 0x0455;

EM_GETUNDONAME

pub const EM_GETUNDONAME = 0x0456;

TB_GETPADDING

pub const TB_GETPADDING = 0x0456;

EM_GETREDONAME

pub const EM_GETREDONAME = 0x0457;

TB_SETPADDING

pub const TB_SETPADDING = 0x0457;

EM_STOPGROUPTYPING

pub const EM_STOPGROUPTYPING = 0x0458;

TB_SETINSERTMARKCOLOR

pub const TB_SETINSERTMARKCOLOR = 0x0458;

EM_SETTEXTMODE

pub const EM_SETTEXTMODE = 0x0459;

TB_GETINSERTMARKCOLOR

pub const TB_GETINSERTMARKCOLOR = 0x0459;

EM_GETTEXTMODE

pub const EM_GETTEXTMODE = 0x045A;

TB_MAPACCELERATORW

pub const TB_MAPACCELERATORW = 0x045A;

EM_AUTOURLDETECT

pub const EM_AUTOURLDETECT = 0x045B;

TB_GETSTRINGW

pub const TB_GETSTRINGW = 0x045B;

EM_GETAUTOURLDETECT

pub const EM_GETAUTOURLDETECT = 0x045C;

TB_GETSTRINGA

pub const TB_GETSTRINGA = 0x045C;

EM_SETPALETTE

pub const EM_SETPALETTE = 0x045D;

EM_GETTEXTEX

pub const EM_GETTEXTEX = 0x045E;

EM_GETTEXTLENGTHEX

pub const EM_GETTEXTLENGTHEX = 0x045F;

EM_SHOWSCROLLBAR

pub const EM_SHOWSCROLLBAR = 0x0460;

EM_SETTEXTEX

pub const EM_SETTEXTEX = 0x0461;

TAPI_REPLY

pub const TAPI_REPLY = 0x0463;

ACM_OPENA

pub const ACM_OPENA = 0x0464;

BFFM_SETSTATUSTEXTA

pub const BFFM_SETSTATUSTEXTA = 0x0464;

CDM_GETSPEC

pub const CDM_GETSPEC = 0x0464;

EM_SETPUNCTUATION

pub const EM_SETPUNCTUATION = 0x0464;

IPM_CLEARADDRESS

pub const IPM_CLEARADDRESS = 0x0464;

WM_CAP_UNICODE_START

pub const WM_CAP_UNICODE_START = 0x0464;

ACM_PLAY

pub const ACM_PLAY = 0x0465;

BFFM_ENABLEOK

pub const BFFM_ENABLEOK = 0x0465;

CDM_GETFILEPATH

pub const CDM_GETFILEPATH = 0x0465;

EM_GETPUNCTUATION

pub const EM_GETPUNCTUATION = 0x0465;

IPM_SETADDRESS

pub const IPM_SETADDRESS = 0x0465;

PSM_SETCURSEL

pub const PSM_SETCURSEL = 0x0465;

UDM_SETRANGE

pub const UDM_SETRANGE = 0x0465;

WM_CHOOSEFONT_SETLOGFONT

pub const WM_CHOOSEFONT_SETLOGFONT = 0x0465;

ACM_STOP

pub const ACM_STOP = 0x0466;

BFFM_SETSELECTIONA

pub const BFFM_SETSELECTIONA = 0x0466;

CDM_GETFOLDERPATH

pub const CDM_GETFOLDERPATH = 0x0466;

EM_SETWORDWRAPMODE

pub const EM_SETWORDWRAPMODE = 0x0466;

IPM_GETADDRESS

pub const IPM_GETADDRESS = 0x0466;

PSM_REMOVEPAGE

pub const PSM_REMOVEPAGE = 0x0466;

UDM_GETRANGE

pub const UDM_GETRANGE = 0x0466;

WM_CAP_SET_CALLBACK_ERRORW

pub const WM_CAP_SET_CALLBACK_ERRORW = 0x0466;

WM_CHOOSEFONT_SETFLAGS

pub const WM_CHOOSEFONT_SETFLAGS = 0x0466;

ACM_OPENW

pub const ACM_OPENW = 0x0467;

BFFM_SETSELECTIONW

pub const BFFM_SETSELECTIONW = 0x0467;

CDM_GETFOLDERIDLIST

pub const CDM_GETFOLDERIDLIST = 0x0467;

EM_GETWORDWRAPMODE

pub const EM_GETWORDWRAPMODE = 0x0467;

IPM_SETRANGE

pub const IPM_SETRANGE = 0x0467;

PSM_ADDPAGE

pub const PSM_ADDPAGE = 0x0467;

UDM_SETPOS

pub const UDM_SETPOS = 0x0467;

WM_CAP_SET_CALLBACK_STATUSW

pub const WM_CAP_SET_CALLBACK_STATUSW = 0x0467;

BFFM_SETSTATUSTEXTW

pub const BFFM_SETSTATUSTEXTW = 0x0468;

CDM_SETCONTROLTEXT

pub const CDM_SETCONTROLTEXT = 0x0468;

EM_SETIMECOLOR

pub const EM_SETIMECOLOR = 0x0468;

IPM_SETFOCUS

pub const IPM_SETFOCUS = 0x0468;

PSM_CHANGED

pub const PSM_CHANGED = 0x0468;

UDM_GETPOS

pub const UDM_GETPOS = 0x0468;

CDM_HIDECONTROL

pub const CDM_HIDECONTROL = 0x0469;

EM_GETIMECOLOR

pub const EM_GETIMECOLOR = 0x0469;

IPM_ISBLANK

pub const IPM_ISBLANK = 0x0469;

PSM_RESTARTWINDOWS

pub const PSM_RESTARTWINDOWS = 0x0469;

UDM_SETBUDDY

pub const UDM_SETBUDDY = 0x0469;

CDM_SETDEFEXT

pub const CDM_SETDEFEXT = 0x046A;

EM_SETIMEOPTIONS

pub const EM_SETIMEOPTIONS = 0x046A;

PSM_REBOOTSYSTEM

pub const PSM_REBOOTSYSTEM = 0x046A;

UDM_GETBUDDY

pub const UDM_GETBUDDY = 0x046A;

EM_GETIMEOPTIONS

pub const EM_GETIMEOPTIONS = 0x046B;

PSM_CANCELTOCLOSE

pub const PSM_CANCELTOCLOSE = 0x046B;

UDM_SETACCEL

pub const UDM_SETACCEL = 0x046B;

EM_CONVPOSITION

pub const EM_CONVPOSITION = 0x046C;

PSM_QUERYSIBLINGS

pub const PSM_QUERYSIBLINGS = 0x046C;

UDM_GETACCEL

pub const UDM_GETACCEL = 0x046C;

MCIWNDM_GETZOOM

pub const MCIWNDM_GETZOOM = 0x046D;

PSM_UNCHANGED

pub const PSM_UNCHANGED = 0x046D;

UDM_SETBASE

pub const UDM_SETBASE = 0x046D;

PSM_APPLY

pub const PSM_APPLY = 0x046E;

UDM_GETBASE

pub const UDM_GETBASE = 0x046E;

PSM_SETTITLEA

pub const PSM_SETTITLEA = 0x046F;

UDM_SETRANGE32

pub const UDM_SETRANGE32 = 0x046F;

PSM_SETWIZBUTTONS

pub const PSM_SETWIZBUTTONS = 0x0470;

UDM_GETRANGE32

pub const UDM_GETRANGE32 = 0x0470;

WM_CAP_DRIVER_GET_NAMEW

pub const WM_CAP_DRIVER_GET_NAMEW = 0x0470;

PSM_PRESSBUTTON

pub const PSM_PRESSBUTTON = 0x0471;

UDM_SETPOS32

pub const UDM_SETPOS32 = 0x0471;

WM_CAP_DRIVER_GET_VERSIONW

pub const WM_CAP_DRIVER_GET_VERSIONW = 0x0471;

PSM_SETCURSELID

pub const PSM_SETCURSELID = 0x0472;

UDM_GETPOS32

pub const UDM_GETPOS32 = 0x0472;

PSM_SETFINISHTEXTA

pub const PSM_SETFINISHTEXTA = 0x0473;

PSM_GETTABCONTROL

pub const PSM_GETTABCONTROL = 0x0474;

PSM_ISDIALOGMESSAGE

pub const PSM_ISDIALOGMESSAGE = 0x0475;

MCIWNDM_REALIZE

pub const MCIWNDM_REALIZE = 0x0476;

PSM_GETCURRENTPAGEHWND

pub const PSM_GETCURRENTPAGEHWND = 0x0476;

MCIWNDM_SETTIMEFORMATA

pub const MCIWNDM_SETTIMEFORMATA = 0x0477;

PSM_INSERTPAGE

pub const PSM_INSERTPAGE = 0x0477;

EM_SETLANGOPTIONS

pub const EM_SETLANGOPTIONS = 0x0478;

MCIWNDM_GETTIMEFORMATA

pub const MCIWNDM_GETTIMEFORMATA = 0x0478;

PSM_SETTITLEW

pub const PSM_SETTITLEW = 0x0478;

WM_CAP_FILE_SET_CAPTURE_FILEW

pub const WM_CAP_FILE_SET_CAPTURE_FILEW = 0x0478;

EM_GETLANGOPTIONS

pub const EM_GETLANGOPTIONS = 0x0479;

MCIWNDM_VALIDATEMEDIA

pub const MCIWNDM_VALIDATEMEDIA = 0x0479;

PSM_SETFINISHTEXTW

pub const PSM_SETFINISHTEXTW = 0x0479;

WM_CAP_FILE_GET_CAPTURE_FILEW

pub const WM_CAP_FILE_GET_CAPTURE_FILEW = 0x0479;

EM_GETIMECOMPMODE

pub const EM_GETIMECOMPMODE = 0x047A;

EM_FINDTEXTW

pub const EM_FINDTEXTW = 0x047B;

MCIWNDM_PLAYTO

pub const MCIWNDM_PLAYTO = 0x047B;

WM_CAP_FILE_SAVEASW

pub const WM_CAP_FILE_SAVEASW = 0x047B;

EM_FINDTEXTEXW

pub const EM_FINDTEXTEXW = 0x047C;

MCIWNDM_GETFILENAMEA

pub const MCIWNDM_GETFILENAMEA = 0x047C;

EM_RECONVERSION

pub const EM_RECONVERSION = 0x047D;

MCIWNDM_GETDEVICEA

pub const MCIWNDM_GETDEVICEA = 0x047D;

PSM_SETHEADERTITLEA

pub const PSM_SETHEADERTITLEA = 0x047D;

WM_CAP_FILE_SAVEDIBW

pub const WM_CAP_FILE_SAVEDIBW = 0x047D;

EM_SETIMEMODEBIAS

pub const EM_SETIMEMODEBIAS = 0x047E;

MCIWNDM_GETPALETTE

pub const MCIWNDM_GETPALETTE = 0x047E;

PSM_SETHEADERTITLEW

pub const PSM_SETHEADERTITLEW = 0x047E;

EM_GETIMEMODEBIAS

pub const EM_GETIMEMODEBIAS = 0x047F;

MCIWNDM_SETPALETTE

pub const MCIWNDM_SETPALETTE = 0x047F;

PSM_SETHEADERSUBTITLEA

pub const PSM_SETHEADERSUBTITLEA = 0x047F;

MCIWNDM_GETERRORA

pub const MCIWNDM_GETERRORA = 0x0480;

PSM_SETHEADERSUBTITLEW

pub const PSM_SETHEADERSUBTITLEW = 0x0480;

PSM_HWNDTOINDEX

pub const PSM_HWNDTOINDEX = 0x0481;

PSM_INDEXTOHWND

pub const PSM_INDEXTOHWND = 0x0482;

MCIWNDM_SETINACTIVETIMER

pub const MCIWNDM_SETINACTIVETIMER = 0x0483;

PSM_PAGETOINDEX

pub const PSM_PAGETOINDEX = 0x0483;

PSM_INDEXTOPAGE

pub const PSM_INDEXTOPAGE = 0x0484;

DL_BEGINDRAG

pub const DL_BEGINDRAG = 0x0485;

MCIWNDM_GETINACTIVETIMER

pub const MCIWNDM_GETINACTIVETIMER = 0x0485;

PSM_IDTOINDEX

pub const PSM_IDTOINDEX = 0x0485;

DL_DRAGGING

pub const DL_DRAGGING = 0x0486;

PSM_INDEXTOID

pub const PSM_INDEXTOID = 0x0486;

DL_DROPPED

pub const DL_DROPPED = 0x0487;

PSM_GETRESULT

pub const PSM_GETRESULT = 0x0487;

DL_CANCELDRAG

pub const DL_CANCELDRAG = 0x0488;

PSM_RECALCPAGESIZES

pub const PSM_RECALCPAGESIZES = 0x0488;

MCIWNDM_GET_SOURCE

pub const MCIWNDM_GET_SOURCE = 0x048C;

MCIWNDM_PUT_SOURCE

pub const MCIWNDM_PUT_SOURCE = 0x048D;

MCIWNDM_GET_DEST

pub const MCIWNDM_GET_DEST = 0x048E;

MCIWNDM_PUT_DEST

pub const MCIWNDM_PUT_DEST = 0x048F;

MCIWNDM_CAN_PLAY

pub const MCIWNDM_CAN_PLAY = 0x0490;

MCIWNDM_CAN_WINDOW

pub const MCIWNDM_CAN_WINDOW = 0x0491;

MCIWNDM_CAN_RECORD

pub const MCIWNDM_CAN_RECORD = 0x0492;

MCIWNDM_CAN_SAVE

pub const MCIWNDM_CAN_SAVE = 0x0493;

MCIWNDM_CAN_EJECT

pub const MCIWNDM_CAN_EJECT = 0x0494;

MCIWNDM_CAN_CONFIG

pub const MCIWNDM_CAN_CONFIG = 0x0495;

IE_GETINK

pub const IE_GETINK = 0x0496;

MCIWNDM_PALETTEKICK

pub const MCIWNDM_PALETTEKICK = 0x0496;

IE_SETINK

pub const IE_SETINK = 0x0497;

IE_GETPENTIP

pub const IE_GETPENTIP = 0x0498;

IE_SETPENTIP

pub const IE_SETPENTIP = 0x0499;

IE_GETERASERTIP

pub const IE_GETERASERTIP = 0x049A;

IE_SETERASERTIP

pub const IE_SETERASERTIP = 0x049B;

IE_GETBKGND

pub const IE_GETBKGND = 0x049C;

IE_SETBKGND

pub const IE_SETBKGND = 0x049D;

IE_GETGRIDORIGIN

pub const IE_GETGRIDORIGIN = 0x049E;

IE_SETGRIDORIGIN

pub const IE_SETGRIDORIGIN = 0x049F;

IE_GETGRIDPEN

pub const IE_GETGRIDPEN = 0x04A0;

IE_SETGRIDPEN

pub const IE_SETGRIDPEN = 0x04A1;

IE_GETGRIDSIZE

pub const IE_GETGRIDSIZE = 0x04A2;

IE_SETGRIDSIZE

pub const IE_SETGRIDSIZE = 0x04A3;

IE_GETMODE

pub const IE_GETMODE = 0x04A4;

IE_SETMODE

pub const IE_SETMODE = 0x04A5;

IE_GETINKRECT

pub const IE_GETINKRECT = 0x04A6;

WM_CAP_SET_MCI_DEVICEW

pub const WM_CAP_SET_MCI_DEVICEW = 0x04A6;

WM_CAP_GET_MCI_DEVICEW

pub const WM_CAP_GET_MCI_DEVICEW = 0x04A7;

WM_CAP_PAL_OPENW

pub const WM_CAP_PAL_OPENW = 0x04B4;

WM_CAP_PAL_SAVEW

pub const WM_CAP_PAL_SAVEW = 0x04B5;

IE_GETAPPDATA

pub const IE_GETAPPDATA = 0x04B8;

IE_SETAPPDATA

pub const IE_SETAPPDATA = 0x04B9;

IE_GETDRAWOPTS

pub const IE_GETDRAWOPTS = 0x04BA;

IE_SETDRAWOPTS

pub const IE_SETDRAWOPTS = 0x04BB;

IE_GETFORMAT

pub const IE_GETFORMAT = 0x04BC;

IE_SETFORMAT

pub const IE_SETFORMAT = 0x04BD;

IE_GETINKINPUT

pub const IE_GETINKINPUT = 0x04BE;

IE_SETINKINPUT

pub const IE_SETINKINPUT = 0x04BF;

IE_GETNOTIFY

pub const IE_GETNOTIFY = 0x04C0;

IE_SETNOTIFY

pub const IE_SETNOTIFY = 0x04C1;

IE_GETRECOG

pub const IE_GETRECOG = 0x04C2;

IE_SETRECOG

pub const IE_SETRECOG = 0x04C3;

IE_GETSECURITY

pub const IE_GETSECURITY = 0x04C4;

IE_SETSECURITY

pub const IE_SETSECURITY = 0x04C5;

IE_GETSEL

pub const IE_GETSEL = 0x04C6;

IE_SETSEL

pub const IE_SETSEL = 0x04C7;

EM_SETBIDIOPTIONS

pub const EM_SETBIDIOPTIONS = 0x04C8;

IE_DOCOMMAND

pub const IE_DOCOMMAND = 0x04C8;

MCIWNDM_NOTIFYMODE

pub const MCIWNDM_NOTIFYMODE = 0x04C8;

EM_GETBIDIOPTIONS

pub const EM_GETBIDIOPTIONS = 0x04C9;

IE_GETCOMMAND

pub const IE_GETCOMMAND = 0x04C9;

EM_SETTYPOGRAPHYOPTIONS

pub const EM_SETTYPOGRAPHYOPTIONS = 0x04CA;

IE_GETCOUNT

pub const IE_GETCOUNT = 0x04CA;

EM_GETTYPOGRAPHYOPTIONS

pub const EM_GETTYPOGRAPHYOPTIONS = 0x04CB;

IE_GETGESTURE

pub const IE_GETGESTURE = 0x04CB;

MCIWNDM_NOTIFYMEDIA

pub const MCIWNDM_NOTIFYMEDIA = 0x04CB;

EM_SETEDITSTYLE

pub const EM_SETEDITSTYLE = 0x04CC;

IE_GETMENU

pub const IE_GETMENU = 0x04CC;

EM_GETEDITSTYLE

pub const EM_GETEDITSTYLE = 0x04CD;

IE_GETPAINTDC

pub const IE_GETPAINTDC = 0x04CD;

MCIWNDM_NOTIFYERROR

pub const MCIWNDM_NOTIFYERROR = 0x04CD;

IE_GETPDEVENT

pub const IE_GETPDEVENT = 0x04CE;

IE_GETSELCOUNT

pub const IE_GETSELCOUNT = 0x04CF;

IE_GETSELITEMS

pub const IE_GETSELITEMS = 0x04D0;

IE_GETSTYLE

pub const IE_GETSTYLE = 0x04D1;

MCIWNDM_SETTIMEFORMATW

pub const MCIWNDM_SETTIMEFORMATW = 0x04DB;

EM_OUTLINE

pub const EM_OUTLINE = 0x04DC;

MCIWNDM_GETTIMEFORMATW

pub const MCIWNDM_GETTIMEFORMATW = 0x04DC;

EM_GETSCROLLPOS

pub const EM_GETSCROLLPOS = 0x04DD;

EM_SETSCROLLPOS

pub const EM_SETSCROLLPOS = 0x04DE;

EM_SETFONTSIZE

pub const EM_SETFONTSIZE = 0x04DF;

EM_GETZOOM

pub const EM_GETZOOM = 0x04E0;

MCIWNDM_GETFILENAMEW

pub const MCIWNDM_GETFILENAMEW = 0x04E0;

EM_SETZOOM

pub const EM_SETZOOM = 0x04E1;

MCIWNDM_GETDEVICEW

pub const MCIWNDM_GETDEVICEW = 0x04E1;

EM_GETVIEWKIND

pub const EM_GETVIEWKIND = 0x04E2;

EM_SETVIEWKIND

pub const EM_SETVIEWKIND = 0x04E3;

EM_GETPAGE

pub const EM_GETPAGE = 0x04E4;

MCIWNDM_GETERRORW

pub const MCIWNDM_GETERRORW = 0x04E4;

EM_SETPAGE

pub const EM_SETPAGE = 0x04E5;

EM_GETHYPHENATEINFO

pub const EM_GETHYPHENATEINFO = 0x04E6;

EM_SETHYPHENATEINFO

pub const EM_SETHYPHENATEINFO = 0x04E7;

EM_GETPAGEROTATE

pub const EM_GETPAGEROTATE = 0x04EB;

EM_SETPAGEROTATE

pub const EM_SETPAGEROTATE = 0x04EC;

EM_GETCTFMODEBIAS

pub const EM_GETCTFMODEBIAS = 0x04ED;

EM_SETCTFMODEBIAS

pub const EM_SETCTFMODEBIAS = 0x04EE;

EM_GETCTFOPENSTATUS

pub const EM_GETCTFOPENSTATUS = 0x04F0;

EM_SETCTFOPENSTATUS

pub const EM_SETCTFOPENSTATUS = 0x04F1;

EM_GETIMECOMPTEXT

pub const EM_GETIMECOMPTEXT = 0x04F2;

EM_ISIME

pub const EM_ISIME = 0x04F3;

EM_GETIMEPROPERTY

pub const EM_GETIMEPROPERTY = 0x04F4;

EM_GETQUERYRTFOBJ

pub const EM_GETQUERYRTFOBJ = 0x050D;

EM_SETQUERYRTFOBJ

pub const EM_SETQUERYRTFOBJ = 0x050E;

FM_GETFOCUS

pub const FM_GETFOCUS = 0x0600;

FM_GETDRIVEINFOA

pub const FM_GETDRIVEINFOA = 0x0601;

FM_GETSELCOUNT

pub const FM_GETSELCOUNT = 0x0602;

FM_GETSELCOUNTLFN

pub const FM_GETSELCOUNTLFN = 0x0603;

FM_GETFILESELA

pub const FM_GETFILESELA = 0x0604;

FM_GETFILESELLFNA

pub const FM_GETFILESELLFNA = 0x0605;

FM_REFRESH_WINDOWS

pub const FM_REFRESH_WINDOWS = 0x0606;

FM_RELOAD_EXTENSIONS

pub const FM_RELOAD_EXTENSIONS = 0x0607;

FM_GETDRIVEINFOW

pub const FM_GETDRIVEINFOW = 0x0611;

FM_GETFILESELW

pub const FM_GETFILESELW = 0x0614;

FM_GETFILESELLFNW

pub const FM_GETFILESELLFNW = 0x0615;

WLX_WM_SAS

pub const WLX_WM_SAS = 0x0659;

SM_GETSELCOUNT

pub const SM_GETSELCOUNT = 0x07E8;

UM_GETSELCOUNT

pub const UM_GETSELCOUNT = 0x07E8;

WM_CPL_LAUNCH

pub const WM_CPL_LAUNCH = 0x07E8;

SM_GETSERVERSELA

pub const SM_GETSERVERSELA = 0x07E9;

UM_GETUSERSELA

pub const UM_GETUSERSELA = 0x07E9;

WM_CPL_LAUNCHED

pub const WM_CPL_LAUNCHED = 0x07E9;

SM_GETSERVERSELW

pub const SM_GETSERVERSELW = 0x07EA;

UM_GETUSERSELW

pub const UM_GETUSERSELW = 0x07EA;

SM_GETCURFOCUSA

pub const SM_GETCURFOCUSA = 0x07EB;

UM_GETGROUPSELA

pub const UM_GETGROUPSELA = 0x07EB;

SM_GETCURFOCUSW

pub const SM_GETCURFOCUSW = 0x07EC;

UM_GETGROUPSELW

pub const UM_GETGROUPSELW = 0x07EC;

SM_GETOPTIONS

pub const SM_GETOPTIONS = 0x07ED;

UM_GETCURFOCUSA

pub const UM_GETCURFOCUSA = 0x07ED;

UM_GETCURFOCUSW

pub const UM_GETCURFOCUSW = 0x07EE;

UM_GETOPTIONS

pub const UM_GETOPTIONS = 0x07EF;

UM_GETOPTIONS2

pub const UM_GETOPTIONS2 = 0x07F0;

LVM_GETBKCOLOR

pub const LVM_GETBKCOLOR = 0x1000;

LVM_SETBKCOLOR

pub const LVM_SETBKCOLOR = 0x1001;

LVM_GETIMAGELIST

pub const LVM_GETIMAGELIST = 0x1002;

LVM_SETIMAGELIST

pub const LVM_SETIMAGELIST = 0x1003;

LVM_GETITEMCOUNT

pub const LVM_GETITEMCOUNT = 0x1004;

LVM_GETITEMA

pub const LVM_GETITEMA = 0x1005;

LVM_SETITEMA

pub const LVM_SETITEMA = 0x1006;

LVM_INSERTITEMA

pub const LVM_INSERTITEMA = 0x1007;

LVM_DELETEITEM

pub const LVM_DELETEITEM = 0x1008;

LVM_DELETEALLITEMS

pub const LVM_DELETEALLITEMS = 0x1009;

LVM_GETCALLBACKMASK

pub const LVM_GETCALLBACKMASK = 0x100A;

LVM_SETCALLBACKMASK

pub const LVM_SETCALLBACKMASK = 0x100B;

LVM_GETNEXTITEM

pub const LVM_GETNEXTITEM = 0x100C;

LVM_FINDITEMA

pub const LVM_FINDITEMA = 0x100D;

LVM_GETITEMRECT

pub const LVM_GETITEMRECT = 0x100E;

LVM_SETITEMPOSITION

pub const LVM_SETITEMPOSITION = 0x100F;

LVM_GETITEMPOSITION

pub const LVM_GETITEMPOSITION = 0x1010;

LVM_GETSTRINGWIDTHA

pub const LVM_GETSTRINGWIDTHA = 0x1011;

LVM_HITTEST

pub const LVM_HITTEST = 0x1012;

LVM_ENSUREVISIBLE

pub const LVM_ENSUREVISIBLE = 0x1013;

LVM_SCROLL

pub const LVM_SCROLL = 0x1014;

LVM_REDRAWITEMS

pub const LVM_REDRAWITEMS = 0x1015;

LVM_ARRANGE

pub const LVM_ARRANGE = 0x1016;

LVM_EDITLABELA

pub const LVM_EDITLABELA = 0x1017;

LVM_GETEDITCONTROL

pub const LVM_GETEDITCONTROL = 0x1018;

LVM_GETCOLUMNA

pub const LVM_GETCOLUMNA = 0x1019;

LVM_SETCOLUMNA

pub const LVM_SETCOLUMNA = 0x101A;

LVM_INSERTCOLUMNA

pub const LVM_INSERTCOLUMNA = 0x101B;

LVM_DELETECOLUMN

pub const LVM_DELETECOLUMN = 0x101C;

LVM_GETCOLUMNWIDTH

pub const LVM_GETCOLUMNWIDTH = 0x101D;

LVM_SETCOLUMNWIDTH

pub const LVM_SETCOLUMNWIDTH = 0x101E;

LVM_GETHEADER

pub const LVM_GETHEADER = 0x101F;

LVM_CREATEDRAGIMAGE

pub const LVM_CREATEDRAGIMAGE = 0x1021;

LVM_GETVIEWRECT

pub const LVM_GETVIEWRECT = 0x1022;

LVM_GETTEXTCOLOR

pub const LVM_GETTEXTCOLOR = 0x1023;

LVM_SETTEXTCOLOR

pub const LVM_SETTEXTCOLOR = 0x1024;

LVM_GETTEXTBKCOLOR

pub const LVM_GETTEXTBKCOLOR = 0x1025;

LVM_SETTEXTBKCOLOR

pub const LVM_SETTEXTBKCOLOR = 0x1026;

LVM_GETTOPINDEX

pub const LVM_GETTOPINDEX = 0x1027;

LVM_GETCOUNTPERPAGE

pub const LVM_GETCOUNTPERPAGE = 0x1028;

LVM_GETORIGIN

pub const LVM_GETORIGIN = 0x1029;

LVM_UPDATE

pub const LVM_UPDATE = 0x102A;

LVM_SETITEMSTATE

pub const LVM_SETITEMSTATE = 0x102B;

LVM_GETITEMSTATE

pub const LVM_GETITEMSTATE = 0x102C;

LVM_GETITEMTEXTA

pub const LVM_GETITEMTEXTA = 0x102D;

LVM_SETITEMTEXTA

pub const LVM_SETITEMTEXTA = 0x102E;

LVM_SETITEMCOUNT

pub const LVM_SETITEMCOUNT = 0x102F;

LVM_SORTITEMS

pub const LVM_SORTITEMS = 0x1030;

LVM_SETITEMPOSITION32

pub const LVM_SETITEMPOSITION32 = 0x1031;

LVM_GETSELECTEDCOUNT

pub const LVM_GETSELECTEDCOUNT = 0x1032;

LVM_GETITEMSPACING

pub const LVM_GETITEMSPACING = 0x1033;

LVM_GETISEARCHSTRINGA

pub const LVM_GETISEARCHSTRINGA = 0x1034;

LVM_SETICONSPACING

pub const LVM_SETICONSPACING = 0x1035;

LVM_SETEXTENDEDLISTVIEWSTYLE

pub const LVM_SETEXTENDEDLISTVIEWSTYLE = 0x1036;

LVM_GETEXTENDEDLISTVIEWSTYLE

pub const LVM_GETEXTENDEDLISTVIEWSTYLE = 0x1037;

LVM_GETSUBITEMRECT

pub const LVM_GETSUBITEMRECT = 0x1038;

LVM_SUBITEMHITTEST

pub const LVM_SUBITEMHITTEST = 0x1039;

LVM_SETCOLUMNORDERARRAY

pub const LVM_SETCOLUMNORDERARRAY = 0x103A;

LVM_GETCOLUMNORDERARRAY

pub const LVM_GETCOLUMNORDERARRAY = 0x103B;

LVM_SETHOTITEM

pub const LVM_SETHOTITEM = 0x103C;

LVM_GETHOTITEM

pub const LVM_GETHOTITEM = 0x103D;

LVM_SETHOTCURSOR

pub const LVM_SETHOTCURSOR = 0x103E;

LVM_GETHOTCURSOR

pub const LVM_GETHOTCURSOR = 0x103F;

LVM_APPROXIMATEVIEWRECT

pub const LVM_APPROXIMATEVIEWRECT = 0x1040;

LVM_SETWORKAREAS

pub const LVM_SETWORKAREAS = 0x1041;

LVM_GETSELECTIONMARK

pub const LVM_GETSELECTIONMARK = 0x1042;

LVM_SETSELECTIONMARK

pub const LVM_SETSELECTIONMARK = 0x1043;

LVM_SETBKIMAGEA

pub const LVM_SETBKIMAGEA = 0x1044;

LVM_GETBKIMAGEA

pub const LVM_GETBKIMAGEA = 0x1045;

LVM_GETWORKAREAS

pub const LVM_GETWORKAREAS = 0x1046;

LVM_SETHOVERTIME

pub const LVM_SETHOVERTIME = 0x1047;

LVM_GETHOVERTIME

pub const LVM_GETHOVERTIME = 0x1048;

LVM_GETNUMBEROFWORKAREAS

pub const LVM_GETNUMBEROFWORKAREAS = 0x1049;

LVM_SETTOOLTIPS

pub const LVM_SETTOOLTIPS = 0x104A;

LVM_GETITEMW

pub const LVM_GETITEMW = 0x104B;

LVM_SETITEMW

pub const LVM_SETITEMW = 0x104C;

LVM_INSERTITEMW

pub const LVM_INSERTITEMW = 0x104D;

LVM_GETTOOLTIPS

pub const LVM_GETTOOLTIPS = 0x104E;

LVM_FINDITEMW

pub const LVM_FINDITEMW = 0x1053;

LVM_GETSTRINGWIDTHW

pub const LVM_GETSTRINGWIDTHW = 0x1057;

LVM_GETCOLUMNW

pub const LVM_GETCOLUMNW = 0x105F;

LVM_SETCOLUMNW

pub const LVM_SETCOLUMNW = 0x1060;

LVM_INSERTCOLUMNW

pub const LVM_INSERTCOLUMNW = 0x1061;

LVM_GETITEMTEXTW

pub const LVM_GETITEMTEXTW = 0x1073;

LVM_SETITEMTEXTW

pub const LVM_SETITEMTEXTW = 0x1074;

LVM_GETISEARCHSTRINGW

pub const LVM_GETISEARCHSTRINGW = 0x1075;

LVM_EDITLABELW

pub const LVM_EDITLABELW = 0x1076;

LVM_GETBKIMAGEW

pub const LVM_GETBKIMAGEW = 0x108B;

LVM_SETSELECTEDCOLUMN

pub const LVM_SETSELECTEDCOLUMN = 0x108C;

LVM_SETTILEWIDTH

pub const LVM_SETTILEWIDTH = 0x108D;

LVM_SETVIEW

pub const LVM_SETVIEW = 0x108E;

LVM_GETVIEW

pub const LVM_GETVIEW = 0x108F;

LVM_INSERTGROUP

pub const LVM_INSERTGROUP = 0x1091;

LVM_SETGROUPINFO

pub const LVM_SETGROUPINFO = 0x1093;

LVM_GETGROUPINFO

pub const LVM_GETGROUPINFO = 0x1095;

LVM_REMOVEGROUP

pub const LVM_REMOVEGROUP = 0x1096;

LVM_MOVEGROUP

pub const LVM_MOVEGROUP = 0x1097;

LVM_MOVEITEMTOGROUP

pub const LVM_MOVEITEMTOGROUP = 0x109A;

LVM_SETGROUPMETRICS

pub const LVM_SETGROUPMETRICS = 0x109B;

LVM_GETGROUPMETRICS

pub const LVM_GETGROUPMETRICS = 0x109C;

LVM_ENABLEGROUPVIEW

pub const LVM_ENABLEGROUPVIEW = 0x109D;

LVM_SORTGROUPS

pub const LVM_SORTGROUPS = 0x109E;

LVM_INSERTGROUPSORTED

pub const LVM_INSERTGROUPSORTED = 0x109F;

LVM_REMOVEALLGROUPS

pub const LVM_REMOVEALLGROUPS = 0x10A0;

LVM_HASGROUP

pub const LVM_HASGROUP = 0x10A1;

LVM_SETTILEVIEWINFO

pub const LVM_SETTILEVIEWINFO = 0x10A2;

LVM_GETTILEVIEWINFO

pub const LVM_GETTILEVIEWINFO = 0x10A3;

LVM_SETTILEINFO

pub const LVM_SETTILEINFO = 0x10A4;

LVM_GETTILEINFO

pub const LVM_GETTILEINFO = 0x10A5;

LVM_SETINSERTMARK

pub const LVM_SETINSERTMARK = 0x10A6;

LVM_GETINSERTMARK

pub const LVM_GETINSERTMARK = 0x10A7;

LVM_INSERTMARKHITTEST

pub const LVM_INSERTMARKHITTEST = 0x10A8;

LVM_GETINSERTMARKRECT

pub const LVM_GETINSERTMARKRECT = 0x10A9;

LVM_SETINSERTMARKCOLOR

pub const LVM_SETINSERTMARKCOLOR = 0x10AA;

LVM_GETINSERTMARKCOLOR

pub const LVM_GETINSERTMARKCOLOR = 0x10AB;

LVM_SETINFOTIP

pub const LVM_SETINFOTIP = 0x10AD;

LVM_GETSELECTEDCOLUMN

pub const LVM_GETSELECTEDCOLUMN = 0x10AE;

LVM_ISGROUPVIEWENABLED

pub const LVM_ISGROUPVIEWENABLED = 0x10AF;

LVM_GETOUTLINECOLOR

pub const LVM_GETOUTLINECOLOR = 0x10B0;

LVM_SETOUTLINECOLOR

pub const LVM_SETOUTLINECOLOR = 0x10B1;

LVM_CANCELEDITLABEL

pub const LVM_CANCELEDITLABEL = 0x10B3;

LVM_MAPINDEXTOID

pub const LVM_MAPINDEXTOID = 0x10B4;

LVM_MAPIDTOINDEX

pub const LVM_MAPIDTOINDEX = 0x10B5;

LVM_ISITEMVISIBLE

pub const LVM_ISITEMVISIBLE = 0x10B6;

OCM__BASE

pub const OCM__BASE = 0x2000;

LVM_SETUNICODEFORMAT

pub const LVM_SETUNICODEFORMAT = 0x2005;

LVM_GETUNICODEFORMAT

pub const LVM_GETUNICODEFORMAT = 0x2006;

OCM_CTLCOLOR

pub const OCM_CTLCOLOR = 0x2019;

OCM_DRAWITEM

pub const OCM_DRAWITEM = 0x202B;

OCM_MEASUREITEM

pub const OCM_MEASUREITEM = 0x202C;

OCM_DELETEITEM

pub const OCM_DELETEITEM = 0x202D;

OCM_VKEYTOITEM

pub const OCM_VKEYTOITEM = 0x202E;

OCM_CHARTOITEM

pub const OCM_CHARTOITEM = 0x202F;

OCM_COMPAREITEM

pub const OCM_COMPAREITEM = 0x2039;

OCM_NOTIFY

pub const OCM_NOTIFY = 0x204E;

OCM_COMMAND

pub const OCM_COMMAND = 0x2111;

OCM_HSCROLL

pub const OCM_HSCROLL = 0x2114;

OCM_VSCROLL

pub const OCM_VSCROLL = 0x2115;

OCM_CTLCOLORMSGBOX

pub const OCM_CTLCOLORMSGBOX = 0x2132;

OCM_CTLCOLOREDIT

pub const OCM_CTLCOLOREDIT = 0x2133;

OCM_CTLCOLORLISTBOX

pub const OCM_CTLCOLORLISTBOX = 0x2134;

OCM_CTLCOLORBTN

pub const OCM_CTLCOLORBTN = 0x2135;

OCM_CTLCOLORDLG

pub const OCM_CTLCOLORDLG = 0x2136;

OCM_CTLCOLORSCROLLBAR

pub const OCM_CTLCOLORSCROLLBAR = 0x2137;

OCM_CTLCOLORSTATIC

pub const OCM_CTLCOLORSTATIC = 0x2138;

OCM_PARENTNOTIFY

pub const OCM_PARENTNOTIFY = 0x2210;

WM_APP

pub const WM_APP = 0x8000;

WM_RASDIALEVENT

pub const WM_RASDIALEVENT = 0xCCCD;

getMessageA()


pub extern "user32" fn GetMessageA(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT) callconv(WINAPI) BOOL;
pub fn getMessageA(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: u32, wMsgFilterMax: u32) !void {
    const r = GetMessageA(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax);
    if (r == 0) return error.Quit;
    if (r != -1) return;
    switch (GetLastError()) {
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

getMessageW()


pub extern "user32" fn GetMessageW(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT) callconv(WINAPI) BOOL;
pub var pfnGetMessageW: *const @TypeOf(GetMessageW) = undefined;
pub fn getMessageW(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: u32, wMsgFilterMax: u32) !void {
    const function = selectSymbol(GetMessageW, pfnGetMessageW, .win2k);

PM_NOREMOVE


    const r = function(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax);
    if (r == 0) return error.Quit;
    if (r != -1) return;
    switch (GetLastError()) {
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

PM_REMOVE


pub const PM_NOREMOVE = 0x0000;
pub const PM_REMOVE = 0x0001;

PM_NOYIELD

pub const PM_NOYIELD = 0x0002;

peekMessageA()


pub extern "user32" fn PeekMessageA(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT) callconv(WINAPI) BOOL;
pub fn peekMessageA(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: u32, wMsgFilterMax: u32, wRemoveMsg: u32) !bool {
    const r = PeekMessageA(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
    if (r == 0) return false;
    if (r != -1) return true;
    switch (GetLastError()) {
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

peekMessageW()


pub extern "user32" fn PeekMessageW(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT) callconv(WINAPI) BOOL;
pub var pfnPeekMessageW: *const @TypeOf(PeekMessageW) = undefined;
pub fn peekMessageW(lpMsg: *MSG, hWnd: ?HWND, wMsgFilterMin: u32, wMsgFilterMax: u32, wRemoveMsg: u32) !bool {
    const function = selectSymbol(PeekMessageW, pfnPeekMessageW, .win2k);

translateMessage()


    const r = function(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
    if (r == 0) return false;
    if (r != -1) return true;
    switch (GetLastError()) {
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

dispatchMessageA()


pub extern "user32" fn TranslateMessage(lpMsg: *const MSG) callconv(WINAPI) BOOL;
pub fn translateMessage(lpMsg: *const MSG) bool {
    return if (TranslateMessage(lpMsg) == 0) false else true;
}

dispatchMessageW()


pub extern "user32" fn DispatchMessageA(lpMsg: *const MSG) callconv(WINAPI) LRESULT;
pub fn dispatchMessageA(lpMsg: *const MSG) LRESULT {
    return DispatchMessageA(lpMsg);
}

postQuitMessage()


pub extern "user32" fn DispatchMessageW(lpMsg: *const MSG) callconv(WINAPI) LRESULT;
pub var pfnDispatchMessageW: *const @TypeOf(DispatchMessageW) = undefined;
pub fn dispatchMessageW(lpMsg: *const MSG) LRESULT {
    const function = selectSymbol(DispatchMessageW, pfnDispatchMessageW, .win2k);
    return function(lpMsg);
}

defWindowProcA()


pub extern "user32" fn PostQuitMessage(nExitCode: i32) callconv(WINAPI) void;
pub fn postQuitMessage(nExitCode: i32) void {
    PostQuitMessage(nExitCode);
}

defWindowProcW()


pub extern "user32" fn DefWindowProcA(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) callconv(WINAPI) LRESULT;
pub fn defWindowProcA(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) LRESULT {
    return DefWindowProcA(hWnd, Msg, wParam, lParam);
}

CS_VREDRAW


pub extern "user32" fn DefWindowProcW(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) callconv(WINAPI) LRESULT;
pub var pfnDefWindowProcW: *const @TypeOf(DefWindowProcW) = undefined;
pub fn defWindowProcW(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) LRESULT {
    const function = selectSymbol(DefWindowProcW, pfnDefWindowProcW, .win2k);
    return function(hWnd, Msg, wParam, lParam);
}

CS_HREDRAW


// === Windows ===

CS_DBLCLKS


pub const CS_VREDRAW = 0x0001;
pub const CS_HREDRAW = 0x0002;
pub const CS_DBLCLKS = 0x0008;

CS_OWNDC

pub const CS_OWNDC = 0x0020;

CS_CLASSDC

pub const CS_CLASSDC = 0x0040;

CS_PARENTDC

pub const CS_PARENTDC = 0x0080;

CS_NOCLOSE

pub const CS_NOCLOSE = 0x0200;

CS_SAVEBITS

pub const CS_SAVEBITS = 0x0800;

CS_BYTEALIGNCLIENT

pub const CS_BYTEALIGNCLIENT = 0x1000;

CS_BYTEALIGNWINDOW

pub const CS_BYTEALIGNWINDOW = 0x2000;

CS_GLOBALCLASS

pub const CS_GLOBALCLASS = 0x4000;

WNDCLASSEXA


pub const WNDCLASSEXA = extern struct {
    cbSize: UINT = @sizeOf(WNDCLASSEXA),
    style: UINT,
    lpfnWndProc: WNDPROC,
    cbClsExtra: i32 = 0,
    cbWndExtra: i32 = 0,
    hInstance: HINSTANCE,
    hIcon: ?HICON,
    hCursor: ?HCURSOR,
    hbrBackground: ?HBRUSH,
    lpszMenuName: ?[*:0]const u8,
    lpszClassName: [*:0]const u8,
    hIconSm: ?HICON,
};

WNDCLASSEXW


pub const WNDCLASSEXW = extern struct {
    cbSize: UINT = @sizeOf(WNDCLASSEXW),
    style: UINT,
    lpfnWndProc: WNDPROC,
    cbClsExtra: i32 = 0,
    cbWndExtra: i32 = 0,
    hInstance: HINSTANCE,
    hIcon: ?HICON,
    hCursor: ?HCURSOR,
    hbrBackground: ?HBRUSH,
    lpszMenuName: ?[*:0]const u16,
    lpszClassName: [*:0]const u16,
    hIconSm: ?HICON,
};

registerClassExA()


pub extern "user32" fn RegisterClassExA(*const WNDCLASSEXA) callconv(WINAPI) ATOM;
pub fn registerClassExA(window_class: *const WNDCLASSEXA) !ATOM {
    const atom = RegisterClassExA(window_class);
    if (atom != 0) return atom;
    switch (GetLastError()) {
        .CLASS_ALREADY_EXISTS => return error.AlreadyExists,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

registerClassExW()


pub extern "user32" fn RegisterClassExW(*const WNDCLASSEXW) callconv(WINAPI) ATOM;
pub var pfnRegisterClassExW: *const @TypeOf(RegisterClassExW) = undefined;
pub fn registerClassExW(window_class: *const WNDCLASSEXW) !ATOM {
    const function = selectSymbol(RegisterClassExW, pfnRegisterClassExW, .win2k);
    const atom = function(window_class);
    if (atom != 0) return atom;
    switch (GetLastError()) {
        .CLASS_ALREADY_EXISTS => return error.AlreadyExists,
        .CALL_NOT_IMPLEMENTED => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

unregisterClassA()


pub extern "user32" fn UnregisterClassA(lpClassName: [*:0]const u8, hInstance: HINSTANCE) callconv(WINAPI) BOOL;
pub fn unregisterClassA(lpClassName: [*:0]const u8, hInstance: HINSTANCE) !void {
    if (UnregisterClassA(lpClassName, hInstance) == 0) {
        switch (GetLastError()) {
            .CLASS_DOES_NOT_EXIST => return error.ClassDoesNotExist,
            else => |err| return windows.unexpectedError(err),
        }
    }
}

unregisterClassW()


pub extern "user32" fn UnregisterClassW(lpClassName: [*:0]const u16, hInstance: HINSTANCE) callconv(WINAPI) BOOL;
pub var pfnUnregisterClassW: *const @TypeOf(UnregisterClassW) = undefined;
pub fn unregisterClassW(lpClassName: [*:0]const u16, hInstance: HINSTANCE) !void {
    const function = selectSymbol(UnregisterClassW, pfnUnregisterClassW, .win2k);
    if (function(lpClassName, hInstance) == 0) {
        switch (GetLastError()) {
            .CLASS_DOES_NOT_EXIST => return error.ClassDoesNotExist,
            else => |err| return windows.unexpectedError(err),
        }
    }
}

WS_OVERLAPPED


pub const WS_OVERLAPPED = 0x00000000;

WS_POPUP

pub const WS_POPUP = 0x80000000;

WS_CHILD

pub const WS_CHILD = 0x40000000;

WS_MINIMIZE

pub const WS_MINIMIZE = 0x20000000;

WS_VISIBLE

pub const WS_VISIBLE = 0x10000000;

WS_DISABLED

pub const WS_DISABLED = 0x08000000;

WS_CLIPSIBLINGS

pub const WS_CLIPSIBLINGS = 0x04000000;

WS_CLIPCHILDREN

pub const WS_CLIPCHILDREN = 0x02000000;

WS_MAXIMIZE

pub const WS_MAXIMIZE = 0x01000000;

WS_CAPTION

pub const WS_CAPTION = WS_BORDER | WS_DLGFRAME;

WS_BORDER

pub const WS_BORDER = 0x00800000;

WS_DLGFRAME

pub const WS_DLGFRAME = 0x00400000;

WS_VSCROLL

pub const WS_VSCROLL = 0x00200000;

WS_HSCROLL

pub const WS_HSCROLL = 0x00100000;

WS_SYSMENU

pub const WS_SYSMENU = 0x00080000;

WS_THICKFRAME

pub const WS_THICKFRAME = 0x00040000;

WS_GROUP

pub const WS_GROUP = 0x00020000;

WS_TABSTOP

pub const WS_TABSTOP = 0x00010000;

WS_MINIMIZEBOX

pub const WS_MINIMIZEBOX = 0x00020000;

WS_MAXIMIZEBOX

pub const WS_MAXIMIZEBOX = 0x00010000;

WS_TILED

pub const WS_TILED = WS_OVERLAPPED;

WS_ICONIC

pub const WS_ICONIC = WS_MINIMIZE;

WS_SIZEBOX

pub const WS_SIZEBOX = WS_THICKFRAME;

WS_TILEDWINDOW

pub const WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW;

WS_OVERLAPPEDWINDOW

pub const WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;

WS_POPUPWINDOW

pub const WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU;

WS_CHILDWINDOW

pub const WS_CHILDWINDOW = WS_CHILD;

WS_EX_DLGMODALFRAME


pub const WS_EX_DLGMODALFRAME = 0x00000001;

WS_EX_NOPARENTNOTIFY

pub const WS_EX_NOPARENTNOTIFY = 0x00000004;

WS_EX_TOPMOST

pub const WS_EX_TOPMOST = 0x00000008;

WS_EX_ACCEPTFILES

pub const WS_EX_ACCEPTFILES = 0x00000010;

WS_EX_TRANSPARENT

pub const WS_EX_TRANSPARENT = 0x00000020;

WS_EX_MDICHILD

pub const WS_EX_MDICHILD = 0x00000040;

WS_EX_TOOLWINDOW

pub const WS_EX_TOOLWINDOW = 0x00000080;

WS_EX_WINDOWEDGE

pub const WS_EX_WINDOWEDGE = 0x00000100;

WS_EX_CLIENTEDGE

pub const WS_EX_CLIENTEDGE = 0x00000200;

WS_EX_CONTEXTHELP

pub const WS_EX_CONTEXTHELP = 0x00000400;

WS_EX_RIGHT

pub const WS_EX_RIGHT = 0x00001000;

WS_EX_LEFT

pub const WS_EX_LEFT = 0x00000000;

WS_EX_RTLREADING

pub const WS_EX_RTLREADING = 0x00002000;

WS_EX_LTRREADING

pub const WS_EX_LTRREADING = 0x00000000;

WS_EX_LEFTSCROLLBAR

pub const WS_EX_LEFTSCROLLBAR = 0x00004000;

WS_EX_RIGHTSCROLLBAR

pub const WS_EX_RIGHTSCROLLBAR = 0x00000000;

WS_EX_CONTROLPARENT

pub const WS_EX_CONTROLPARENT = 0x00010000;

WS_EX_STATICEDGE

pub const WS_EX_STATICEDGE = 0x00020000;

WS_EX_APPWINDOW

pub const WS_EX_APPWINDOW = 0x00040000;

WS_EX_LAYERED

pub const WS_EX_LAYERED = 0x00080000;

WS_EX_OVERLAPPEDWINDOW

pub const WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE;

WS_EX_PALETTEWINDOW

pub const WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST;

CW_USEDEFAULT:


pub const CW_USEDEFAULT: i32 = @bitCast(@as(u32, 0x80000000));

createWindowExA()


pub extern "user32" fn CreateWindowExA(dwExStyle: DWORD, lpClassName: [*:0]const u8, lpWindowName: [*:0]const u8, dwStyle: DWORD, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?LPVOID) callconv(WINAPI) ?HWND;
pub fn createWindowExA(dwExStyle: u32, lpClassName: [*:0]const u8, lpWindowName: [*:0]const u8, dwStyle: u32, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?*anyopaque) !HWND {
    const window = CreateWindowExA(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWindParent, hMenu, hInstance, lpParam);
    if (window) |win| return win;

createWindowExW()


    switch (GetLastError()) {
        .CLASS_DOES_NOT_EXIST => return error.ClassDoesNotExist,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

destroyWindow()


pub extern "user32" fn CreateWindowExW(dwExStyle: DWORD, lpClassName: [*:0]const u16, lpWindowName: [*:0]const u16, dwStyle: DWORD, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?LPVOID) callconv(WINAPI) ?HWND;
pub var pfnCreateWindowExW: *const @TypeOf(CreateWindowExW) = undefined;
pub fn createWindowExW(dwExStyle: u32, lpClassName: [*:0]const u16, lpWindowName: [*:0]const u16, dwStyle: u32, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?*anyopaque) !HWND {
    const function = selectSymbol(CreateWindowExW, pfnCreateWindowExW, .win2k);
    const window = function(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWindParent, hMenu, hInstance, lpParam);
    if (window) |win| return win;

SW_HIDE


    switch (GetLastError()) {
        .CLASS_DOES_NOT_EXIST => return error.ClassDoesNotExist,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

SW_SHOWNORMAL


pub extern "user32" fn DestroyWindow(hWnd: HWND) callconv(WINAPI) BOOL;
pub fn destroyWindow(hWnd: HWND) !void {
    if (DestroyWindow(hWnd) == 0) {
        switch (GetLastError()) {
            .INVALID_WINDOW_HANDLE => unreachable,
            .INVALID_PARAMETER => unreachable,
            else => |err| return windows.unexpectedError(err),
        }
    }
}

SW_NORMAL


pub const SW_HIDE = 0;
pub const SW_SHOWNORMAL = 1;
pub const SW_NORMAL = 1;

SW_SHOWMINIMIZED

pub const SW_SHOWMINIMIZED = 2;

SW_SHOWMAXIMIZED

pub const SW_SHOWMAXIMIZED = 3;

SW_MAXIMIZE

pub const SW_MAXIMIZE = 3;

SW_SHOWNOACTIVATE

pub const SW_SHOWNOACTIVATE = 4;

SW_SHOW

pub const SW_SHOW = 5;

SW_MINIMIZE

pub const SW_MINIMIZE = 6;

SW_SHOWMINNOACTIVE

pub const SW_SHOWMINNOACTIVE = 7;

SW_SHOWNA

pub const SW_SHOWNA = 8;

SW_RESTORE

pub const SW_RESTORE = 9;

SW_SHOWDEFAULT

pub const SW_SHOWDEFAULT = 10;

SW_FORCEMINIMIZE

pub const SW_FORCEMINIMIZE = 11;

SW_MAX

pub const SW_MAX = 11;

showWindow()


pub extern "user32" fn ShowWindow(hWnd: HWND, nCmdShow: i32) callconv(WINAPI) BOOL;
pub fn showWindow(hWnd: HWND, nCmdShow: i32) bool {
    return (ShowWindow(hWnd, nCmdShow) == TRUE);
}

updateWindow()


pub extern "user32" fn UpdateWindow(hWnd: HWND) callconv(WINAPI) BOOL;
pub fn updateWindow(hWnd: HWND) !void {
    if (UpdateWindow(hWnd) == 0) {
        switch (GetLastError()) {
            .INVALID_WINDOW_HANDLE => unreachable,
            .INVALID_PARAMETER => unreachable,
            else => |err| return windows.unexpectedError(err),
        }
    }
}

adjustWindowRectEx()


pub extern "user32" fn AdjustWindowRectEx(lpRect: *RECT, dwStyle: DWORD, bMenu: BOOL, dwExStyle: DWORD) callconv(WINAPI) BOOL;
pub fn adjustWindowRectEx(lpRect: *RECT, dwStyle: u32, bMenu: bool, dwExStyle: u32) !void {
    assert(dwStyle & WS_OVERLAPPED == 0);

GWL_WNDPROC


    if (AdjustWindowRectEx(lpRect, dwStyle, @intFromBool(bMenu), dwExStyle) == 0) {
        switch (GetLastError()) {
            .INVALID_PARAMETER => unreachable,
            else => |err| return windows.unexpectedError(err),
        }
    }
}

GWL_HINSTANCE


pub const GWL_WNDPROC = -4;
pub const GWL_HINSTANCE = -6;

GWL_HWNDPARENT

pub const GWL_HWNDPARENT = -8;

GWL_STYLE

pub const GWL_STYLE = -16;

GWL_EXSTYLE

pub const GWL_EXSTYLE = -20;

GWL_USERDATA

pub const GWL_USERDATA = -21;

GWL_ID

pub const GWL_ID = -12;

getWindowLongA()


pub extern "user32" fn GetWindowLongA(hWnd: HWND, nIndex: i32) callconv(WINAPI) LONG;
pub fn getWindowLongA(hWnd: HWND, nIndex: i32) !i32 {
    const value = GetWindowLongA(hWnd, nIndex);
    if (value != 0) return value;

getWindowLongW()


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

getWindowLongPtrA()


pub extern "user32" fn GetWindowLongW(hWnd: HWND, nIndex: i32) callconv(WINAPI) LONG;
pub var pfnGetWindowLongW: *const @TypeOf(GetWindowLongW) = undefined;
pub fn getWindowLongW(hWnd: HWND, nIndex: i32) !i32 {
    const function = selectSymbol(GetWindowLongW, pfnGetWindowLongW, .win2k);

getWindowLongPtrW()


    const value = function(hWnd, nIndex);
    if (value != 0) return value;

setWindowLongA()


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

setWindowLongW()


pub extern "user32" fn GetWindowLongPtrA(hWnd: HWND, nIndex: i32) callconv(WINAPI) LONG_PTR;
pub fn getWindowLongPtrA(hWnd: HWND, nIndex: i32) !isize {
    // "When compiling for 32-bit Windows, GetWindowLongPtr is defined as a call to the GetWindowLong function."
    // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowlongptrw
    if (@sizeOf(LONG_PTR) == 4) return getWindowLongA(hWnd, nIndex);

setWindowLongPtrA()


    const value = GetWindowLongPtrA(hWnd, nIndex);
    if (value != 0) return value;

setWindowLongPtrW()


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

getDC()


pub extern "user32" fn GetWindowLongPtrW(hWnd: HWND, nIndex: i32) callconv(WINAPI) LONG_PTR;
pub var pfnGetWindowLongPtrW: *const @TypeOf(GetWindowLongPtrW) = undefined;
pub fn getWindowLongPtrW(hWnd: HWND, nIndex: i32) !isize {
    if (@sizeOf(LONG_PTR) == 4) return getWindowLongW(hWnd, nIndex);
    const function = selectSymbol(GetWindowLongPtrW, pfnGetWindowLongPtrW, .win2k);

releaseDC()


    const value = function(hWnd, nIndex);
    if (value != 0) return value;

MB_OK


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

MB_OKCANCEL


pub extern "user32" fn SetWindowLongA(hWnd: HWND, nIndex: i32, dwNewLong: LONG) callconv(WINAPI) LONG;
pub fn setWindowLongA(hWnd: HWND, nIndex: i32, dwNewLong: i32) !i32 {
    // [...] you should clear the last error information by calling SetLastError with 0 before calling SetWindowLong.
    // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowlonga
    SetLastError(.SUCCESS);

MB_ABORTRETRYIGNORE


    const value = SetWindowLongA(hWnd, nIndex, dwNewLong);
    if (value != 0) return value;

MB_YESNOCANCEL


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

MB_YESNO


pub extern "user32" fn SetWindowLongW(hWnd: HWND, nIndex: i32, dwNewLong: LONG) callconv(WINAPI) LONG;
pub var pfnSetWindowLongW: *const @TypeOf(SetWindowLongW) = undefined;
pub fn setWindowLongW(hWnd: HWND, nIndex: i32, dwNewLong: i32) !i32 {
    const function = selectSymbol(SetWindowLongW, pfnSetWindowLongW, .win2k);

MB_RETRYCANCEL


    SetLastError(.SUCCESS);
    const value = function(hWnd, nIndex, dwNewLong);
    if (value != 0) return value;

MB_CANCELTRYCONTINUE


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

MB_ICONHAND


pub extern "user32" fn SetWindowLongPtrA(hWnd: HWND, nIndex: i32, dwNewLong: LONG_PTR) callconv(WINAPI) LONG_PTR;
pub fn setWindowLongPtrA(hWnd: HWND, nIndex: i32, dwNewLong: isize) !isize {
    // "When compiling for 32-bit Windows, GetWindowLongPtr is defined as a call to the GetWindowLong function."
    // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowlongptrw
    if (@sizeOf(LONG_PTR) == 4) return setWindowLongA(hWnd, nIndex, dwNewLong);

MB_ICONQUESTION


    SetLastError(.SUCCESS);
    const value = SetWindowLongPtrA(hWnd, nIndex, dwNewLong);
    if (value != 0) return value;

MB_ICONEXCLAMATION


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

MB_ICONASTERISK


pub extern "user32" fn SetWindowLongPtrW(hWnd: HWND, nIndex: i32, dwNewLong: LONG_PTR) callconv(WINAPI) LONG_PTR;
pub var pfnSetWindowLongPtrW: *const @TypeOf(SetWindowLongPtrW) = undefined;
pub fn setWindowLongPtrW(hWnd: HWND, nIndex: i32, dwNewLong: isize) !isize {
    if (@sizeOf(LONG_PTR) == 4) return setWindowLongW(hWnd, nIndex, dwNewLong);
    const function = selectSymbol(SetWindowLongPtrW, pfnSetWindowLongPtrW, .win2k);

MB_USERICON


    SetLastError(.SUCCESS);
    const value = function(hWnd, nIndex, dwNewLong);
    if (value != 0) return value;

MB_ICONWARNING


    switch (GetLastError()) {
        .SUCCESS => return 0,
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

MB_ICONERROR


pub extern "user32" fn GetDC(hWnd: ?HWND) callconv(WINAPI) ?HDC;
pub fn getDC(hWnd: ?HWND) !HDC {
    const hdc = GetDC(hWnd);
    if (hdc) |h| return h;

MB_ICONINFORMATION


    switch (GetLastError()) {
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

MB_ICONSTOP


pub extern "user32" fn ReleaseDC(hWnd: ?HWND, hDC: HDC) callconv(WINAPI) i32;
pub fn releaseDC(hWnd: ?HWND, hDC: HDC) bool {
    return if (ReleaseDC(hWnd, hDC) == 1) true else false;
}

MB_DEFBUTTON1


// === Modal dialogue boxes ===

MB_DEFBUTTON2


pub const MB_OK = 0x00000000;
pub const MB_OKCANCEL = 0x00000001;
pub const MB_ABORTRETRYIGNORE = 0x00000002;
pub const MB_YESNOCANCEL = 0x00000003;
pub const MB_YESNO = 0x00000004;
pub const MB_RETRYCANCEL = 0x00000005;
pub const MB_CANCELTRYCONTINUE = 0x00000006;
pub const MB_ICONHAND = 0x00000010;
pub const MB_ICONQUESTION = 0x00000020;
pub const MB_ICONEXCLAMATION = 0x00000030;
pub const MB_ICONASTERISK = 0x00000040;
pub const MB_USERICON = 0x00000080;
pub const MB_ICONWARNING = MB_ICONEXCLAMATION;
pub const MB_ICONERROR = MB_ICONHAND;
pub const MB_ICONINFORMATION = MB_ICONASTERISK;
pub const MB_ICONSTOP = MB_ICONHAND;
pub const MB_DEFBUTTON1 = 0x00000000;
pub const MB_DEFBUTTON2 = 0x00000100;

MB_DEFBUTTON3

pub const MB_DEFBUTTON3 = 0x00000200;

MB_DEFBUTTON4

pub const MB_DEFBUTTON4 = 0x00000300;

MB_APPLMODAL

pub const MB_APPLMODAL = 0x00000000;

MB_SYSTEMMODAL

pub const MB_SYSTEMMODAL = 0x00001000;

MB_TASKMODAL

pub const MB_TASKMODAL = 0x00002000;

MB_HELP

pub const MB_HELP = 0x00004000;

MB_NOFOCUS

pub const MB_NOFOCUS = 0x00008000;

MB_SETFOREGROUND

pub const MB_SETFOREGROUND = 0x00010000;

MB_DEFAULT_DESKTOP_ONLY

pub const MB_DEFAULT_DESKTOP_ONLY = 0x00020000;

MB_TOPMOST

pub const MB_TOPMOST = 0x00040000;

MB_RIGHT

pub const MB_RIGHT = 0x00080000;

MB_RTLREADING

pub const MB_RTLREADING = 0x00100000;

MB_TYPEMASK

pub const MB_TYPEMASK = 0x0000000F;

MB_ICONMASK

pub const MB_ICONMASK = 0x000000F0;

MB_DEFMASK

pub const MB_DEFMASK = 0x00000F00;

MB_MODEMASK

pub const MB_MODEMASK = 0x00003000;

MB_MISCMASK

pub const MB_MISCMASK = 0x0000C000;

IDOK


pub const IDOK = 1;

IDCANCEL

pub const IDCANCEL = 2;

IDABORT

pub const IDABORT = 3;

IDRETRY

pub const IDRETRY = 4;

IDIGNORE

pub const IDIGNORE = 5;

IDYES

pub const IDYES = 6;

IDNO

pub const IDNO = 7;

IDCLOSE

pub const IDCLOSE = 8;

IDHELP

pub const IDHELP = 9;

IDTRYAGAIN

pub const IDTRYAGAIN = 10;

IDCONTINUE

pub const IDCONTINUE = 11;

messageBoxA()


pub extern "user32" fn MessageBoxA(hWnd: ?HWND, lpText: [*:0]const u8, lpCaption: [*:0]const u8, uType: UINT) callconv(WINAPI) i32;
pub fn messageBoxA(hWnd: ?HWND, lpText: [*:0]const u8, lpCaption: [*:0]const u8, uType: u32) !i32 {
    const value = MessageBoxA(hWnd, lpText, lpCaption, uType);
    if (value != 0) return value;
    switch (GetLastError()) {
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}

messageBoxW()


pub extern "user32" fn MessageBoxW(hWnd: ?HWND, lpText: [*:0]const u16, lpCaption: ?[*:0]const u16, uType: UINT) callconv(WINAPI) i32;
pub var pfnMessageBoxW: *const @TypeOf(MessageBoxW) = undefined;
pub fn messageBoxW(hWnd: ?HWND, lpText: [*:0]const u16, lpCaption: [*:0]const u16, uType: u32) !i32 {
    const function = selectSymbol(MessageBoxW, pfnMessageBoxW, .win2k);
    const value = function(hWnd, lpText, lpCaption, uType);
    if (value != 0) return value;
    switch (GetLastError()) {
        .INVALID_WINDOW_HANDLE => unreachable,
        .INVALID_PARAMETER => unreachable,
        else => |err| return windows.unexpectedError(err),
    }
}