namespace Cryville.Common.Unity.Input {
	public enum WindowMessages : uint {
		WM_NULL                       = 0x0000,
		WM_CREATE                     = 0x0001,
		WM_DESTROY                    = 0x0002,
		WM_MOVE                       = 0x0003,
		WM_SIZE                       = 0x0005,

		WM_ACTIVATE                   = 0x0006,
/*
 * WM_ACTIVATE state values
 */
	    WA_INACTIVE    = 0,
	    WA_ACTIVE      = 1,
	    WA_CLICKACTIVE = 2,

		WM_SETFOCUS                   = 0x0007,
		WM_KILLFOCUS                  = 0x0008,
		WM_ENABLE                     = 0x000A,
		WM_SETREDRAW                  = 0x000B,
		WM_SETTEXT                    = 0x000C,
		WM_GETTEXT                    = 0x000D,
		WM_GETTEXTLENGTH              = 0x000E,
		WM_PAINT                      = 0x000F,
		WM_CLOSE                      = 0x0010,
//#ifndef _WIN32_WCE
		WM_QUERYENDSESSION            = 0x0011,
		WM_QUERYOPEN                  = 0x0013,
		WM_ENDSESSION                 = 0x0016,
//#endif
		WM_QUIT                       = 0x0012,
		WM_ERASEBKGND                 = 0x0014,
		WM_SYSCOLORCHANGE             = 0x0015,
		WM_SHOWWINDOW                 = 0x0018,
		WM_WININICHANGE               = 0x001A,
//#if(WINVER >= 0x0400)
		WM_SETTINGCHANGE              = WM_WININICHANGE,
//#endif /* WINVER >= 0x0400 */


		WM_DEVMODECHANGE              = 0x001B,
		WM_ACTIVATEAPP                = 0x001C,
		WM_FONTCHANGE                 = 0x001D,
		WM_TIMECHANGE                 = 0x001E,
		WM_CANCELMODE                 = 0x001F,
		WM_SETCURSOR                  = 0x0020,
		WM_MOUSEACTIVATE              = 0x0021,
		WM_CHILDACTIVATE              = 0x0022,
		WM_QUEUESYNC                  = 0x0023,

		WM_GETMINMAXINFO              = 0x0024,
		WM_PAINTICON                  = 0x0026,
		WM_ICONERASEBKGND             = 0x0027,
		WM_NEXTDLGCTL                 = 0x0028,
		WM_SPOOLERSTATUS              = 0x002A,
		WM_DRAWITEM                   = 0x002B,
		WM_MEASUREITEM                = 0x002C,
		WM_DELETEITEM                 = 0x002D,
		WM_VKEYTOITEM                 = 0x002E,
		WM_CHARTOITEM                 = 0x002F,
		WM_SETFONT                    = 0x0030,
		WM_GETFONT                    = 0x0031,
		WM_SETHOTKEY                  = 0x0032,
		WM_GETHOTKEY                  = 0x0033,
		WM_QUERYDRAGICON              = 0x0037,
		WM_COMPAREITEM                = 0x0039,
//#if(WINVER >= 0x0500)
//#ifndef _WIN32_WCE
		WM_GETOBJECT                  = 0x003D,
//#endif
//#endif /* WINVER >= 0x0500 */
		WM_COMPACTING                 = 0x0041,
		WM_COMMNOTIFY                 = 0x0044,  /* no longer suported */
		WM_WINDOWPOSCHANGING          = 0x0046,
		WM_WINDOWPOSCHANGED           = 0x0047,

		WM_POWER                      = 0x0048,
/*
 * wParam for WM_POWER window message and DRV_POWER driver notification
 */
		/*PWR_OK             = 1,
		PWR_FAIL           = (-1),
		PWR_SUSPENDREQUEST = 1,
		PWR_SUSPENDRESUME  = 2,
		PWR_CRITICALRESUME = 3,*/

		WM_COPYDATA                   = 0x004A,
		WM_CANCELJOURNAL              = 0x004B,


//#if(WINVER >= 0x0400)
		WM_NOTIFY                     = 0x004E,
		WM_INPUTLANGCHANGEREQUEST     = 0x0050,
		WM_INPUTLANGCHANGE            = 0x0051,
		WM_TCARD                      = 0x0052,
		WM_HELP                       = 0x0053,
		WM_USERCHANGED                = 0x0054,
		WM_NOTIFYFORMAT               = 0x0055,

		NFR_ANSI                      =      1,
		NFR_UNICODE                   =      2,
		NF_QUERY                      =      3,
		NF_REQUERY                    =      4,

		WM_CONTEXTMENU                = 0x007B,
		WM_STYLECHANGING              = 0x007C,
		WM_STYLECHANGED               = 0x007D,
		WM_DISPLAYCHANGE              = 0x007E,
		WM_GETICON                    = 0x007F,
		WM_SETICON                    = 0x0080,
//#endif /* WINVER >= 0x0400 */

		WM_NCCREATE                   = 0x0081,
		WM_NCDESTROY                  = 0x0082,
		WM_NCCALCSIZE                 = 0x0083,
		WM_NCHITTEST                  = 0x0084,
		WM_NCPAINT                    = 0x0085,
		WM_NCACTIVATE                 = 0x0086,
		WM_GETDLGCODE                 = 0x0087,
//#ifndef _WIN32_WCE
		WM_SYNCPAINT                  = 0x0088,
//#endif
		WM_NCMOUSEMOVE                = 0x00A0,
		WM_NCLBUTTONDOWN              = 0x00A1,
		WM_NCLBUTTONUP                = 0x00A2,
		WM_NCLBUTTONDBLCLK            = 0x00A3,
		WM_NCRBUTTONDOWN              = 0x00A4,
		WM_NCRBUTTONUP                = 0x00A5,
		WM_NCRBUTTONDBLCLK            = 0x00A6,
		WM_NCMBUTTONDOWN              = 0x00A7,
		WM_NCMBUTTONUP                = 0x00A8,
		WM_NCMBUTTONDBLCLK            = 0x00A9,



//#if(_WIN32_WINNT >= 0x0500)
		WM_NCXBUTTONDOWN              = 0x00AB,
		WM_NCXBUTTONUP                = 0x00AC,
		WM_NCXBUTTONDBLCLK            = 0x00AD,
//#endif /* _WIN32_WINNT >= 0x0500 */


//#if(_WIN32_WINNT >= 0x0501)
		WM_INPUT_DEVICE_CHANGE        = 0x00FE,
//#endif /* _WIN32_WINNT >= 0x0501 */

//#if(_WIN32_WINNT >= 0x0501)
		WM_INPUT                      = 0x00FF,
//#endif /* _WIN32_WINNT >= 0x0501 */

		WM_KEYFIRST                   = 0x0100,
		WM_KEYDOWN                    = 0x0100,
		WM_KEYUP                      = 0x0101,
		WM_CHAR                       = 0x0102,
		WM_DEADCHAR                   = 0x0103,
		WM_SYSKEYDOWN                 = 0x0104,
		WM_SYSKEYUP                   = 0x0105,
		WM_SYSCHAR                    = 0x0106,
		WM_SYSDEADCHAR                = 0x0107,
//#if(_WIN32_WINNT >= 0x0501)
		WM_UNICHAR                    = 0x0109,
		WM_KEYLAST                    = 0x0109,
		UNICODE_NOCHAR                = 0xFFFF,
//#else
		WM_KEYLAST__WIN2000           = 0x0108,
//#endif /* _WIN32_WINNT >= 0x0501 */

//#if(WINVER >= 0x0400)
		WM_IME_STARTCOMPOSITION       = 0x010D,
		WM_IME_ENDCOMPOSITION         = 0x010E,
		WM_IME_COMPOSITION            = 0x010F,
		WM_IME_KEYLAST                = 0x010F,
//#endif /* WINVER >= 0x0400 */

		WM_INITDIALOG                 = 0x0110,
		WM_COMMAND                    = 0x0111,
		WM_SYSCOMMAND                 = 0x0112,
		WM_TIMER                      = 0x0113,
		WM_HSCROLL                    = 0x0114,
		WM_VSCROLL                    = 0x0115,
		WM_INITMENU                   = 0x0116,
		WM_INITMENUPOPUP              = 0x0117,
//#if(WINVER >= 0x0601)
		WM_GESTURE                    = 0x0119,
		WM_GESTURENOTIFY              = 0x011A,
//#endif /* WINVER >= 0x0601 */
		WM_MENUSELECT                 = 0x011F,
		WM_MENUCHAR                   = 0x0120,
		WM_ENTERIDLE                  = 0x0121,
//#if(WINVER >= 0x0500)
//#ifndef _WIN32_WCE
		WM_MENURBUTTONUP              = 0x0122,
		WM_MENUDRAG                   = 0x0123,
		WM_MENUGETOBJECT              = 0x0124,
		WM_UNINITMENUPOPUP            = 0x0125,
		WM_MENUCOMMAND                = 0x0126,

//#ifndef _WIN32_WCE
//#if(_WIN32_WINNT >= 0x0500)
		WM_CHANGEUISTATE              = 0x0127,
		WM_UPDATEUISTATE              = 0x0128,
		WM_QUERYUISTATE               = 0x0129,

/*
 * LOWORD(wParam) values in WM_*UISTATE*
 */
		UIS_SET                       = 1,
		UIS_CLEAR                     = 2,
		UIS_INITIALIZE                = 3,

/*
 * HIWORD(wParam) values in WM_*UISTATE*
 */
		UISF_HIDEFOCUS                = 0x1,
		UISF_HIDEACCEL                = 0x2,
//#if(_WIN32_WINNT >= 0x0501)
		UISF_ACTIVE                   = 0x4,
//#endif /* _WIN32_WINNT >= 0x0501 */
//#endif /* _WIN32_WINNT >= 0x0500 */
//#endif

//#endif
//#endif /* WINVER >= 0x0500 */

		WM_CTLCOLORMSGBOX             = 0x0132,
		WM_CTLCOLOREDIT               = 0x0133,
		WM_CTLCOLORLISTBOX            = 0x0134,
		WM_CTLCOLORBTN                = 0x0135,
		WM_CTLCOLORDLG                = 0x0136,
		WM_CTLCOLORSCROLLBAR          = 0x0137,
		WM_CTLCOLORSTATIC             = 0x0138,
		MN_GETHMENU                   = 0x01E1,

		WM_MOUSEFIRST                 = 0x0200,
		WM_MOUSEMOVE                  = 0x0200,
		WM_LBUTTONDOWN                = 0x0201,
		WM_LBUTTONUP                  = 0x0202,
		WM_LBUTTONDBLCLK              = 0x0203,
		WM_RBUTTONDOWN                = 0x0204,
		WM_RBUTTONUP                  = 0x0205,
		WM_RBUTTONDBLCLK              = 0x0206,
		WM_MBUTTONDOWN                = 0x0207,
		WM_MBUTTONUP                  = 0x0208,
		WM_MBUTTONDBLCLK              = 0x0209,
//#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
		WM_MOUSEWHEEL                 = 0x020A,
//#endif
//#if (_WIN32_WINNT >= 0x0500)
		WM_XBUTTONDOWN                = 0x020B,
		WM_XBUTTONUP                  = 0x020C,
		WM_XBUTTONDBLCLK              = 0x020D,
//#endif
//#if (_WIN32_WINNT >= 0x0600)
		WM_MOUSEHWHEEL                = 0x020E,
//#endif

//#if (_WIN32_WINNT >= 0x0600)
		WM_MOUSELAST                  = 0x020E,
//#elif (_WIN32_WINNT >= 0x0500)
		WM_MOUSELAST__WIN2000         = 0x020D,
//#elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
		WM_MOUSELAST__WIN4            = 0x020A,
//#else
		WM_MOUSELAST__WIN3            = 0x0209,
//#endif /* (_WIN32_WINNT >= 0x0600) */


//#if(_WIN32_WINNT >= 0x0400)
/* Value for rolling one detent */
		WHEEL_DELTA                   = 120,
		//GET_WHEEL_DELTA_WPARAM(wParam)  ((short)HIWORD(wParam))

/* Setting to scroll one page for SPI_GET/SETWHEELSCROLLLINES */
		WHEEL_PAGESCROLL              = (uint.MaxValue),
//#endif /* _WIN32_WINNT >= 0x0400 */

//#if(_WIN32_WINNT >= 0x0500)
		//GET_KEYSTATE_WPARAM(wParam)     (LOWORD(wParam))
		//GET_NCHITTEST_WPARAM(wParam)    ((short)LOWORD(wParam))
		//GET_XBUTTON_WPARAM(wParam)      (HIWORD(wParam))

/* XButton values are WORD flags */
		XBUTTON1    = 0x0001,
		XBUTTON2    = 0x0002,
/* Were there to be an XBUTTON3, its value would be 0x0004 */
//#endif /* _WIN32_WINNT >= 0x0500 */

		WM_PARENTNOTIFY               = 0x0210,
		WM_ENTERMENULOOP              = 0x0211,
		WM_EXITMENULOOP               = 0x0212,

//#if(WINVER >= 0x0400)
		WM_NEXTMENU                   = 0x0213,
		WM_SIZING                     = 0x0214,
		WM_CAPTURECHANGED             = 0x0215,
		WM_MOVING                     = 0x0216,
		WM_POWERBROADCAST             = 0x0218,
//#endif /* WINVER >= 0x0400 */
//#if(WINVER >= 0x0400)
		WM_DEVICECHANGE               = 0x0219,
//#endif /* WINVER >= 0x0400 */

		WM_MDICREATE                  = 0x0220,
		WM_MDIDESTROY                 = 0x0221,
		WM_MDIACTIVATE                = 0x0222,
		WM_MDIRESTORE                 = 0x0223,
		WM_MDINEXT                    = 0x0224,
		WM_MDIMAXIMIZE                = 0x0225,
		WM_MDITILE                    = 0x0226,
		WM_MDICASCADE                 = 0x0227,
		WM_MDIICONARRANGE             = 0x0228,
		WM_MDIGETACTIVE               = 0x0229,


		WM_MDISETMENU                 = 0x0230,
		WM_ENTERSIZEMOVE              = 0x0231,
		WM_EXITSIZEMOVE               = 0x0232,
		WM_DROPFILES                  = 0x0233,
		WM_MDIREFRESHMENU             = 0x0234,

//#if(WINVER >= 0x0602)
		WM_POINTERDEVICECHANGE        = 0x238,
		WM_POINTERDEVICEINRANGE       = 0x239,
		WM_POINTERDEVICEOUTOFRANGE    = 0x23A,
//#endif /* WINVER >= 0x0602 */


//#if(WINVER >= 0x0601)
		WM_TOUCH                      = 0x0240,
//#endif /* WINVER >= 0x0601 */

//#if(WINVER >= 0x0602)
		WM_NCPOINTERUPDATE            = 0x0241,
		WM_NCPOINTERDOWN              = 0x0242,
		WM_NCPOINTERUP                = 0x0243,
		WM_POINTERUPDATE              = 0x0245,
		WM_POINTERDOWN                = 0x0246,
		WM_POINTERUP                  = 0x0247,
		WM_POINTERENTER               = 0x0249,
		WM_POINTERLEAVE               = 0x024A,
		WM_POINTERACTIVATE            = 0x024B,
		WM_POINTERCAPTURECHANGED      = 0x024C,
		WM_TOUCHHITTESTING            = 0x024D,
		WM_POINTERWHEEL               = 0x024E,
		WM_POINTERHWHEEL              = 0x024F,
		DM_POINTERHITTEST             = 0x0250,
		WM_POINTERROUTEDTO            = 0x0251,
		WM_POINTERROUTEDAWAY          = 0x0252,
		WM_POINTERROUTEDRELEASED      = 0x0253,
//#endif /* WINVER >= 0x0602 */


//#if(WINVER >= 0x0400)
		WM_IME_SETCONTEXT             = 0x0281,
		WM_IME_NOTIFY                 = 0x0282,
		WM_IME_CONTROL                = 0x0283,
		WM_IME_COMPOSITIONFULL        = 0x0284,
		WM_IME_SELECT                 = 0x0285,
		WM_IME_CHAR                   = 0x0286,
//#endif /* WINVER >= 0x0400 */
//#if(WINVER >= 0x0500)
		WM_IME_REQUEST                = 0x0288,
//#endif /* WINVER >= 0x0500 */
//#if(WINVER >= 0x0400)
		WM_IME_KEYDOWN                = 0x0290,
		WM_IME_KEYUP                  = 0x0291,
//#endif /* WINVER >= 0x0400 */

//#if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500))
		WM_MOUSEHOVER                 = 0x02A1,
		WM_MOUSELEAVE                 = 0x02A3,
//#endif
//#if(WINVER >= 0x0500)
		WM_NCMOUSEHOVER               = 0x02A0,
		WM_NCMOUSELEAVE               = 0x02A2,
//#endif /* WINVER >= 0x0500 */

//#if(_WIN32_WINNT >= 0x0501)
		WM_WTSSESSION_CHANGE          = 0x02B1,

		WM_TABLET_FIRST               = 0x02c0,
		WM_TABLET_LAST                = 0x02df,
//#endif /* _WIN32_WINNT >= 0x0501 */

//#if(WINVER >= 0x0601)
		WM_DPICHANGED                 = 0x02E0,
//#endif /* WINVER >= 0x0601 */
//#if(WINVER >= 0x0605)
		WM_DPICHANGED_BEFOREPARENT    = 0x02E2,
		WM_DPICHANGED_AFTERPARENT     = 0x02E3,
		WM_GETDPISCALEDSIZE           = 0x02E4,
//#endif /* WINVER >= 0x0605 */


		WM_CUT                        = 0x0300,
		WM_COPY                       = 0x0301,
		WM_PASTE                      = 0x0302,
		WM_CLEAR                      = 0x0303,
		WM_UNDO                       = 0x0304,
		WM_RENDERFORMAT               = 0x0305,
		WM_RENDERALLFORMATS           = 0x0306,
		WM_DESTROYCLIPBOARD           = 0x0307,
		WM_DRAWCLIPBOARD              = 0x0308,
		WM_PAINTCLIPBOARD             = 0x0309,
		WM_VSCROLLCLIPBOARD           = 0x030A,
		WM_SIZECLIPBOARD              = 0x030B,
		WM_ASKCBFORMATNAME            = 0x030C,
		WM_CHANGECBCHAIN              = 0x030D,
		WM_HSCROLLCLIPBOARD           = 0x030E,
		WM_QUERYNEWPALETTE            = 0x030F,
		WM_PALETTEISCHANGING          = 0x0310,
		WM_PALETTECHANGED             = 0x0311,
		WM_HOTKEY                     = 0x0312,

//#if(WINVER >= 0x0400)
		WM_PRINT                      = 0x0317,
		WM_PRINTCLIENT                = 0x0318,
//#endif /* WINVER >= 0x0400 */

//#if(_WIN32_WINNT >= 0x0500)
		WM_APPCOMMAND                 = 0x0319,
//#endif /* _WIN32_WINNT >= 0x0500 */

//#if(_WIN32_WINNT >= 0x0501)
		WM_THEMECHANGED               = 0x031A,
//#endif /* _WIN32_WINNT >= 0x0501 */


//#if(_WIN32_WINNT >= 0x0501)
		WM_CLIPBOARDUPDATE            = 0x031D,
//#endif /* _WIN32_WINNT >= 0x0501 */

//#if(_WIN32_WINNT >= 0x0600)
		WM_DWMCOMPOSITIONCHANGED      = 0x031E,
		WM_DWMNCRENDERINGCHANGED      = 0x031F,
		WM_DWMCOLORIZATIONCOLORCHANGED= 0x0320,
		WM_DWMWINDOWMAXIMIZEDCHANGE   = 0x0321,
//#endif /* _WIN32_WINNT >= 0x0600 */

//#if(_WIN32_WINNT >= 0x0601)
		WM_DWMSENDICONICTHUMBNAIL         = 0x0323,
		WM_DWMSENDICONICLIVEPREVIEWBITMAP = 0x0326,
//#endif /* _WIN32_WINNT >= 0x0601 */


//#if(WINVER >= 0x0600)
		WM_GETTITLEBARINFOEX          = 0x033F,
//#endif /* WINVER >= 0x0600 */

//#if(WINVER >= 0x0400)
//#endif /* WINVER >= 0x0400 */


//#if(WINVER >= 0x0400)
		WM_HANDHELDFIRST              = 0x0358,
		WM_HANDHELDLAST               = 0x035F,

		WM_AFXFIRST                   = 0x0360,
		WM_AFXLAST                    = 0x037F,
//#endif /* WINVER >= 0x0400 */

		WM_PENWINFIRST                = 0x0380,
		WM_PENWINLAST                 = 0x038F,


//#if(WINVER >= 0x0400)
		WM_APP                        = 0x8000,
//#endif /* WINVER >= 0x0400 */


/*
 * NOTE: All Message Numbers below 0x0400 are RESERVED.
 *
 * Private Window Messages Start Here:
 */
		WM_USER                       = 0x0400,

//#if(WINVER >= 0x0400)

/*  wParam for WM_SIZING message  */
		WMSZ_LEFT         = 1,
		WMSZ_RIGHT        = 2,
		WMSZ_TOP          = 3,
		WMSZ_TOPLEFT      = 4,
		WMSZ_TOPRIGHT     = 5,
		WMSZ_BOTTOM       = 6,
		WMSZ_BOTTOMLEFT   = 7,
		WMSZ_BOTTOMRIGHT  = 8,
//#endif /* WINVER >= 0x0400 */

//#ifndef NONCMESSAGES

/*
 * WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
 */
		/*HTERROR           = (-2),
		HTTRANSPARENT     = (-1),
		HTNOWHERE         = 0,
		HTCLIENT          = 1,
		HTCAPTION         = 2,
		HTSYSMENU         = 3,
		HTGROWBOX         = 4,
		HTSIZE            = HTGROWBOX,
		HTMENU            = 5,
		HTHSCROLL         = 6,
		HTVSCROLL         = 7,
		HTMINBUTTON       = 8,
		HTMAXBUTTON       = 9,
		HTLEFT            = 10,
		HTRIGHT           = 11,
		HTTOP             = 12,
		HTTOPLEFT         = 13,
		HTTOPRIGHT        = 14,
		HTBOTTOM          = 15,
		HTBOTTOMLEFT      = 16,
		HTBOTTOMRIGHT     = 17,
		HTBORDER          = 18,
		HTREDUCE          = HTMINBUTTON,
		HTZOOM            = HTMAXBUTTON,
		HTSIZEFIRST       = HTLEFT,
		HTSIZELAST        = HTBOTTOMRIGHT,
//#if(WINVER >= 0x0400)
		HTOBJECT          = 19,
		HTCLOSE           = 20,
		HTHELP            = 21,
//#endif /* WINVER >= 0x0400 */
	}
}
