// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! USER procedure declarations, constant definitions and macros use ctypes::{c_int, c_long, c_short, c_uint}; use shared::basetsd::{ DWORD_PTR, INT32, INT_PTR, PDWORD_PTR, UINT16, UINT32, UINT64, UINT_PTR, ULONG_PTR, }; #[cfg(target_pointer_width = "64")] use shared::basetsd::LONG_PTR; use shared::guiddef::{GUID, LPCGUID}; use shared::minwindef::{ ATOM, BOOL, BYTE, DWORD, HINSTANCE, HIWORD, HKL, HMODULE, HRGN, HWINSTA, INT, LOWORD, LPARAM, LPBYTE, LPDWORD, LPINT, LPVOID, LPWORD, LRESULT, PBYTE, PUINT, PULONG, TRUE, UCHAR, UINT, ULONG, USHORT, WORD, WPARAM, }; use shared::windef::{ COLORREF, DPI_AWARENESS, DPI_AWARENESS_CONTEXT, DPI_HOSTING_BEHAVIOR, HACCEL, HBITMAP, HBRUSH, HCURSOR, HDC, HDESK, HHOOK, HICON, HMENU, HMONITOR, HWINEVENTHOOK, HWND, LPCRECT, LPPOINT, LPRECT, POINT, RECT, SIZE, }; use um::minwinbase::LPSECURITY_ATTRIBUTES; use um::wingdi::{ BLENDFUNCTION, DEVMODEA, DEVMODEW, LOGFONTA, LOGFONTW, PDISPLAY_DEVICEA, PDISPLAY_DEVICEW }; use um::winnt::{ ACCESS_MASK, BOOLEAN, CHAR, HANDLE, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR, LUID, PSECURITY_DESCRIPTOR, PSECURITY_INFORMATION, PVOID, SHORT, VOID, WCHAR, }; use vc::limits::UINT_MAX; use vc::vadefs::va_list; pub type HDWP = HANDLE; pub type MENUTEMPLATEA = VOID; pub type MENUTEMPLATEW = VOID; pub type LPMENUTEMPLATEA = PVOID; pub type LPMENUTEMPLATEW = PVOID; FN!{stdcall WNDPROC( HWND, UINT, WPARAM, LPARAM, ) -> LRESULT} FN!{stdcall DLGPROC( HWND, UINT, WPARAM, LPARAM, ) -> INT_PTR} FN!{stdcall TIMERPROC( HWND, UINT, UINT_PTR, DWORD, ) -> ()} FN!{stdcall GRAYSTRINGPROC( HDC, LPARAM, c_int, ) -> BOOL} FN!{stdcall WNDENUMPROC( HWND, LPARAM, ) -> BOOL} FN!{stdcall HOOKPROC( code: c_int, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT} FN!{stdcall SENDASYNCPROC( HWND, UINT, ULONG_PTR, LRESULT, ) -> ()} FN!{stdcall PROPENUMPROCA( HWND, LPCSTR, HANDLE, ) -> BOOL} FN!{stdcall PROPENUMPROCW( HWND, LPCWSTR, HANDLE, ) -> BOOL} FN!{stdcall PROPENUMPROCEXA( HWND, LPSTR, HANDLE, ULONG_PTR, ) -> BOOL} FN!{stdcall PROPENUMPROCEXW( HWND, LPWSTR, HANDLE, ULONG_PTR, ) -> BOOL} FN!{stdcall EDITWORDBREAKPROCA( lpch: LPSTR, ichCurrent: c_int, cch: c_int, code: c_int, ) -> c_int} FN!{stdcall EDITWORDBREAKPROCW( lpch: LPWSTR, ichCurrent: c_int, cch: c_int, code: c_int, ) -> c_int} FN!{stdcall DRAWSTATEPROC( hdc: HDC, lData: LPARAM, wData: WPARAM, cx: c_int, cy: c_int, ) -> BOOL} FN!{stdcall NAMEENUMPROCA( LPSTR, LPARAM, ) -> BOOL} FN!{stdcall NAMEENUMPROCW( LPWSTR, LPARAM, ) -> BOOL} pub type WINSTAENUMPROCA = NAMEENUMPROCA; pub type DESKTOPENUMPROCA = NAMEENUMPROCA; pub type WINSTAENUMPROCW = NAMEENUMPROCW; pub type DESKTOPENUMPROCW = NAMEENUMPROCW; #[inline] pub fn IS_INTRESOURCE(r: ULONG_PTR) -> bool { (r >> 16) == 0 } #[inline] pub fn MAKEINTRESOURCEA(i: WORD) -> LPSTR { i as ULONG_PTR as LPSTR } #[inline] pub fn MAKEINTRESOURCEW(i: WORD) -> LPWSTR { i as ULONG_PTR as LPWSTR } pub const RT_CURSOR: LPWSTR = MAKEINTRESOURCE!(1); pub const RT_BITMAP: LPWSTR = MAKEINTRESOURCE!(2); pub const RT_ICON: LPWSTR = MAKEINTRESOURCE!(3); pub const RT_MENU: LPWSTR = MAKEINTRESOURCE!(4); pub const RT_DIALOG: LPWSTR = MAKEINTRESOURCE!(5); pub const RT_STRING: LPWSTR = MAKEINTRESOURCE!(6); pub const RT_FONTDIR: LPWSTR = MAKEINTRESOURCE!(7); pub const RT_FONT: LPWSTR = MAKEINTRESOURCE!(8); pub const RT_ACCELERATOR: LPWSTR = MAKEINTRESOURCE!(9); pub const RT_RCDATA: LPWSTR = MAKEINTRESOURCE!(10); pub const RT_MESSAGETABLE: LPWSTR = MAKEINTRESOURCE!(11); pub const DIFFERENCE: WORD = 11; pub const RT_GROUP_CURSOR: LPWSTR = MAKEINTRESOURCE!(1 + DIFFERENCE); pub const RT_GROUP_ICON: LPWSTR = MAKEINTRESOURCE!(3 + DIFFERENCE); pub const RT_VERSION: LPWSTR = MAKEINTRESOURCE!(16); pub const RT_DLGINCLUDE: LPWSTR = MAKEINTRESOURCE!(17); pub const RT_PLUGPLAY: LPWSTR = MAKEINTRESOURCE!(19); pub const RT_VXD: LPWSTR = MAKEINTRESOURCE!(20); pub const RT_ANICURSOR: LPWSTR = MAKEINTRESOURCE!(21); pub const RT_ANIICON: LPWSTR = MAKEINTRESOURCE!(22); pub const RT_HTML: LPWSTR = MAKEINTRESOURCE!(23); pub const RT_MANIFEST: LPWSTR = MAKEINTRESOURCE!(24); pub const CREATEPROCESS_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(1); pub const ISOLATIONAWARE_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(2); pub const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(3); pub const MINIMUM_RESERVED_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(1); pub const MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(16); extern "system" { pub fn wvsprintfA( _: LPSTR, _: LPCSTR, arglist: va_list, ) -> c_int; pub fn wvsprintfW( _: LPWSTR, _: LPCWSTR, arglist: va_list, ) -> c_int; } extern "C" { pub fn wsprintfA( _: LPSTR, _: LPCSTR, ... ) -> c_int; pub fn wsprintfW( _: LPWSTR, _: LPCWSTR, ... ) -> c_int; } pub const SETWALLPAPER_DEFAULT: LPWSTR = -1isize as LPWSTR; pub const SB_HORZ: UINT = 0; pub const SB_VERT: UINT = 1; pub const SB_CTL: UINT = 2; pub const SB_BOTH: UINT = 3; pub const SB_LINEUP: LPARAM = 0; pub const SB_LINELEFT: LPARAM = 0; pub const SB_LINEDOWN: LPARAM = 1; pub const SB_LINERIGHT: LPARAM = 1; pub const SB_PAGEUP: LPARAM = 2; pub const SB_PAGELEFT: LPARAM = 2; pub const SB_PAGEDOWN: LPARAM = 3; pub const SB_PAGERIGHT: LPARAM = 3; pub const SB_THUMBPOSITION: LPARAM = 4; pub const SB_THUMBTRACK: LPARAM = 5; pub const SB_TOP: LPARAM = 6; pub const SB_LEFT: LPARAM = 6; pub const SB_BOTTOM: LPARAM = 7; pub const SB_RIGHT: LPARAM = 7; pub const SB_ENDSCROLL: LPARAM = 8; pub const SW_HIDE: c_int = 0; pub const SW_SHOWNORMAL: c_int = 1; pub const SW_NORMAL: c_int = 1; pub const SW_SHOWMINIMIZED: c_int = 2; pub const SW_SHOWMAXIMIZED: c_int = 3; pub const SW_MAXIMIZE: c_int = 3; pub const SW_SHOWNOACTIVATE: c_int = 4; pub const SW_SHOW: c_int = 5; pub const SW_MINIMIZE: c_int = 6; pub const SW_SHOWMINNOACTIVE: c_int = 7; pub const SW_SHOWNA: c_int = 8; pub const SW_RESTORE: c_int = 9; pub const SW_SHOWDEFAULT: c_int = 10; pub const SW_FORCEMINIMIZE: c_int = 11; pub const SW_MAX: c_int = 11; pub const HIDE_WINDOW: c_int = 0; pub const SHOW_OPENWINDOW: c_int = 1; pub const SHOW_ICONWINDOW: c_int = 2; pub const SHOW_FULLSCREEN: c_int = 3; pub const SHOW_OPENNOACTIVATE: c_int = 4; pub const SW_PARENTCLOSING: LPARAM = 1; pub const SW_OTHERZOOM: LPARAM = 2; pub const SW_PARENTOPENING: LPARAM = 3; pub const SW_OTHERUNZOOM: LPARAM = 4; pub const AW_HOR_POSITIVE: DWORD = 0x00000001; pub const AW_HOR_NEGATIVE: DWORD = 0x00000002; pub const AW_VER_POSITIVE: DWORD = 0x00000004; pub const AW_VER_NEGATIVE: DWORD = 0x00000008; pub const AW_CENTER: DWORD = 0x00000010; pub const AW_HIDE: DWORD = 0x00010000; pub const AW_ACTIVATE: DWORD = 0x00020000; pub const AW_SLIDE: DWORD = 0x00040000; pub const AW_BLEND: DWORD = 0x00080000; pub const KF_EXTENDED: WORD = 0x0100; pub const KF_DLGMODE: WORD = 0x0800; pub const KF_MENUMODE: WORD = 0x1000; pub const KF_ALTDOWN: WORD = 0x2000; pub const KF_REPEAT: WORD = 0x4000; pub const KF_UP: WORD = 0x8000; pub const VK_LBUTTON: c_int = 0x01; pub const VK_RBUTTON: c_int = 0x02; pub const VK_CANCEL: c_int = 0x03; pub const VK_MBUTTON: c_int = 0x04; pub const VK_XBUTTON1: c_int = 0x05; pub const VK_XBUTTON2: c_int = 0x06; pub const VK_BACK: c_int = 0x08; pub const VK_TAB: c_int = 0x09; pub const VK_CLEAR: c_int = 0x0C; pub const VK_RETURN: c_int = 0x0D; pub const VK_SHIFT: c_int = 0x10; pub const VK_CONTROL: c_int = 0x11; pub const VK_MENU: c_int = 0x12; pub const VK_PAUSE: c_int = 0x13; pub const VK_CAPITAL: c_int = 0x14; pub const VK_KANA: c_int = 0x15; pub const VK_HANGEUL: c_int = 0x15; pub const VK_HANGUL: c_int = 0x15; pub const VK_JUNJA: c_int = 0x17; pub const VK_FINAL: c_int = 0x18; pub const VK_HANJA: c_int = 0x19; pub const VK_KANJI: c_int = 0x19; pub const VK_ESCAPE: c_int = 0x1B; pub const VK_CONVERT: c_int = 0x1C; pub const VK_NONCONVERT: c_int = 0x1D; pub const VK_ACCEPT: c_int = 0x1E; pub const VK_MODECHANGE: c_int = 0x1F; pub const VK_SPACE: c_int = 0x20; pub const VK_PRIOR: c_int = 0x21; pub const VK_NEXT: c_int = 0x22; pub const VK_END: c_int = 0x23; pub const VK_HOME: c_int = 0x24; pub const VK_LEFT: c_int = 0x25; pub const VK_UP: c_int = 0x26; pub const VK_RIGHT: c_int = 0x27; pub const VK_DOWN: c_int = 0x28; pub const VK_SELECT: c_int = 0x29; pub const VK_PRINT: c_int = 0x2A; pub const VK_EXECUTE: c_int = 0x2B; pub const VK_SNAPSHOT: c_int = 0x2C; pub const VK_INSERT: c_int = 0x2D; pub const VK_DELETE: c_int = 0x2E; pub const VK_HELP: c_int = 0x2F; pub const VK_LWIN: c_int = 0x5B; pub const VK_RWIN: c_int = 0x5C; pub const VK_APPS: c_int = 0x5D; pub const VK_SLEEP: c_int = 0x5F; pub const VK_NUMPAD0: c_int = 0x60; pub const VK_NUMPAD1: c_int = 0x61; pub const VK_NUMPAD2: c_int = 0x62; pub const VK_NUMPAD3: c_int = 0x63; pub const VK_NUMPAD4: c_int = 0x64; pub const VK_NUMPAD5: c_int = 0x65; pub const VK_NUMPAD6: c_int = 0x66; pub const VK_NUMPAD7: c_int = 0x67; pub const VK_NUMPAD8: c_int = 0x68; pub const VK_NUMPAD9: c_int = 0x69; pub const VK_MULTIPLY: c_int = 0x6A; pub const VK_ADD: c_int = 0x6B; pub const VK_SEPARATOR: c_int = 0x6C; pub const VK_SUBTRACT: c_int = 0x6D; pub const VK_DECIMAL: c_int = 0x6E; pub const VK_DIVIDE: c_int = 0x6F; pub const VK_F1: c_int = 0x70; pub const VK_F2: c_int = 0x71; pub const VK_F3: c_int = 0x72; pub const VK_F4: c_int = 0x73; pub const VK_F5: c_int = 0x74; pub const VK_F6: c_int = 0x75; pub const VK_F7: c_int = 0x76; pub const VK_F8: c_int = 0x77; pub const VK_F9: c_int = 0x78; pub const VK_F10: c_int = 0x79; pub const VK_F11: c_int = 0x7A; pub const VK_F12: c_int = 0x7B; pub const VK_F13: c_int = 0x7C; pub const VK_F14: c_int = 0x7D; pub const VK_F15: c_int = 0x7E; pub const VK_F16: c_int = 0x7F; pub const VK_F17: c_int = 0x80; pub const VK_F18: c_int = 0x81; pub const VK_F19: c_int = 0x82; pub const VK_F20: c_int = 0x83; pub const VK_F21: c_int = 0x84; pub const VK_F22: c_int = 0x85; pub const VK_F23: c_int = 0x86; pub const VK_F24: c_int = 0x87; pub const VK_NAVIGATION_VIEW: c_int = 0x88; pub const VK_NAVIGATION_MENU: c_int = 0x89; pub const VK_NAVIGATION_UP: c_int = 0x8A; pub const VK_NAVIGATION_DOWN: c_int = 0x8B; pub const VK_NAVIGATION_LEFT: c_int = 0x8C; pub const VK_NAVIGATION_RIGHT: c_int = 0x8D; pub const VK_NAVIGATION_ACCEPT: c_int = 0x8E; pub const VK_NAVIGATION_CANCEL: c_int = 0x8F; pub const VK_NUMLOCK: c_int = 0x90; pub const VK_SCROLL: c_int = 0x91; pub const VK_OEM_NEC_EQUAL: c_int = 0x92; pub const VK_OEM_FJ_JISHO: c_int = 0x92; pub const VK_OEM_FJ_MASSHOU: c_int = 0x93; pub const VK_OEM_FJ_TOUROKU: c_int = 0x94; pub const VK_OEM_FJ_LOYA: c_int = 0x95; pub const VK_OEM_FJ_ROYA: c_int = 0x96; pub const VK_LSHIFT: c_int = 0xA0; pub const VK_RSHIFT: c_int = 0xA1; pub const VK_LCONTROL: c_int = 0xA2; pub const VK_RCONTROL: c_int = 0xA3; pub const VK_LMENU: c_int = 0xA4; pub const VK_RMENU: c_int = 0xA5; pub const VK_BROWSER_BACK: c_int = 0xA6; pub const VK_BROWSER_FORWARD: c_int = 0xA7; pub const VK_BROWSER_REFRESH: c_int = 0xA8; pub const VK_BROWSER_STOP: c_int = 0xA9; pub const VK_BROWSER_SEARCH: c_int = 0xAA; pub const VK_BROWSER_FAVORITES: c_int = 0xAB; pub const VK_BROWSER_HOME: c_int = 0xAC; pub const VK_VOLUME_MUTE: c_int = 0xAD; pub const VK_VOLUME_DOWN: c_int = 0xAE; pub const VK_VOLUME_UP: c_int = 0xAF; pub const VK_MEDIA_NEXT_TRACK: c_int = 0xB0; pub const VK_MEDIA_PREV_TRACK: c_int = 0xB1; pub const VK_MEDIA_STOP: c_int = 0xB2; pub const VK_MEDIA_PLAY_PAUSE: c_int = 0xB3; pub const VK_LAUNCH_MAIL: c_int = 0xB4; pub const VK_LAUNCH_MEDIA_SELECT: c_int = 0xB5; pub const VK_LAUNCH_APP1: c_int = 0xB6; pub const VK_LAUNCH_APP2: c_int = 0xB7; pub const VK_OEM_1: c_int = 0xBA; pub const VK_OEM_PLUS: c_int = 0xBB; pub const VK_OEM_COMMA: c_int = 0xBC; pub const VK_OEM_MINUS: c_int = 0xBD; pub const VK_OEM_PERIOD: c_int = 0xBE; pub const VK_OEM_2: c_int = 0xBF; pub const VK_OEM_3: c_int = 0xC0; pub const VK_GAMEPAD_A: c_int = 0xC3; pub const VK_GAMEPAD_B: c_int = 0xC4; pub const VK_GAMEPAD_X: c_int = 0xC5; pub const VK_GAMEPAD_Y: c_int = 0xC6; pub const VK_GAMEPAD_RIGHT_SHOULDER: c_int = 0xC7; pub const VK_GAMEPAD_LEFT_SHOULDER: c_int = 0xC8; pub const VK_GAMEPAD_LEFT_TRIGGER: c_int = 0xC9; pub const VK_GAMEPAD_RIGHT_TRIGGER: c_int = 0xCA; pub const VK_GAMEPAD_DPAD_UP: c_int = 0xCB; pub const VK_GAMEPAD_DPAD_DOWN: c_int = 0xCC; pub const VK_GAMEPAD_DPAD_LEFT: c_int = 0xCD; pub const VK_GAMEPAD_DPAD_RIGHT: c_int = 0xCE; pub const VK_GAMEPAD_MENU: c_int = 0xCF; pub const VK_GAMEPAD_VIEW: c_int = 0xD0; pub const VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON: c_int = 0xD1; pub const VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON: c_int = 0xD2; pub const VK_GAMEPAD_LEFT_THUMBSTICK_UP: c_int = 0xD3; pub const VK_GAMEPAD_LEFT_THUMBSTICK_DOWN: c_int = 0xD4; pub const VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT: c_int = 0xD5; pub const VK_GAMEPAD_LEFT_THUMBSTICK_LEFT: c_int = 0xD6; pub const VK_GAMEPAD_RIGHT_THUMBSTICK_UP: c_int = 0xD7; pub const VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN: c_int = 0xD8; pub const VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT: c_int = 0xD9; pub const VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT: c_int = 0xDA; pub const VK_OEM_4: c_int = 0xDB; pub const VK_OEM_5: c_int = 0xDC; pub const VK_OEM_6: c_int = 0xDD; pub const VK_OEM_7: c_int = 0xDE; pub const VK_OEM_8: c_int = 0xDF; pub const VK_OEM_AX: c_int = 0xE1; pub const VK_OEM_102: c_int = 0xE2; pub const VK_ICO_HELP: c_int = 0xE3; pub const VK_ICO_00: c_int = 0xE4; pub const VK_PROCESSKEY: c_int = 0xE5; pub const VK_ICO_CLEAR: c_int = 0xE6; pub const VK_PACKET: c_int = 0xE7; pub const VK_OEM_RESET: c_int = 0xE9; pub const VK_OEM_JUMP: c_int = 0xEA; pub const VK_OEM_PA1: c_int = 0xEB; pub const VK_OEM_PA2: c_int = 0xEC; pub const VK_OEM_PA3: c_int = 0xED; pub const VK_OEM_WSCTRL: c_int = 0xEE; pub const VK_OEM_CUSEL: c_int = 0xEF; pub const VK_OEM_ATTN: c_int = 0xF0; pub const VK_OEM_FINISH: c_int = 0xF1; pub const VK_OEM_COPY: c_int = 0xF2; pub const VK_OEM_AUTO: c_int = 0xF3; pub const VK_OEM_ENLW: c_int = 0xF4; pub const VK_OEM_BACKTAB: c_int = 0xF5; pub const VK_ATTN: c_int = 0xF6; pub const VK_CRSEL: c_int = 0xF7; pub const VK_EXSEL: c_int = 0xF8; pub const VK_EREOF: c_int = 0xF9; pub const VK_PLAY: c_int = 0xFA; pub const VK_ZOOM: c_int = 0xFB; pub const VK_NONAME: c_int = 0xFC; pub const VK_PA1: c_int = 0xFD; pub const VK_OEM_CLEAR: c_int = 0xFE; pub const WH_MIN: c_int = -1; pub const WH_MSGFILTER: c_int = -1; pub const WH_JOURNALRECORD: c_int = 0; pub const WH_JOURNALPLAYBACK: c_int = 1; pub const WH_KEYBOARD: c_int = 2; pub const WH_GETMESSAGE: c_int = 3; pub const WH_CALLWNDPROC: c_int = 4; pub const WH_CBT: c_int = 5; pub const WH_SYSMSGFILTER: c_int = 6; pub const WH_MOUSE: c_int = 7; pub const WH_HARDWARE: c_int = 8; pub const WH_DEBUG: c_int = 9; pub const WH_SHELL: c_int = 10; pub const WH_FOREGROUNDIDLE: c_int = 11; pub const WH_CALLWNDPROCRET: c_int = 12; pub const WH_KEYBOARD_LL: c_int = 13; pub const WH_MOUSE_LL: c_int = 14; pub const WH_MAX: c_int = 14; pub const WH_MINHOOK: c_int = WH_MIN; pub const WH_MAXHOOK: c_int = WH_MAX; pub const HC_ACTION: c_int = 0; pub const HC_GETNEXT: c_int = 1; pub const HC_SKIP: c_int = 2; pub const HC_NOREMOVE: c_int = 3; pub const HC_NOREM: c_int = HC_NOREMOVE; pub const HC_SYSMODALON: c_int = 4; pub const HC_SYSMODALOFF: c_int = 5; pub const HCBT_MOVESIZE: c_int = 0; pub const HCBT_MINMAX: c_int = 1; pub const HCBT_QS: c_int = 2; pub const HCBT_CREATEWND: c_int = 3; pub const HCBT_DESTROYWND: c_int = 4; pub const HCBT_ACTIVATE: c_int = 5; pub const HCBT_CLICKSKIPPED: c_int = 6; pub const HCBT_KEYSKIPPED: c_int = 7; pub const HCBT_SYSCOMMAND: c_int = 8; pub const HCBT_SETFOCUS: c_int = 9; STRUCT!{struct CBT_CREATEWNDA { lpcs: *mut CREATESTRUCTA, hwndInsertAfter: HWND, }} pub type LPCBT_CREATEWNDA = *mut CBT_CREATEWNDA; STRUCT!{struct CBT_CREATEWNDW { lpcs: *mut CREATESTRUCTW, hwndInsertAfter: HWND, }} pub type LPCBT_CREATEWNDW = *mut CBT_CREATEWNDW; STRUCT!{struct CBTACTIVATESTRUCT { fMouse: BOOL, hWndActive: HWND, }} pub type LPCBTACTIVATESTRUCT = *mut CBTACTIVATESTRUCT; STRUCT!{struct WTSSESSION_NOTIFICATION { cbSize: DWORD, dwSessionId: DWORD, }} pub type PWTSSESSION_NOTIFICATION = *mut WTSSESSION_NOTIFICATION; pub const WTS_CONSOLE_CONNECT: WPARAM = 0x1; pub const WTS_CONSOLE_DISCONNECT: WPARAM = 0x2; pub const WTS_REMOTE_CONNECT: WPARAM = 0x3; pub const WTS_REMOTE_DISCONNECT: WPARAM = 0x4; pub const WTS_SESSION_LOGON: WPARAM = 0x5; pub const WTS_SESSION_LOGOFF: WPARAM = 0x6; pub const WTS_SESSION_LOCK: WPARAM = 0x7; pub const WTS_SESSION_UNLOCK: WPARAM = 0x8; pub const WTS_SESSION_REMOTE_CONTROL: WPARAM = 0x9; pub const WTS_SESSION_CREATE: WPARAM = 0xa; pub const WTS_SESSION_TERMINATE: WPARAM = 0xb; pub const MSGF_DIALOGBOX: c_int = 0; pub const MSGF_MESSAGEBOX: c_int = 1; pub const MSGF_MENU: c_int = 2; pub const MSGF_SCROLLBAR: c_int = 5; pub const MSGF_NEXTWINDOW: c_int = 6; pub const MSGF_MAX: c_int = 8; pub const MSGF_USER: c_int = 4096; pub const HSHELL_WINDOWCREATED: c_int = 1; pub const HSHELL_WINDOWDESTROYED: c_int = 2; pub const HSHELL_ACTIVATESHELLWINDOW: c_int = 3; pub const HSHELL_WINDOWACTIVATED: c_int = 4; pub const HSHELL_GETMINRECT: c_int = 5; pub const HSHELL_REDRAW: c_int = 6; pub const HSHELL_TASKMAN: c_int = 7; pub const HSHELL_LANGUAGE: c_int = 8; pub const HSHELL_SYSMENU: c_int = 9; pub const HSHELL_ENDTASK: c_int = 10; pub const HSHELL_ACCESSIBILITYSTATE: c_int = 11; pub const HSHELL_APPCOMMAND: c_int = 12; pub const HSHELL_WINDOWREPLACED: c_int = 13; pub const HSHELL_WINDOWREPLACING: c_int = 14; pub const HSHELL_MONITORCHANGED: c_int = 16; pub const HSHELL_HIGHBIT: c_int = 0x8000; pub const HSHELL_FLASH: c_int = HSHELL_REDRAW | HSHELL_HIGHBIT; pub const HSHELL_RUDEAPPACTIVATED: c_int = HSHELL_WINDOWACTIVATED | HSHELL_HIGHBIT; pub const APPCOMMAND_BROWSER_BACKWARD: c_short = 1; pub const APPCOMMAND_BROWSER_FORWARD: c_short = 2; pub const APPCOMMAND_BROWSER_REFRESH: c_short = 3; pub const APPCOMMAND_BROWSER_STOP: c_short = 4; pub const APPCOMMAND_BROWSER_SEARCH: c_short = 5; pub const APPCOMMAND_BROWSER_FAVORITES: c_short = 6; pub const APPCOMMAND_BROWSER_HOME: c_short = 7; pub const APPCOMMAND_VOLUME_MUTE: c_short = 8; pub const APPCOMMAND_VOLUME_DOWN: c_short = 9; pub const APPCOMMAND_VOLUME_UP: c_short = 10; pub const APPCOMMAND_MEDIA_NEXTTRACK: c_short = 11; pub const APPCOMMAND_MEDIA_PREVIOUSTRACK: c_short = 12; pub const APPCOMMAND_MEDIA_STOP: c_short = 13; pub const APPCOMMAND_MEDIA_PLAY_PAUSE: c_short = 14; pub const APPCOMMAND_LAUNCH_MAIL: c_short = 15; pub const APPCOMMAND_LAUNCH_MEDIA_SELECT: c_short = 16; pub const APPCOMMAND_LAUNCH_APP1: c_short = 17; pub const APPCOMMAND_LAUNCH_APP2: c_short = 18; pub const APPCOMMAND_BASS_DOWN: c_short = 19; pub const APPCOMMAND_BASS_BOOST: c_short = 20; pub const APPCOMMAND_BASS_UP: c_short = 21; pub const APPCOMMAND_TREBLE_DOWN: c_short = 22; pub const APPCOMMAND_TREBLE_UP: c_short = 23; pub const APPCOMMAND_MICROPHONE_VOLUME_MUTE: c_short = 24; pub const APPCOMMAND_MICROPHONE_VOLUME_DOWN: c_short = 25; pub const APPCOMMAND_MICROPHONE_VOLUME_UP: c_short = 26; pub const APPCOMMAND_HELP: c_short = 27; pub const APPCOMMAND_FIND: c_short = 28; pub const APPCOMMAND_NEW: c_short = 29; pub const APPCOMMAND_OPEN: c_short = 30; pub const APPCOMMAND_CLOSE: c_short = 31; pub const APPCOMMAND_SAVE: c_short = 32; pub const APPCOMMAND_PRINT: c_short = 33; pub const APPCOMMAND_UNDO: c_short = 34; pub const APPCOMMAND_REDO: c_short = 35; pub const APPCOMMAND_COPY: c_short = 36; pub const APPCOMMAND_CUT: c_short = 37; pub const APPCOMMAND_PASTE: c_short = 38; pub const APPCOMMAND_REPLY_TO_MAIL: c_short = 39; pub const APPCOMMAND_FORWARD_MAIL: c_short = 40; pub const APPCOMMAND_SEND_MAIL: c_short = 41; pub const APPCOMMAND_SPELL_CHECK: c_short = 42; pub const APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE: c_short = 43; pub const APPCOMMAND_MIC_ON_OFF_TOGGLE: c_short = 44; pub const APPCOMMAND_CORRECTION_LIST: c_short = 45; pub const APPCOMMAND_MEDIA_PLAY: c_short = 46; pub const APPCOMMAND_MEDIA_PAUSE: c_short = 47; pub const APPCOMMAND_MEDIA_RECORD: c_short = 48; pub const APPCOMMAND_MEDIA_FAST_FORWARD: c_short = 49; pub const APPCOMMAND_MEDIA_REWIND: c_short = 50; pub const APPCOMMAND_MEDIA_CHANNEL_UP: c_short = 51; pub const APPCOMMAND_MEDIA_CHANNEL_DOWN: c_short = 52; pub const APPCOMMAND_DELETE: c_short = 53; pub const APPCOMMAND_DWM_FLIP3D: c_short = 54; pub const FAPPCOMMAND_MOUSE: WORD = 0x8000; pub const FAPPCOMMAND_KEY: WORD = 0; pub const FAPPCOMMAND_OEM: WORD = 0x1000; pub const FAPPCOMMAND_MASK: WORD = 0xF000; #[inline] pub fn GET_APPCOMMAND_LPARAM(lParam: LPARAM) -> c_short { (HIWORD(lParam as DWORD) & !FAPPCOMMAND_MASK) as c_short } #[inline] pub fn GET_DEVICE_LPARAM(lParam: LPARAM) -> WORD { HIWORD(lParam as DWORD) & FAPPCOMMAND_MASK } pub use self::GET_DEVICE_LPARAM as GET_MOUSEORKEY_LPARAM; pub use shared::minwindef::LOWORD as GET_FLAGS_LPARAM; pub use self::GET_FLAGS_LPARAM as GET_KEYSTATE_LPARAM; STRUCT!{struct SHELLHOOKINFO { hwnd: HWND, rc: RECT, }} pub type LPSHELLHOOKINFO = *mut SHELLHOOKINFO; STRUCT!{struct EVENTMSG { message: UINT, paramL: UINT, paramH: UINT, time: DWORD, hwnd: HWND, }} pub type PEVENTMSGMSG = *mut EVENTMSG; pub type NPEVENTMSGMSG = *mut EVENTMSG; pub type LPEVENTMSGMSG = *mut EVENTMSG; pub type PEVENTMSG = *mut EVENTMSG; pub type NPEVENTMSG = *mut EVENTMSG; pub type LPEVENTMSG = *mut EVENTMSG; STRUCT!{struct CWPSTRUCT { lParam: LPARAM, wParam: WPARAM, message: UINT, hwnd: HWND, }} pub type PCWPSTRUCT = *mut CWPSTRUCT; pub type NPCWPSTRUCT = *mut CWPSTRUCT; pub type LPCWPSTRUCT = *mut CWPSTRUCT; STRUCT!{struct CWPRETSTRUCT { lResult: LRESULT, lParam: LPARAM, wParam: WPARAM, message: UINT, hwnd: HWND, }} pub type PCWPRETSTRUCT = *mut CWPRETSTRUCT; pub type NPCWPRETSTRUCT = *mut CWPRETSTRUCT; pub type LPCWPRETSTRUCT = *mut CWPRETSTRUCT; pub const LLKHF_EXTENDED: DWORD = (KF_EXTENDED >> 8) as u32; pub const LLKHF_INJECTED: DWORD = 0x00000010; pub const LLKHF_ALTDOWN: DWORD = (KF_ALTDOWN >> 8) as u32; pub const LLKHF_UP: DWORD = (KF_UP >> 8) as u32; pub const LLKHF_LOWER_IL_INJECTED: DWORD = 0x00000002; pub const LLMHF_INJECTED: DWORD = 0x00000001; pub const LLMHF_LOWER_IL_INJECTED: DWORD = 0x00000002; STRUCT!{struct KBDLLHOOKSTRUCT { vkCode: DWORD, scanCode: DWORD, flags: DWORD, time: DWORD, dwExtraInfo: ULONG_PTR, }} pub type LPKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT; pub type PKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT; STRUCT!{struct MSLLHOOKSTRUCT { pt: POINT, mouseData: DWORD, flags: DWORD, time: DWORD, dwExtraInfo: ULONG_PTR, }} pub type LPMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT; pub type PMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT; STRUCT!{struct DEBUGHOOKINFO { idThread: DWORD, idThreadInstaller: DWORD, lParam: LPARAM, wParam: WPARAM, code: c_int, }} pub type PDEBUGHOOKINFO = *mut DEBUGHOOKINFO; pub type NPDEBUGHOOKINFO = *mut DEBUGHOOKINFO; pub type LPDEBUGHOOKINFO = *mut DEBUGHOOKINFO; STRUCT!{struct MOUSEHOOKSTRUCT { pt: POINT, hwnd: HWND, wHitTestCode: UINT, dwExtraInfo: ULONG_PTR, }} pub type LPMOUSEHOOKSTRUCT = *mut MOUSEHOOKSTRUCT; pub type PMOUSEHOOKSTRUCT = *mut MOUSEHOOKSTRUCT; STRUCT!{struct MOUSEHOOKSTRUCTEX { parent: MOUSEHOOKSTRUCT, mouseData: DWORD, }} pub type LPMOUSEHOOKSTRUCTEX = *mut MOUSEHOOKSTRUCTEX; pub type PMOUSEHOOKSTRUCTEX = *mut MOUSEHOOKSTRUCTEX; STRUCT!{struct HARDWAREHOOKSTRUCT { hwnd: HWND, message: UINT, wParam: WPARAM, lParam: LPARAM, }} pub type LPHARDWAREHOOKSTRUCT = *mut HARDWAREHOOKSTRUCT; pub type PHARDWAREHOOKSTRUCT = *mut HARDWAREHOOKSTRUCT; pub const HKL_PREV: HKL = 0 as HKL; pub const HKL_NEXT: HKL = 1 as HKL; pub const KLF_ACTIVATE: UINT = 0x00000001; pub const KLF_SUBSTITUTE_OK: UINT = 0x00000002; pub const KLF_REORDER: UINT = 0x00000008; pub const KLF_REPLACELANG: UINT = 0x00000010; pub const KLF_NOTELLSHELL: UINT = 0x00000080; pub const KLF_SETFORPROCESS: UINT = 0x00000100; pub const KLF_SHIFTLOCK: UINT = 0x00010000; pub const KLF_RESET: UINT = 0x40000000; pub const INPUTLANGCHANGE_SYSCHARSET: WPARAM = 0x0001; pub const INPUTLANGCHANGE_FORWARD: WPARAM = 0x0002; pub const INPUTLANGCHANGE_BACKWARD: WPARAM = 0x0004; pub const KL_NAMELENGTH: usize = 9; extern "system" { pub fn LoadKeyboardLayoutA( pwszKLID: LPCSTR, Flags: DWORD, ) -> HKL; pub fn LoadKeyboardLayoutW( pwszKLID: LPCWSTR, Flags: DWORD, ) -> HKL; pub fn ActivateKeyboardLayout( hkl: HKL, Flags: UINT, ) -> HKL; pub fn ToUnicodeEx( wVirtKey: UINT, wScanCode: UINT, lpKeyState: *const BYTE, pwszBuff: LPWSTR, cchBuff: c_int, wFlags: UINT, dwhkl: HKL, ) -> c_int; pub fn UnloadKeyboardLayout( hkl: HKL, ) -> BOOL; pub fn GetKeyboardLayoutNameA( pwszKLID: LPSTR, ) -> BOOL; pub fn GetKeyboardLayoutNameW( pwszKLID: LPWSTR, ) -> BOOL; pub fn GetKeyboardLayoutList( nBuff: c_int, lpList: *mut HKL, ) -> c_int; pub fn GetKeyboardLayout( idThread: DWORD, ) -> HKL; } STRUCT!{struct MOUSEMOVEPOINT { x: c_int, y: c_int, time: DWORD, dwExtraInfo: ULONG_PTR, }} pub type PMOUSEMOVEPOINT = *mut MOUSEMOVEPOINT; pub type LPMOUSEMOVEPOINT = *mut MOUSEMOVEPOINT; pub const GMMP_USE_DISPLAY_POINTS: DWORD = 1; pub const GMMP_USE_HIGH_RESOLUTION_POINTS: DWORD = 2; extern "system" { pub fn GetMouseMovePointsEx( cbSize: UINT, lppt: LPMOUSEMOVEPOINT, lpptBuf: LPMOUSEMOVEPOINT, nBufPoints: c_int, resolution: DWORD, ) -> c_int; } pub const DESKTOP_READOBJECTS: DWORD = 0x0001; pub const DESKTOP_CREATEWINDOW: DWORD = 0x0002; pub const DESKTOP_CREATEMENU: DWORD = 0x0004; pub const DESKTOP_HOOKCONTROL: DWORD = 0x0008; pub const DESKTOP_JOURNALRECORD: DWORD = 0x0010; pub const DESKTOP_JOURNALPLAYBACK: DWORD = 0x0020; pub const DESKTOP_ENUMERATE: DWORD = 0x0040; pub const DESKTOP_WRITEOBJECTS: DWORD = 0x0080; pub const DESKTOP_SWITCHDESKTOP: DWORD = 0x0100; pub const DF_ALLOWOTHERACCOUNTHOOK: DWORD = 0x0001; extern "system" { pub fn CreateDesktopA( lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: *mut DEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HDESK; pub fn CreateDesktopW( lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: *mut DEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HDESK; pub fn CreateDesktopExA( lpszDesktop: LPCSTR, lpszDevice: LPCSTR, pDevmode: *mut DEVMODEA, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID, ) -> HDESK; pub fn CreateDesktopExW( lpszDesktop: LPCWSTR, lpszDevice: LPCWSTR, pDevmode: *mut DEVMODEW, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ulHeapSize: ULONG, pvoid: PVOID, ) -> HDESK; pub fn OpenDesktopA( lpszDesktop: LPCSTR, dwFlags: DWORD, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HDESK; pub fn OpenDesktopW( lpszDesktop: LPCWSTR, dwFlags: DWORD, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HDESK; pub fn OpenInputDesktop( dwFlags: DWORD, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HDESK; pub fn EnumDesktopsA( hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCA, lParam: LPARAM, ) -> BOOL; pub fn EnumDesktopsW( hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROCW, lParam: LPARAM, ) -> BOOL; pub fn EnumDesktopWindows( hDesktop: HDESK, lpfn: WNDENUMPROC, lParam: LPARAM, ) -> BOOL; pub fn SwitchDesktop( hDesktop: HDESK, ) -> BOOL; pub fn SetThreadDesktop( hDesktop: HDESK, ) -> BOOL; pub fn CloseDesktop( hDesktop: HDESK, ) -> BOOL; pub fn GetThreadDesktop( dwThreadId: DWORD, ) -> HDESK; } pub const WINSTA_ENUMDESKTOPS: DWORD = 0x0001; pub const WINSTA_READATTRIBUTES: DWORD = 0x0002; pub const WINSTA_ACCESSCLIPBOARD: DWORD = 0x0004; pub const WINSTA_CREATEDESKTOP: DWORD = 0x0008; pub const WINSTA_WRITEATTRIBUTES: DWORD = 0x0010; pub const WINSTA_ACCESSGLOBALATOMS: DWORD = 0x0020; pub const WINSTA_EXITWINDOWS: DWORD = 0x0040; pub const WINSTA_ENUMERATE: DWORD = 0x0100; pub const WINSTA_READSCREEN: DWORD = 0x0200; pub const WINSTA_ALL_ACCESS: DWORD = WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN; pub const CWF_CREATE_ONLY: DWORD = 0x00000001; pub const WSF_VISIBLE: DWORD = 0x0001; extern "system" { pub fn CreateWindowStationA( lpwinsta: LPCSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HWINSTA; pub fn CreateWindowStationW( lpwinsta: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: ACCESS_MASK, lpsa: LPSECURITY_ATTRIBUTES, ) -> HWINSTA; pub fn OpenWindowStationA( lpszWinSta: LPCSTR, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HWINSTA; pub fn OpenWindowStationW( lpszWinSta: LPCWSTR, fInherit: BOOL, dwDesiredAccess: ACCESS_MASK, ) -> HWINSTA; pub fn EnumWindowStationsA( lpEnumFunc: WINSTAENUMPROCA, lParam: LPARAM, ) -> BOOL; pub fn EnumWindowStationsW( lpEnumFunc: WINSTAENUMPROCW, lParam: LPARAM, ) -> BOOL; pub fn CloseWindowStation( hWinSta: HWINSTA, ) -> BOOL; pub fn SetProcessWindowStation( hWinSta: HWINSTA, ) -> BOOL; pub fn GetProcessWindowStation() -> HWINSTA; pub fn SetUserObjectSecurity( hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION, pSID: PSECURITY_DESCRIPTOR, ) -> BOOL; pub fn GetUserObjectSecurity( hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION, pSID: PSECURITY_DESCRIPTOR, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL; } pub const UOI_FLAGS: DWORD = 1; pub const UOI_NAME: DWORD = 2; pub const UOI_TYPE: DWORD = 3; pub const UOI_USER_SID: DWORD = 4; pub const UOI_HEAPSIZE: DWORD = 5; pub const UOI_IO: DWORD = 6; pub const UOI_TIMERPROC_EXCEPTION_SUPPRESSION: DWORD = 7; STRUCT!{struct USEROBJECTFLAGS { fInherit: BOOL, fReserved: BOOL, dwFlags: DWORD, }} pub type PUSEROBJECTFLAGS = *mut USEROBJECTFLAGS; extern "system" { pub fn GetUserObjectInformationA( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL; pub fn GetUserObjectInformationW( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD, ) -> BOOL; pub fn SetUserObjectInformationA( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, ) -> BOOL; pub fn SetUserObjectInformationW( hObj: HANDLE, nIndex: c_int, pvInfo: PVOID, nLength: DWORD, ) -> BOOL; } STRUCT!{struct WNDCLASSEXA { cbSize: UINT, style: UINT, lpfnWndProc: WNDPROC, cbClsExtra: c_int, cbWndExtra: c_int, hInstance: HINSTANCE, hIcon: HICON, hCursor: HCURSOR, hbrBackground: HBRUSH, lpszMenuName: LPCSTR, lpszClassName: LPCSTR, hIconSm: HICON, }} pub type PWNDCLASSEXA = *mut WNDCLASSEXA; pub type NPWNDCLASSEXA = *mut WNDCLASSEXA; pub type LPWNDCLASSEXA = *mut WNDCLASSEXA; STRUCT!{struct WNDCLASSEXW { cbSize: UINT, style: UINT, lpfnWndProc: WNDPROC, cbClsExtra: c_int, cbWndExtra: c_int, hInstance: HINSTANCE, hIcon: HICON, hCursor: HCURSOR, hbrBackground: HBRUSH, lpszMenuName: LPCWSTR, lpszClassName: LPCWSTR, hIconSm: HICON, }} pub type PWNDCLASSEXW = *mut WNDCLASSEXW; pub type NPWNDCLASSEXW = *mut WNDCLASSEXW; pub type LPWNDCLASSEXW = *mut WNDCLASSEXW; STRUCT!{struct WNDCLASSA { style: UINT, lpfnWndProc: WNDPROC, cbClsExtra: c_int, cbWndExtra: c_int, hInstance: HINSTANCE, hIcon: HICON, hCursor: HCURSOR, hbrBackground: HBRUSH, lpszMenuName: LPCSTR, lpszClassName: LPCSTR, }} pub type PWNDCLASSA = *mut WNDCLASSA; pub type NPWNDCLASSA = *mut WNDCLASSA; pub type LPWNDCLASSA = *mut WNDCLASSA; STRUCT!{struct WNDCLASSW { style: UINT, lpfnWndProc: WNDPROC, cbClsExtra: c_int, cbWndExtra: c_int, hInstance: HINSTANCE, hIcon: HICON, hCursor: HCURSOR, hbrBackground: HBRUSH, lpszMenuName: LPCWSTR, lpszClassName: LPCWSTR, }} pub type PWNDCLASSW = *mut WNDCLASSW; pub type NPWNDCLASSW = *mut WNDCLASSW; pub type LPWNDCLASSW = *mut WNDCLASSW; extern "system" { pub fn IsHungAppWindow( hwnd: HWND, ) -> BOOL; pub fn DisableProcessWindowsGhosting(); } STRUCT!{struct MSG { hwnd: HWND, message: UINT, wParam: WPARAM, lParam: LPARAM, time: DWORD, pt: POINT, }} pub type PMSG = *mut MSG; pub type NPMSG = *mut MSG; pub type LPMSG = *mut MSG; //POINTSTOPOINT //POINTTOPOINTS //MAKEWPARAM //MAKELPARAM //MAKELRESULT pub const GWL_WNDPROC: c_int = -4; pub const GWL_HINSTANCE: c_int = -6; pub const GWL_HWNDPARENT: c_int = -8; pub const GWL_STYLE: c_int = -16; pub const GWL_EXSTYLE: c_int = -20; pub const GWL_USERDATA: c_int = -21; pub const GWL_ID: c_int = -12; pub const GWLP_WNDPROC: c_int = -4; pub const GWLP_HINSTANCE: c_int = -6; pub const GWLP_HWNDPARENT: c_int = -8; pub const GWLP_USERDATA: c_int = -21; pub const GWLP_ID: c_int = -12; pub const GCL_MENUNAME: c_int = -8; pub const GCL_HBRBACKGROUND: c_int = -10; pub const GCL_HCURSOR: c_int = -12; pub const GCL_HICON: c_int = -14; pub const GCL_HMODULE: c_int = -16; pub const GCL_CBWNDEXTRA: c_int = -18; pub const GCL_CBCLSEXTRA: c_int = -20; pub const GCL_WNDPROC: c_int = -24; pub const GCL_STYLE: c_int = -26; pub const GCW_ATOM: c_int = -32; pub const GCL_HICONSM: c_int = -34; pub const GCLP_MENUNAME: c_int = -8; pub const GCLP_HBRBACKGROUND: c_int = -10; pub const GCLP_HCURSOR: c_int = -12; pub const GCLP_HICON: c_int = -14; pub const GCLP_HMODULE: c_int = -16; pub const GCLP_WNDPROC: c_int = -24; pub const GCLP_HICONSM: c_int = -34; pub const WM_NULL: UINT = 0x0000; pub const WM_CREATE: UINT = 0x0001; pub const WM_DESTROY: UINT = 0x0002; pub const WM_MOVE: UINT = 0x0003; pub const WM_SIZE: UINT = 0x0005; pub const WM_ACTIVATE: UINT = 0x0006; pub const WA_INACTIVE: WORD = 0; pub const WA_ACTIVE: WORD = 1; pub const WA_CLICKACTIVE: WORD = 2; pub const WM_SETFOCUS: UINT = 0x0007; pub const WM_KILLFOCUS: UINT = 0x0008; pub const WM_ENABLE: UINT = 0x000A; pub const WM_SETREDRAW: UINT = 0x000B; pub const WM_SETTEXT: UINT = 0x000C; pub const WM_GETTEXT: UINT = 0x000D; pub const WM_GETTEXTLENGTH: UINT = 0x000E; pub const WM_PAINT: UINT = 0x000F; pub const WM_CLOSE: UINT = 0x0010; pub const WM_QUERYENDSESSION: UINT = 0x0011; pub const WM_QUERYOPEN: UINT = 0x0013; pub const WM_ENDSESSION: UINT = 0x0016; pub const WM_QUIT: UINT = 0x0012; pub const WM_ERASEBKGND: UINT = 0x0014; pub const WM_SYSCOLORCHANGE: UINT = 0x0015; pub const WM_SHOWWINDOW: UINT = 0x0018; pub const WM_WININICHANGE: UINT = 0x001A; pub const WM_SETTINGCHANGE: UINT = WM_WININICHANGE; pub const WM_DEVMODECHANGE: UINT = 0x001B; pub const WM_ACTIVATEAPP: UINT = 0x001C; pub const WM_FONTCHANGE: UINT = 0x001D; pub const WM_TIMECHANGE: UINT = 0x001E; pub const WM_CANCELMODE: UINT = 0x001F; pub const WM_SETCURSOR: UINT = 0x0020; pub const WM_MOUSEACTIVATE: UINT = 0x0021; pub const WM_CHILDACTIVATE: UINT = 0x0022; pub const WM_QUEUESYNC: UINT = 0x0023; pub const WM_GETMINMAXINFO: UINT = 0x0024; STRUCT!{struct MINMAXINFO { ptReserved: POINT, ptMaxSize: POINT, ptMaxPosition: POINT, ptMinTrackSize: POINT, ptMaxTrackSize: POINT, }} pub type PMINMAXINFO = *mut MINMAXINFO; pub type LPMINMAXINFO = *mut MINMAXINFO; pub const WM_PAINTICON: UINT = 0x0026; pub const WM_ICONERASEBKGND: UINT = 0x0027; pub const WM_NEXTDLGCTL: UINT = 0x0028; pub const WM_SPOOLERSTATUS: UINT = 0x002A; pub const WM_DRAWITEM: UINT = 0x002B; pub const WM_MEASUREITEM: UINT = 0x002C; pub const WM_DELETEITEM: UINT = 0x002D; pub const WM_VKEYTOITEM: UINT = 0x002E; pub const WM_CHARTOITEM: UINT = 0x002F; pub const WM_SETFONT: UINT = 0x0030; pub const WM_GETFONT: UINT = 0x0031; pub const WM_SETHOTKEY: UINT = 0x0032; pub const WM_GETHOTKEY: UINT = 0x0033; pub const WM_QUERYDRAGICON: UINT = 0x0037; pub const WM_COMPAREITEM: UINT = 0x0039; pub const WM_GETOBJECT: UINT = 0x003D; pub const WM_COMPACTING: UINT = 0x0041; pub const WM_COMMNOTIFY: UINT = 0x0044; pub const WM_WINDOWPOSCHANGING: UINT = 0x0046; pub const WM_WINDOWPOSCHANGED: UINT = 0x0047; pub const WM_POWER: UINT = 0x0048; pub const PWR_OK: WPARAM = 1; pub const PWR_FAIL: WPARAM = -1isize as usize; pub const PWR_SUSPENDREQUEST: WPARAM = 1; pub const PWR_SUSPENDRESUME: WPARAM = 2; pub const PWR_CRITICALRESUME: WPARAM = 3; pub const WM_COPYDATA: UINT = 0x004A; pub const WM_CANCELJOURNAL: UINT = 0x004B; STRUCT!{struct COPYDATASTRUCT { dwData: ULONG_PTR, cbData: DWORD, lpData: PVOID, }} pub type PCOPYDATASTRUCT = *mut COPYDATASTRUCT; STRUCT!{struct MDINEXTMENU { hmenuIn: HMENU, hmenuNext: HMENU, hwndNext: HWND, }} pub type PMDINEXTMENU = *mut MDINEXTMENU; pub type LPMDINEXTMENU = *mut MDINEXTMENU; pub const WM_NOTIFY: UINT = 0x004E; pub const WM_INPUTLANGCHANGEREQUEST: UINT = 0x0050; pub const WM_INPUTLANGCHANGE: UINT = 0x0051; pub const WM_TCARD: UINT = 0x0052; pub const WM_HELP: UINT = 0x0053; pub const WM_USERCHANGED: UINT = 0x0054; pub const WM_NOTIFYFORMAT: UINT = 0x0055; pub const NFR_ANSI: LRESULT = 1; pub const NFR_UNICODE: LRESULT = 2; pub const NF_QUERY: LPARAM = 3; pub const NF_REQUERY: LPARAM = 4; pub const WM_CONTEXTMENU: UINT = 0x007B; pub const WM_STYLECHANGING: UINT = 0x007C; pub const WM_STYLECHANGED: UINT = 0x007D; pub const WM_DISPLAYCHANGE: UINT = 0x007E; pub const WM_GETICON: UINT = 0x007F; pub const WM_SETICON: UINT = 0x0080; pub const WM_NCCREATE: UINT = 0x0081; pub const WM_NCDESTROY: UINT = 0x0082; pub const WM_NCCALCSIZE: UINT = 0x0083; pub const WM_NCHITTEST: UINT = 0x0084; pub const WM_NCPAINT: UINT = 0x0085; pub const WM_NCACTIVATE: UINT = 0x0086; pub const WM_GETDLGCODE: UINT = 0x0087; pub const WM_SYNCPAINT: UINT = 0x0088; pub const WM_NCMOUSEMOVE: UINT = 0x00A0; pub const WM_NCLBUTTONDOWN: UINT = 0x00A1; pub const WM_NCLBUTTONUP: UINT = 0x00A2; pub const WM_NCLBUTTONDBLCLK: UINT = 0x00A3; pub const WM_NCRBUTTONDOWN: UINT = 0x00A4; pub const WM_NCRBUTTONUP: UINT = 0x00A5; pub const WM_NCRBUTTONDBLCLK: UINT = 0x00A6; pub const WM_NCMBUTTONDOWN: UINT = 0x00A7; pub const WM_NCMBUTTONUP: UINT = 0x00A8; pub const WM_NCMBUTTONDBLCLK: UINT = 0x00A9; pub const WM_NCXBUTTONDOWN: UINT = 0x00AB; pub const WM_NCXBUTTONUP: UINT = 0x00AC; pub const WM_NCXBUTTONDBLCLK: UINT = 0x00AD; pub const WM_INPUT_DEVICE_CHANGE: UINT = 0x00FE; pub const WM_INPUT: UINT = 0x00FF; pub const WM_KEYFIRST: UINT = 0x0100; pub const WM_KEYDOWN: UINT = 0x0100; pub const WM_KEYUP: UINT = 0x0101; pub const WM_CHAR: UINT = 0x0102; pub const WM_DEADCHAR: UINT = 0x0103; pub const WM_SYSKEYDOWN: UINT = 0x0104; pub const WM_SYSKEYUP: UINT = 0x0105; pub const WM_SYSCHAR: UINT = 0x0106; pub const WM_SYSDEADCHAR: UINT = 0x0107; pub const WM_UNICHAR: UINT = 0x0109; pub const WM_KEYLAST: UINT = 0x0109; pub const UNICODE_NOCHAR: WPARAM = 0xFFFF; pub const WM_IME_STARTCOMPOSITION: UINT = 0x010D; pub const WM_IME_ENDCOMPOSITION: UINT = 0x010E; pub const WM_IME_COMPOSITION: UINT = 0x010F; pub const WM_IME_KEYLAST: UINT = 0x010F; pub const WM_INITDIALOG: UINT = 0x0110; pub const WM_COMMAND: UINT = 0x0111; pub const WM_SYSCOMMAND: UINT = 0x0112; pub const WM_TIMER: UINT = 0x0113; pub const WM_HSCROLL: UINT = 0x0114; pub const WM_VSCROLL: UINT = 0x0115; pub const WM_INITMENU: UINT = 0x0116; pub const WM_INITMENUPOPUP: UINT = 0x0117; pub const WM_GESTURE: UINT = 0x0119; pub const WM_GESTURENOTIFY: UINT = 0x011A; pub const WM_MENUSELECT: UINT = 0x011F; pub const WM_MENUCHAR: UINT = 0x0120; pub const WM_ENTERIDLE: UINT = 0x0121; pub const WM_MENURBUTTONUP: UINT = 0x0122; pub const WM_MENUDRAG: UINT = 0x0123; pub const WM_MENUGETOBJECT: UINT = 0x0124; pub const WM_UNINITMENUPOPUP: UINT = 0x0125; pub const WM_MENUCOMMAND: UINT = 0x0126; pub const WM_CHANGEUISTATE: UINT = 0x0127; pub const WM_UPDATEUISTATE: UINT = 0x0128; pub const WM_QUERYUISTATE: UINT = 0x0129; pub const UIS_SET: WORD = 1; pub const UIS_CLEAR: WORD = 2; pub const UIS_INITIALIZE: WORD = 3; pub const UISF_HIDEFOCUS: WORD = 0x1; pub const UISF_HIDEACCEL: WORD = 0x2; pub const UISF_ACTIVE: WORD = 0x4; pub const WM_CTLCOLORMSGBOX: UINT = 0x0132; pub const WM_CTLCOLOREDIT: UINT = 0x0133; pub const WM_CTLCOLORLISTBOX: UINT = 0x0134; pub const WM_CTLCOLORBTN: UINT = 0x0135; pub const WM_CTLCOLORDLG: UINT = 0x0136; pub const WM_CTLCOLORSCROLLBAR: UINT = 0x0137; pub const WM_CTLCOLORSTATIC: UINT = 0x0138; pub const MN_GETHMENU: UINT = 0x01E1; pub const WM_MOUSEFIRST: UINT = 0x0200; pub const WM_MOUSEMOVE: UINT = 0x0200; pub const WM_LBUTTONDOWN: UINT = 0x0201; pub const WM_LBUTTONUP: UINT = 0x0202; pub const WM_LBUTTONDBLCLK: UINT = 0x0203; pub const WM_RBUTTONDOWN: UINT = 0x0204; pub const WM_RBUTTONUP: UINT = 0x0205; pub const WM_RBUTTONDBLCLK: UINT = 0x0206; pub const WM_MBUTTONDOWN: UINT = 0x0207; pub const WM_MBUTTONUP: UINT = 0x0208; pub const WM_MBUTTONDBLCLK: UINT = 0x0209; pub const WM_MOUSEWHEEL: UINT = 0x020A; pub const WM_XBUTTONDOWN: UINT = 0x020B; pub const WM_XBUTTONUP: UINT = 0x020C; pub const WM_XBUTTONDBLCLK: UINT = 0x020D; pub const WM_MOUSEHWHEEL: UINT = 0x020E; pub const WM_MOUSELAST: UINT = 0x020E; pub const WHEEL_DELTA: c_short = 120; #[inline] pub fn GET_WHEEL_DELTA_WPARAM(wParam: WPARAM) -> c_short { HIWORD(wParam as DWORD) as c_short } pub const WHEEL_PAGESCROLL: UINT = UINT_MAX; #[inline] pub fn GET_KEYSTATE_WPARAM(wParam: WPARAM) -> WORD { LOWORD(wParam as DWORD) } #[inline] pub fn GET_NCHITTEST_WPARAM(wParam: WPARAM) -> c_short { LOWORD(wParam as DWORD) as c_short } #[inline] pub fn GET_XBUTTON_WPARAM(wParam: WPARAM) -> WORD { HIWORD(wParam as DWORD) } pub const XBUTTON1: WORD = 0x0001; pub const XBUTTON2: WORD = 0x0002; pub const WM_PARENTNOTIFY: UINT = 0x0210; pub const WM_ENTERMENULOOP: UINT = 0x0211; pub const WM_EXITMENULOOP: UINT = 0x0212; pub const WM_NEXTMENU: UINT = 0x0213; pub const WM_SIZING: UINT = 0x0214; pub const WM_CAPTURECHANGED: UINT = 0x0215; pub const WM_MOVING: UINT = 0x0216; pub const WM_POWERBROADCAST: UINT = 0x0218; pub const PBT_APMQUERYSUSPEND: WPARAM = 0x0000; pub const PBT_APMQUERYSTANDBY: WPARAM = 0x0001; pub const PBT_APMQUERYSUSPENDFAILED: WPARAM = 0x0002; pub const PBT_APMQUERYSTANDBYFAILED: WPARAM = 0x0003; pub const PBT_APMSUSPEND: WPARAM = 0x0004; pub const PBT_APMSTANDBY: WPARAM = 0x0005; pub const PBT_APMRESUMECRITICAL: WPARAM = 0x0006; pub const PBT_APMRESUMESUSPEND: WPARAM = 0x0007; pub const PBT_APMRESUMESTANDBY: WPARAM = 0x0008; pub const PBTF_APMRESUMEFROMFAILURE: LPARAM = 0x00000001; pub const PBT_APMBATTERYLOW: WPARAM = 0x0009; pub const PBT_APMPOWERSTATUSCHANGE: WPARAM = 0x000A; pub const PBT_APMOEMEVENT: WPARAM = 0x000B; pub const PBT_APMRESUMEAUTOMATIC: WPARAM = 0x0012; pub const PBT_POWERSETTINGCHANGE: WPARAM = 0x8013; STRUCT!{struct POWERBROADCAST_SETTING { PowerSetting: GUID, DataLength: DWORD, Data: [UCHAR; 1], }} pub type PPOWERBROADCAST_SETTING = *mut POWERBROADCAST_SETTING; pub const WM_DEVICECHANGE: UINT = 0x0219; pub const WM_MDICREATE: UINT = 0x0220; pub const WM_MDIDESTROY: UINT = 0x0221; pub const WM_MDIACTIVATE: UINT = 0x0222; pub const WM_MDIRESTORE: UINT = 0x0223; pub const WM_MDINEXT: UINT = 0x0224; pub const WM_MDIMAXIMIZE: UINT = 0x0225; pub const WM_MDITILE: UINT = 0x0226; pub const WM_MDICASCADE: UINT = 0x0227; pub const WM_MDIICONARRANGE: UINT = 0x0228; pub const WM_MDIGETACTIVE: UINT = 0x0229; pub const WM_MDISETMENU: UINT = 0x0230; pub const WM_ENTERSIZEMOVE: UINT = 0x0231; pub const WM_EXITSIZEMOVE: UINT = 0x0232; pub const WM_DROPFILES: UINT = 0x0233; pub const WM_MDIREFRESHMENU: UINT = 0x0234; pub const WM_POINTERDEVICECHANGE: UINT = 0x238; pub const WM_POINTERDEVICEINRANGE: UINT = 0x239; pub const WM_POINTERDEVICEOUTOFRANGE: UINT = 0x23A; pub const WM_TOUCH: UINT = 0x0240; pub const WM_NCPOINTERUPDATE: UINT = 0x0241; pub const WM_NCPOINTERDOWN: UINT = 0x0242; pub const WM_NCPOINTERUP: UINT = 0x0243; pub const WM_POINTERUPDATE: UINT = 0x0245; pub const WM_POINTERDOWN: UINT = 0x0246; pub const WM_POINTERUP: UINT = 0x0247; pub const WM_POINTERENTER: UINT = 0x0249; pub const WM_POINTERLEAVE: UINT = 0x024A; pub const WM_POINTERACTIVATE: UINT = 0x024B; pub const WM_POINTERCAPTURECHANGED: UINT = 0x024C; pub const WM_TOUCHHITTESTING: UINT = 0x024D; pub const WM_POINTERWHEEL: UINT = 0x024E; pub const WM_POINTERHWHEEL: UINT = 0x024F; pub const DM_POINTERHITTEST: UINT = 0x0250; pub const WM_POINTERROUTEDTO: UINT = 0x0251; pub const WM_POINTERROUTEDAWAY: UINT = 0x0252; pub const WM_POINTERROUTEDRELEASED: UINT = 0x0253; pub const WM_IME_SETCONTEXT: UINT = 0x0281; pub const WM_IME_NOTIFY: UINT = 0x0282; pub const WM_IME_CONTROL: UINT = 0x0283; pub const WM_IME_COMPOSITIONFULL: UINT = 0x0284; pub const WM_IME_SELECT: UINT = 0x0285; pub const WM_IME_CHAR: UINT = 0x0286; pub const WM_IME_REQUEST: UINT = 0x0288; pub const WM_IME_KEYDOWN: UINT = 0x0290; pub const WM_IME_KEYUP: UINT = 0x0291; pub const WM_MOUSEHOVER: UINT = 0x02A1; pub const WM_MOUSELEAVE: UINT = 0x02A3; pub const WM_NCMOUSEHOVER: UINT = 0x02A0; pub const WM_NCMOUSELEAVE: UINT = 0x02A2; pub const WM_WTSSESSION_CHANGE: UINT = 0x02B1; pub const WM_TABLET_FIRST: UINT = 0x02c0; pub const WM_TABLET_LAST: UINT = 0x02df; pub const WM_DPICHANGED: UINT = 0x02E0; pub const WM_DPICHANGED_BEFOREPARENT: UINT = 0x02E2; pub const WM_DPICHANGED_AFTERPARENT: UINT = 0x02E3; pub const WM_GETDPISCALEDSIZE: UINT = 0x02E4; pub const WM_CUT: UINT = 0x0300; pub const WM_COPY: UINT = 0x0301; pub const WM_PASTE: UINT = 0x0302; pub const WM_CLEAR: UINT = 0x0303; pub const WM_UNDO: UINT = 0x0304; pub const WM_RENDERFORMAT: UINT = 0x0305; pub const WM_RENDERALLFORMATS: UINT = 0x0306; pub const WM_DESTROYCLIPBOARD: UINT = 0x0307; pub const WM_DRAWCLIPBOARD: UINT = 0x0308; pub const WM_PAINTCLIPBOARD: UINT = 0x0309; pub const WM_VSCROLLCLIPBOARD: UINT = 0x030A; pub const WM_SIZECLIPBOARD: UINT = 0x030B; pub const WM_ASKCBFORMATNAME: UINT = 0x030C; pub const WM_CHANGECBCHAIN: UINT = 0x030D; pub const WM_HSCROLLCLIPBOARD: UINT = 0x030E; pub const WM_QUERYNEWPALETTE: UINT = 0x030F; pub const WM_PALETTEISCHANGING: UINT = 0x0310; pub const WM_PALETTECHANGED: UINT = 0x0311; pub const WM_HOTKEY: UINT = 0x0312; pub const WM_PRINT: UINT = 0x0317; pub const WM_PRINTCLIENT: UINT = 0x0318; pub const WM_APPCOMMAND: UINT = 0x0319; pub const WM_THEMECHANGED: UINT = 0x031A; pub const WM_CLIPBOARDUPDATE: UINT = 0x031D; pub const WM_DWMCOMPOSITIONCHANGED: UINT = 0x031E; pub const WM_DWMNCRENDERINGCHANGED: UINT = 0x031F; pub const WM_DWMCOLORIZATIONCOLORCHANGED: UINT = 0x0320; pub const WM_DWMWINDOWMAXIMIZEDCHANGE: UINT = 0x0321; pub const WM_DWMSENDICONICTHUMBNAIL: UINT = 0x0323; pub const WM_DWMSENDICONICLIVEPREVIEWBITMAP: UINT = 0x0326; pub const WM_GETTITLEBARINFOEX: UINT = 0x033F; pub const WM_HANDHELDFIRST: UINT = 0x0358; pub const WM_HANDHELDLAST: UINT = 0x035F; pub const WM_AFXFIRST: UINT = 0x0360; pub const WM_AFXLAST: UINT = 0x037F; pub const WM_PENWINFIRST: UINT = 0x0380; pub const WM_PENWINLAST: UINT = 0x038F; pub const WM_APP: UINT = 0x8000; pub const WM_USER: UINT = 0x0400; pub const WMSZ_LEFT: UINT = 1; pub const WMSZ_RIGHT: UINT = 2; pub const WMSZ_TOP: UINT = 3; pub const WMSZ_TOPLEFT: UINT = 4; pub const WMSZ_TOPRIGHT: UINT = 5; pub const WMSZ_BOTTOM: UINT = 6; pub const WMSZ_BOTTOMLEFT: UINT = 7; pub const WMSZ_BOTTOMRIGHT: UINT = 8; pub const HTERROR: LRESULT = (-2); pub const HTTRANSPARENT: LRESULT = (-1); pub const HTNOWHERE: LRESULT = 0; pub const HTCLIENT: LRESULT = 1; pub const HTCAPTION: LRESULT = 2; pub const HTSYSMENU: LRESULT = 3; pub const HTGROWBOX: LRESULT = 4; pub const HTSIZE: LRESULT = HTGROWBOX; pub const HTMENU: LRESULT = 5; pub const HTHSCROLL: LRESULT = 6; pub const HTVSCROLL: LRESULT = 7; pub const HTMINBUTTON: LRESULT = 8; pub const HTMAXBUTTON: LRESULT = 9; pub const HTLEFT: LRESULT = 10; pub const HTRIGHT: LRESULT = 11; pub const HTTOP: LRESULT = 12; pub const HTTOPLEFT: LRESULT = 13; pub const HTTOPRIGHT: LRESULT = 14; pub const HTBOTTOM: LRESULT = 15; pub const HTBOTTOMLEFT: LRESULT = 16; pub const HTBOTTOMRIGHT: LRESULT = 17; pub const HTBORDER: LRESULT = 18; pub const HTREDUCE: LRESULT = HTMINBUTTON; pub const HTZOOM: LRESULT = HTMAXBUTTON; pub const HTSIZEFIRST: LRESULT = HTLEFT; pub const HTSIZELAST: LRESULT = HTBOTTOMRIGHT; pub const HTOBJECT: LRESULT = 19; pub const HTCLOSE: LRESULT = 20; pub const HTHELP: LRESULT = 21; pub const SMTO_NORMAL: UINT = 0x0000; pub const SMTO_BLOCK: UINT = 0x0001; pub const SMTO_ABORTIFHUNG: UINT = 0x0002; pub const SMTO_NOTIMEOUTIFNOTHUNG: UINT = 0x0008; pub const SMTO_ERRORONEXIT: UINT = 0x0020; pub const MA_ACTIVATE: UINT = 1; pub const MA_ACTIVATEANDEAT: UINT = 2; pub const MA_NOACTIVATE: UINT = 3; pub const MA_NOACTIVATEANDEAT: UINT = 4; pub const ICON_SMALL: UINT = 0; pub const ICON_BIG: UINT = 1; pub const ICON_SMALL2: UINT = 2; extern "system" { pub fn RegisterWindowMessageA( lpString: LPCSTR, ) -> UINT; pub fn RegisterWindowMessageW( lpString: LPCWSTR, ) -> UINT; } pub const SIZE_RESTORED: WPARAM = 0; pub const SIZE_MINIMIZED: WPARAM = 1; pub const SIZE_MAXIMIZED: WPARAM = 2; pub const SIZE_MAXSHOW: WPARAM = 3; pub const SIZE_MAXHIDE: WPARAM = 4; pub const SIZENORMAL: WPARAM = SIZE_RESTORED; pub const SIZEICONIC: WPARAM = SIZE_MINIMIZED; pub const SIZEFULLSCREEN: WPARAM = SIZE_MAXIMIZED; pub const SIZEZOOMSHOW: WPARAM = SIZE_MAXSHOW; pub const SIZEZOOMHIDE: WPARAM = SIZE_MAXHIDE; STRUCT!{struct WINDOWPOS { hwnd: HWND, hwndInsertAfter: HWND, x: c_int, y: c_int, cx: c_int, cy: c_int, flags: UINT, }} pub type LPWINDOWPOS = *mut WINDOWPOS; pub type PWINDOWPOS = *mut WINDOWPOS; STRUCT!{struct NCCALCSIZE_PARAMS { rgrc: [RECT; 3], lppos: PWINDOWPOS, }} pub type LPNCCALCSIZE_PARAMS = *mut NCCALCSIZE_PARAMS; pub const WVR_ALIGNTOP: LRESULT = 0x0010; pub const WVR_ALIGNLEFT: LRESULT = 0x0020; pub const WVR_ALIGNBOTTOM: LRESULT = 0x0040; pub const WVR_ALIGNRIGHT: LRESULT = 0x0080; pub const WVR_HREDRAW: LRESULT = 0x0100; pub const WVR_VREDRAW: LRESULT = 0x0200; pub const WVR_REDRAW: LRESULT = WVR_HREDRAW | WVR_VREDRAW; pub const WVR_VALIDRECTS: LRESULT = 0x0400; pub const MK_LBUTTON: WPARAM = 0x0001; pub const MK_RBUTTON: WPARAM = 0x0002; pub const MK_SHIFT: WPARAM = 0x0004; pub const MK_CONTROL: WPARAM = 0x0008; pub const MK_MBUTTON: WPARAM = 0x0010; pub const MK_XBUTTON1: WPARAM = 0x0020; pub const MK_XBUTTON2: WPARAM = 0x0040; pub const TME_HOVER: DWORD = 0x00000001; pub const TME_LEAVE: DWORD = 0x00000002; pub const TME_NONCLIENT: DWORD = 0x00000010; pub const TME_QUERY: DWORD = 0x40000000; pub const TME_CANCEL: DWORD = 0x80000000; pub const HOVER_DEFAULT: DWORD = 0xFFFFFFFF; STRUCT!{struct TRACKMOUSEEVENT { cbSize: DWORD, dwFlags: DWORD, hwndTrack: HWND, dwHoverTime: DWORD, }} pub type LPTRACKMOUSEEVENT = *mut TRACKMOUSEEVENT; extern "system" { pub fn TrackMouseEvent( lpEventTrack: LPTRACKMOUSEEVENT, ) -> BOOL; } pub const WS_OVERLAPPED: DWORD = 0x00000000; pub const WS_POPUP: DWORD = 0x80000000; pub const WS_CHILD: DWORD = 0x40000000; pub const WS_MINIMIZE: DWORD = 0x20000000; pub const WS_VISIBLE: DWORD = 0x10000000; pub const WS_DISABLED: DWORD = 0x08000000; pub const WS_CLIPSIBLINGS: DWORD = 0x04000000; pub const WS_CLIPCHILDREN: DWORD = 0x02000000; pub const WS_MAXIMIZE: DWORD = 0x01000000; pub const WS_CAPTION: DWORD = 0x00C00000; pub const WS_BORDER: DWORD = 0x00800000; pub const WS_DLGFRAME: DWORD = 0x00400000; pub const WS_VSCROLL: DWORD = 0x00200000; pub const WS_HSCROLL: DWORD = 0x00100000; pub const WS_SYSMENU: DWORD = 0x00080000; pub const WS_THICKFRAME: DWORD = 0x00040000; pub const WS_GROUP: DWORD = 0x00020000; pub const WS_TABSTOP: DWORD = 0x00010000; pub const WS_MINIMIZEBOX: DWORD = 0x00020000; pub const WS_MAXIMIZEBOX: DWORD = 0x00010000; pub const WS_TILED: DWORD = WS_OVERLAPPED; pub const WS_ICONIC: DWORD = WS_MINIMIZE; pub const WS_SIZEBOX: DWORD = WS_THICKFRAME; pub const WS_TILEDWINDOW: DWORD = WS_OVERLAPPEDWINDOW; pub const WS_OVERLAPPEDWINDOW: DWORD = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; pub const WS_POPUPWINDOW: DWORD = WS_POPUP | WS_BORDER | WS_SYSMENU; pub const WS_CHILDWINDOW: DWORD = WS_CHILD; pub const WS_EX_DLGMODALFRAME: DWORD = 0x00000001; pub const WS_EX_NOPARENTNOTIFY: DWORD = 0x00000004; pub const WS_EX_TOPMOST: DWORD = 0x00000008; pub const WS_EX_ACCEPTFILES: DWORD = 0x00000010; pub const WS_EX_TRANSPARENT: DWORD = 0x00000020; pub const WS_EX_MDICHILD: DWORD = 0x00000040; pub const WS_EX_TOOLWINDOW: DWORD = 0x00000080; pub const WS_EX_WINDOWEDGE: DWORD = 0x00000100; pub const WS_EX_CLIENTEDGE: DWORD = 0x00000200; pub const WS_EX_CONTEXTHELP: DWORD = 0x00000400; pub const WS_EX_RIGHT: DWORD = 0x00001000; pub const WS_EX_LEFT: DWORD = 0x00000000; pub const WS_EX_RTLREADING: DWORD = 0x00002000; pub const WS_EX_LTRREADING: DWORD = 0x00000000; pub const WS_EX_LEFTSCROLLBAR: DWORD = 0x00004000; pub const WS_EX_RIGHTSCROLLBAR: DWORD = 0x00000000; pub const WS_EX_CONTROLPARENT: DWORD = 0x00010000; pub const WS_EX_STATICEDGE: DWORD = 0x00020000; pub const WS_EX_APPWINDOW: DWORD = 0x00040000; pub const WS_EX_OVERLAPPEDWINDOW: DWORD = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE; pub const WS_EX_PALETTEWINDOW: DWORD = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST; pub const WS_EX_LAYERED: DWORD = 0x00080000; pub const WS_EX_NOINHERITLAYOUT: DWORD = 0x00100000; pub const WS_EX_NOREDIRECTIONBITMAP: DWORD = 0x00200000; pub const WS_EX_LAYOUTRTL: DWORD = 0x00400000; pub const WS_EX_COMPOSITED: DWORD = 0x02000000; pub const WS_EX_NOACTIVATE: DWORD = 0x08000000; pub const CS_VREDRAW: UINT = 0x0001; pub const CS_HREDRAW: UINT = 0x0002; pub const CS_DBLCLKS: UINT = 0x0008; pub const CS_OWNDC: UINT = 0x0020; pub const CS_CLASSDC: UINT = 0x0040; pub const CS_PARENTDC: UINT = 0x0080; pub const CS_NOCLOSE: UINT = 0x0200; pub const CS_SAVEBITS: UINT = 0x0800; pub const CS_BYTEALIGNCLIENT: UINT = 0x1000; pub const CS_BYTEALIGNWINDOW: UINT = 0x2000; pub const CS_GLOBALCLASS: UINT = 0x4000; pub const CS_IME: UINT = 0x00010000; pub const CS_DROPSHADOW: UINT = 0x00020000; pub const PRF_CHECKVISIBLE: UINT = 0x00000001; pub const PRF_NONCLIENT: UINT = 0x00000002; pub const PRF_CLIENT: UINT = 0x00000004; pub const PRF_ERASEBKGND: UINT = 0x00000008; pub const PRF_CHILDREN: UINT = 0x00000010; pub const PRF_OWNED: UINT = 0x00000020; pub const BDR_RAISEDOUTER: UINT = 0x0001; pub const BDR_SUNKENOUTER: UINT = 0x0002; pub const BDR_RAISEDINNER: UINT = 0x0004; pub const BDR_SUNKENINNER: UINT = 0x0008; pub const BDR_OUTER: UINT = BDR_RAISEDOUTER | BDR_SUNKENOUTER; pub const BDR_INNER: UINT = BDR_RAISEDINNER | BDR_SUNKENINNER; pub const BDR_RAISED: UINT = BDR_RAISEDOUTER | BDR_RAISEDINNER; pub const BDR_SUNKEN: UINT = BDR_SUNKENOUTER | BDR_SUNKENINNER; pub const EDGE_RAISED: UINT = BDR_RAISEDOUTER | BDR_RAISEDINNER; pub const EDGE_SUNKEN: UINT = BDR_SUNKENOUTER | BDR_SUNKENINNER; pub const EDGE_ETCHED: UINT = BDR_SUNKENOUTER | BDR_RAISEDINNER; pub const EDGE_BUMP: UINT = BDR_RAISEDOUTER | BDR_SUNKENINNER; pub const BF_LEFT: UINT = 0x0001; pub const BF_TOP: UINT = 0x0002; pub const BF_RIGHT: UINT = 0x0004; pub const BF_BOTTOM: UINT = 0x0008; pub const BF_TOPLEFT: UINT = BF_TOP | BF_LEFT; pub const BF_TOPRIGHT: UINT = BF_TOP | BF_RIGHT; pub const BF_BOTTOMLEFT: UINT = BF_BOTTOM | BF_LEFT; pub const BF_BOTTOMRIGHT: UINT = BF_BOTTOM | BF_RIGHT; pub const BF_RECT: UINT = BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM; pub const BF_DIAGONAL: UINT = 0x0010; pub const BF_DIAGONAL_ENDTOPRIGHT: UINT = BF_DIAGONAL | BF_TOP | BF_RIGHT; pub const BF_DIAGONAL_ENDTOPLEFT: UINT = BF_DIAGONAL | BF_TOP | BF_LEFT; pub const BF_DIAGONAL_ENDBOTTOMLEFT: UINT = BF_DIAGONAL | BF_BOTTOM | BF_LEFT; pub const BF_DIAGONAL_ENDBOTTOMRIGHT: UINT = BF_DIAGONAL | BF_BOTTOM | BF_RIGHT; pub const BF_MIDDLE: UINT = 0x0800; pub const BF_SOFT: UINT = 0x1000; pub const BF_ADJUST: UINT = 0x2000; pub const BF_FLAT: UINT = 0x4000; pub const BF_MONO: UINT = 0x8000; extern "system" { pub fn DrawEdge( hdc: HDC, qrc: LPRECT, edge: UINT, grfFlags: UINT, ) -> BOOL; } pub const DFC_CAPTION: UINT = 1; pub const DFC_MENU: UINT = 2; pub const DFC_SCROLL: UINT = 3; pub const DFC_BUTTON: UINT = 4; pub const DFC_POPUPMENU: UINT = 5; pub const DFCS_CAPTIONCLOSE: UINT = 0x0000; pub const DFCS_CAPTIONMIN: UINT = 0x0001; pub const DFCS_CAPTIONMAX: UINT = 0x0002; pub const DFCS_CAPTIONRESTORE: UINT = 0x0003; pub const DFCS_CAPTIONHELP: UINT = 0x0004; pub const DFCS_MENUARROW: UINT = 0x0000; pub const DFCS_MENUCHECK: UINT = 0x0001; pub const DFCS_MENUBULLET: UINT = 0x0002; pub const DFCS_MENUARROWRIGHT: UINT = 0x0004; pub const DFCS_SCROLLUP: UINT = 0x0000; pub const DFCS_SCROLLDOWN: UINT = 0x0001; pub const DFCS_SCROLLLEFT: UINT = 0x0002; pub const DFCS_SCROLLRIGHT: UINT = 0x0003; pub const DFCS_SCROLLCOMBOBOX: UINT = 0x0005; pub const DFCS_SCROLLSIZEGRIP: UINT = 0x0008; pub const DFCS_SCROLLSIZEGRIPRIGHT: UINT = 0x0010; pub const DFCS_BUTTONCHECK: UINT = 0x0000; pub const DFCS_BUTTONRADIOIMAGE: UINT = 0x0001; pub const DFCS_BUTTONRADIOMASK: UINT = 0x0002; pub const DFCS_BUTTONRADIO: UINT = 0x0004; pub const DFCS_BUTTON3STATE: UINT = 0x0008; pub const DFCS_BUTTONPUSH: UINT = 0x0010; pub const DFCS_INACTIVE: UINT = 0x0100; pub const DFCS_PUSHED: UINT = 0x0200; pub const DFCS_CHECKED: UINT = 0x0400; pub const DFCS_TRANSPARENT: UINT = 0x0800; pub const DFCS_HOT: UINT = 0x1000; pub const DFCS_ADJUSTRECT: UINT = 0x2000; pub const DFCS_FLAT: UINT = 0x4000; pub const DFCS_MONO: UINT = 0x8000; extern "system" { pub fn DrawFrameControl( hdc: HDC, lprc: LPRECT, uType: UINT, uState: UINT, ) -> BOOL; } pub const DC_ACTIVE: UINT = 0x0001; pub const DC_SMALLCAP: UINT = 0x0002; pub const DC_ICON: UINT = 0x0004; pub const DC_TEXT: UINT = 0x0008; pub const DC_INBUTTON: UINT = 0x0010; pub const DC_GRADIENT: UINT = 0x0020; pub const DC_BUTTONS: UINT = 0x1000; extern "system" { pub fn DrawCaption( hwnd: HWND, hdc: HDC, lprect: *const RECT, flags: UINT, ) -> BOOL; } pub const IDANI_OPEN: c_int = 1; pub const IDANI_CAPTION: c_int = 3; extern "system" { pub fn DrawAnimatedRects( hwnd: HWND, idAni: c_int, lprcFrom: *const RECT, lprcTo: *const RECT, ) -> BOOL; } pub const CF_TEXT: UINT = 1; pub const CF_BITMAP: UINT = 2; pub const CF_METAFILEPICT: UINT = 3; pub const CF_SYLK: UINT = 4; pub const CF_DIF: UINT = 5; pub const CF_TIFF: UINT = 6; pub const CF_OEMTEXT: UINT = 7; pub const CF_DIB: UINT = 8; pub const CF_PALETTE: UINT = 9; pub const CF_PENDATA: UINT = 10; pub const CF_RIFF: UINT = 11; pub const CF_WAVE: UINT = 12; pub const CF_UNICODETEXT: UINT = 13; pub const CF_ENHMETAFILE: UINT = 14; pub const CF_HDROP: UINT = 15; pub const CF_LOCALE: UINT = 16; pub const CF_DIBV5: UINT = 17; pub const CF_MAX: UINT = 18; pub const CF_OWNERDISPLAY: UINT = 0x0080; pub const CF_DSPTEXT: UINT = 0x0081; pub const CF_DSPBITMAP: UINT = 0x0082; pub const CF_DSPMETAFILEPICT: UINT = 0x0083; pub const CF_DSPENHMETAFILE: UINT = 0x008E; pub const CF_PRIVATEFIRST: UINT = 0x0200; pub const CF_PRIVATELAST: UINT = 0x02FF; pub const CF_GDIOBJFIRST: UINT = 0x0300; pub const CF_GDIOBJLAST: UINT = 0x03FF; pub const FVIRTKEY: BYTE = TRUE as u8; pub const FNOINVERT: BYTE = 0x02; pub const FSHIFT: BYTE = 0x04; pub const FCONTROL: BYTE = 0x08; pub const FALT: BYTE = 0x10; STRUCT!{struct ACCEL { fVirt: BYTE, key: WORD, cmd: WORD, }} pub type LPACCEL = *mut ACCEL; STRUCT!{struct PAINTSTRUCT { hdc: HDC, fErase: BOOL, rcPaint: RECT, fRestore: BOOL, fIncUpdate: BOOL, rgbReserved: [BYTE; 32], }} pub type PPAINTSTRUCT = *mut PAINTSTRUCT; pub type NPPAINTSTRUCT = *mut PAINTSTRUCT; pub type LPPAINTSTRUCT = *mut PAINTSTRUCT; STRUCT!{struct CREATESTRUCTA { lpCreateParams: LPVOID, hInstance: HINSTANCE, hMenu: HMENU, hwndParent: HWND, cy: c_int, cx: c_int, y: c_int, x: c_int, style: LONG, lpszName: LPCSTR, lpszClass: LPCSTR, dwExStyle: DWORD, }} pub type LPCREATESTRUCTA = *mut CREATESTRUCTA; STRUCT!{struct CREATESTRUCTW { lpCreateParams: LPVOID, hInstance: HINSTANCE, hMenu: HMENU, hwndParent: HWND, cy: c_int, cx: c_int, y: c_int, x: c_int, style: LONG, lpszName: LPCWSTR, lpszClass: LPCWSTR, dwExStyle: DWORD, }} pub type LPCREATESTRUCTW = *mut CREATESTRUCTW; STRUCT!{struct WINDOWPLACEMENT { length: UINT, flags: UINT, showCmd: UINT, ptMinPosition: POINT, ptMaxPosition: POINT, rcNormalPosition: RECT, }} pub type PWINDOWPLACEMENT = *mut WINDOWPLACEMENT; pub type LPWINDOWPLACEMENT = *mut WINDOWPLACEMENT; pub const WPF_SETMINPOSITION: UINT = 0x0001; pub const WPF_RESTORETOMAXIMIZED: UINT = 0x0002; pub const WPF_ASYNCWINDOWPLACEMENT: UINT = 0x0004; STRUCT!{struct NMHDR { hwndFrom: HWND, idFrom: UINT_PTR, code: UINT, }} pub type LPNMHDR = *mut NMHDR; STRUCT!{struct STYLESTRUCT { styleOld: DWORD, styleNew: DWORD, }} pub type LPSTYLESTRUCT = *mut STYLESTRUCT; pub const ODT_MENU: UINT = 1; pub const ODT_LISTBOX: UINT = 2; pub const ODT_COMBOBOX: UINT = 3; pub const ODT_BUTTON: UINT = 4; pub const ODT_STATIC: UINT = 5; pub const ODA_DRAWENTIRE: UINT = 0x0001; pub const ODA_SELECT: UINT = 0x0002; pub const ODA_FOCUS: UINT = 0x0004; pub const ODS_SELECTED: UINT = 0x0001; pub const ODS_GRAYED: UINT = 0x0002; pub const ODS_DISABLED: UINT = 0x0004; pub const ODS_CHECKED: UINT = 0x0008; pub const ODS_FOCUS: UINT = 0x0010; pub const ODS_DEFAULT: UINT = 0x0020; pub const ODS_COMBOBOXEDIT: UINT = 0x1000; pub const ODS_HOTLIGHT: UINT = 0x0040; pub const ODS_INACTIVE: UINT = 0x0080; pub const ODS_NOACCEL: UINT = 0x0100; pub const ODS_NOFOCUSRECT: UINT = 0x0200; STRUCT!{struct MEASUREITEMSTRUCT { CtlType: UINT, CtlID: UINT, itemID: UINT, itemWidth: UINT, itemHeight: UINT, itemData: ULONG_PTR, }} pub type PMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT; pub type LPMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT; STRUCT!{struct DRAWITEMSTRUCT { CtlType: UINT, CtlID: UINT, itemID: UINT, itemAction: UINT, itemState: UINT, hwndItem: HWND, hDC: HDC, rcItem: RECT, itemData: ULONG_PTR, }} pub type PDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT; pub type LPDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT; STRUCT!{struct DELETEITEMSTRUCT { CtlType: UINT, CtlID: UINT, itemID: UINT, hwndItem: HWND, itemData: ULONG_PTR, }} pub type PDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT; pub type LPDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT; STRUCT!{struct COMPAREITEMSTRUCT { CtlType: UINT, CtlID: UINT, hwndItem: HWND, itemID1: UINT, itemData1: ULONG_PTR, itemID2: UINT, itemData2: ULONG_PTR, dwLocaleId: DWORD, }} pub type PCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT; pub type LPCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT; extern "system" { pub fn GetMessageA( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, ) -> BOOL; pub fn GetMessageW( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, ) -> BOOL; pub fn TranslateMessage( lpmsg: *const MSG, ) -> BOOL; pub fn DispatchMessageA( lpmsg: *const MSG, ) -> LRESULT; pub fn DispatchMessageW( lpmsg: *const MSG, ) -> LRESULT; pub fn SetMessageQueue( cMessagesMax: c_int, ) -> BOOL; pub fn PeekMessageA( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT, ) -> BOOL; pub fn PeekMessageW( lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT, ) -> BOOL; } pub const PM_NOREMOVE: UINT = 0x0000; pub const PM_REMOVE: UINT = 0x0001; pub const PM_NOYIELD: UINT = 0x0002; pub const PM_QS_INPUT: UINT = QS_INPUT << 16; pub const PM_QS_POSTMESSAGE: UINT = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16; pub const PM_QS_PAINT: UINT = QS_PAINT << 16; pub const PM_QS_SENDMESSAGE: UINT = QS_SENDMESSAGE << 16; extern "system" { pub fn RegisterHotKey( hwnd: HWND, id: c_int, fsModifiers: UINT, vk: UINT, ) -> BOOL; pub fn UnregisterHotKey( hWnd: HWND, id: c_int, ) -> BOOL; } pub const MOD_ALT: LPARAM = 0x0001; pub const MOD_CONTROL: LPARAM = 0x0002; pub const MOD_SHIFT: LPARAM = 0x0004; pub const MOD_WIN: LPARAM = 0x0008; pub const MOD_NOREPEAT: LPARAM = 0x4000; pub const IDHOT_SNAPWINDOW: WPARAM = -1isize as usize; pub const IDHOT_SNAPDESKTOP: WPARAM = -2isize as usize; pub const ENDSESSION_CLOSEAPP: UINT = 0x00000001; pub const ENDSESSION_CRITICAL: UINT = 0x40000000; pub const ENDSESSION_LOGOFF: UINT = 0x80000000; pub const EWX_LOGOFF: UINT = 0x00000000; pub const EWX_SHUTDOWN: UINT = 0x00000001; pub const EWX_REBOOT: UINT = 0x00000002; pub const EWX_FORCE: UINT = 0x00000004; pub const EWX_POWEROFF: UINT = 0x00000008; pub const EWX_FORCEIFHUNG: UINT = 0x00000010; pub const EWX_QUICKRESOLVE: UINT = 0x00000020; pub const EWX_RESTARTAPPS: UINT = 0x00000040; pub const EWX_HYBRID_SHUTDOWN: UINT = 0x00400000; pub const EWX_BOOTOPTIONS: UINT = 0x01000000; // ExitWindows extern "system" { pub fn ExitWindowsEx( uFlags: UINT, dwReason: DWORD, ) -> BOOL; pub fn SwapMouseButton( fSwap: BOOL, ) -> BOOL; pub fn GetMessagePos() -> DWORD; pub fn GetMessageTime() -> LONG; pub fn GetMessageExtraInfo() -> LPARAM; pub fn GetUnpredictedMessagePos() -> DWORD; pub fn IsWow64Message() -> BOOL; pub fn SetMessageExtraInfo( lParam: LPARAM, ) -> LPARAM; pub fn SendMessageA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn SendMessageW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn SendMessageTimeoutA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR, ) -> LRESULT; pub fn SendMessageTimeoutW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR, ) -> LRESULT; pub fn SendNotifyMessageA( hWnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL; pub fn SendNotifyMessageW( hWnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL; pub fn SendMessageCallbackA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR, ) -> BOOL; pub fn SendMessageCallbackW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, lpResultCallBack: SENDASYNCPROC, dwData: ULONG_PTR, ) -> BOOL; } STRUCT!{struct BSMINFO { cbSize: UINT, hdesk: HDESK, hwnd: HWND, luid: LUID, }} pub type PBSMINFO = *mut BSMINFO; extern "system" { pub fn BroadcastSystemMessageExA( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO, ) -> c_long; pub fn BroadcastSystemMessageExW( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, pbsmInfo: PBSMINFO, ) -> c_long; pub fn BroadcastSystemMessageA( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LONG; pub fn BroadcastSystemMessageW( flags: DWORD, lpInfo: LPDWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LONG; } pub const BSM_ALLCOMPONENTS: DWORD = 0x00000000; pub const BSM_VXDS: DWORD = 0x00000001; pub const BSM_NETDRIVER: DWORD = 0x00000002; pub const BSM_INSTALLABLEDRIVERS: DWORD = 0x00000004; pub const BSM_APPLICATIONS: DWORD = 0x00000008; pub const BSM_ALLDESKTOPS: DWORD = 0x00000010; pub const BSF_QUERY: DWORD = 0x00000001; pub const BSF_IGNORECURRENTTASK: DWORD = 0x00000002; pub const BSF_FLUSHDISK: DWORD = 0x00000004; pub const BSF_NOHANG: DWORD = 0x00000008; pub const BSF_POSTMESSAGE: DWORD = 0x00000010; pub const BSF_FORCEIFHUNG: DWORD = 0x00000020; pub const BSF_NOTIMEOUTIFNOTHUNG: DWORD = 0x00000040; pub const BSF_ALLOWSFW: DWORD = 0x00000080; pub const BSF_SENDNOTIFYMESSAGE: DWORD = 0x00000100; pub const BSF_RETURNHDESK: DWORD = 0x00000200; pub const BSF_LUID: DWORD = 0x00000400; pub const BROADCAST_QUERY_DENY: DWORD = 0x424D5144; pub type HDEVNOTIFY = PVOID; pub type PHDEVNOTIFY = *mut HDEVNOTIFY; pub const DEVICE_NOTIFY_WINDOW_HANDLE: DWORD = 0x00000000; pub const DEVICE_NOTIFY_SERVICE_HANDLE: DWORD = 0x00000001; pub const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES: DWORD = 0x00000004; extern "system" { pub fn RegisterDeviceNotificationA( hRecipient: HANDLE, notificationFilter: LPVOID, flags: DWORD, ) -> HDEVNOTIFY; pub fn RegisterDeviceNotificationW( hRecipient: HANDLE, notificationFilter: LPVOID, flags: DWORD, ) -> HDEVNOTIFY; pub fn UnregisterDeviceNotification( Handle: HDEVNOTIFY, ) -> BOOL; } pub type HPOWERNOTIFY = PVOID; pub type PHPOWERNOTIFY = *mut HPOWERNOTIFY; extern "system" { pub fn RegisterPowerSettingNotification( hRecipient: HANDLE, PowerSettingGuid: LPCGUID, Flags: DWORD, ) -> HPOWERNOTIFY; pub fn UnregisterPowerSettingNotification( Handle: HPOWERNOTIFY, ) -> BOOL; pub fn RegisterSuspendResumeNotification( hRecipient: HANDLE, Flags: DWORD, ) -> HPOWERNOTIFY; pub fn UnregisterSuspendResumeNotification( Handle: HPOWERNOTIFY, ) -> BOOL; pub fn PostMessageA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL; pub fn PostMessageW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL; pub fn PostThreadMessageA( idThread: DWORD, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL; pub fn PostThreadMessageW( idThread: DWORD, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> BOOL; } // PostAppMessageA // PostAppMessageW pub const HWND_BROADCAST: HWND = 0xffff as HWND; pub const HWND_MESSAGE: HWND = -3isize as HWND; extern "system" { pub fn AttachThreadInput( idAttach: DWORD, idAttachTo: DWORD, fAttach: BOOL, ) -> BOOL; pub fn ReplyMessage( lResult: LRESULT, ) -> BOOL; pub fn WaitMessage() -> BOOL; pub fn WaitForInputIdle( hProcess: HANDLE, dwMilliseconds: DWORD, ) -> DWORD; pub fn DefWindowProcA( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn DefWindowProcW( hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn PostQuitMessage( nExitCode: c_int, ); pub fn CallWindowProcA( lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn CallWindowProcW( lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn InSendMessage() -> BOOL; pub fn InSendMessageEx( lpReserved: LPVOID, ) -> DWORD; } pub const ISMEX_NOSEND: DWORD = 0x00000000; pub const ISMEX_SEND: DWORD = 0x00000001; pub const ISMEX_NOTIFY: DWORD = 0x00000002; pub const ISMEX_CALLBACK: DWORD = 0x00000004; pub const ISMEX_REPLIED: DWORD = 0x00000008; extern "system" { pub fn GetDoubleClickTime() -> UINT; pub fn SetDoubleClickTime( uInterval: UINT, ) -> BOOL; pub fn RegisterClassA( lpWndClass: *const WNDCLASSA, ) -> ATOM; pub fn RegisterClassW( lpWndClass: *const WNDCLASSW, ) -> ATOM; pub fn UnregisterClassA( lpClassName: LPCSTR, hInstance: HINSTANCE, ) -> BOOL; pub fn UnregisterClassW( lpClassName: LPCWSTR, hInstance: HINSTANCE, ) -> BOOL; pub fn GetClassInfoA( hInstance: HINSTANCE, lpClassName: LPCSTR, lpWndClass: LPWNDCLASSA, ) -> BOOL; pub fn GetClassInfoW( hInstance: HINSTANCE, lpClassName: LPCWSTR, lpWndClass: LPWNDCLASSW, ) -> BOOL; pub fn RegisterClassExA( lpWndClass: *const WNDCLASSEXA, ) -> ATOM; pub fn RegisterClassExW( lpWndClass: *const WNDCLASSEXW, ) -> ATOM; pub fn GetClassInfoExA( hinst: HINSTANCE, lpszClass: LPCSTR, lpwcx: LPWNDCLASSEXA, ) -> BOOL; pub fn GetClassInfoExW( hinst: HINSTANCE, lpszClass: LPCWSTR, lpwcx: LPWNDCLASSEXW, ) -> BOOL; } pub const CW_USEDEFAULT: c_int = 0x80000000; pub const HWND_DESKTOP: HWND = 0 as HWND; FN!{stdcall PREGISTERCLASSNAMEW( LPCWSTR, ) -> BOOLEAN} extern "system" { pub fn CreateWindowExA( dwExStyle: DWORD, lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, x: c_int, y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID, ) -> HWND; pub fn CreateWindowExW( dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, x: c_int, y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID, ) -> HWND; } // CreateWindowA // CreateWindowW extern "system" { pub fn IsWindow( hWnd: HWND, ) -> BOOL; pub fn IsMenu( hMenu: HMENU, ) -> BOOL; pub fn IsChild( hWndParent: HWND, hWnd: HWND, ) -> BOOL; pub fn DestroyWindow( hWnd: HWND, ) -> BOOL; pub fn ShowWindow( hWnd: HWND, nCmdShow: c_int, ) -> BOOL; pub fn AnimateWindow( hWnd: HWND, dwTime: DWORD, dwFlags: DWORD, ) -> BOOL; pub fn UpdateLayeredWindow( hWnd: HWND, hdcDst: HDC, pptDst: *mut POINT, psize: *mut SIZE, hdcSrc: HDC, pptSrc: *mut POINT, crKey: COLORREF, pblend: *mut BLENDFUNCTION, dwFlags: DWORD, ) -> BOOL; } STRUCT!{struct UPDATELAYEREDWINDOWINFO { cbSize: DWORD, hdcDst: HDC, pptDst: *const POINT, psize: *const SIZE, hdcSrc: HDC, pptSrc: *const POINT, crKey: COLORREF, pblend: *const BLENDFUNCTION, dwFlags: DWORD, prcDirty: *const RECT, }} pub type PUPDATELAYEREDWINDOWINFO = *mut UPDATELAYEREDWINDOWINFO; extern "system" { pub fn UpdateLayeredWindowIndirect( hWnd: HWND, pULWInfo: *mut UPDATELAYEREDWINDOWINFO, ) -> BOOL; pub fn GetLayeredWindowAttributes( hwnd: HWND, pcrKey: *mut COLORREF, pbAlpha: *mut BYTE, pdwFlags: *mut DWORD, ) -> BOOL; } pub const PW_CLIENTONLY: DWORD = 0x00000001; pub const PW_RENDERFULLCONTENT: DWORD = 0x00000002; extern "system" { pub fn PrintWindow( hwnd: HWND, hdcBlt: HDC, nFlags: UINT, ) -> BOOL; pub fn SetLayeredWindowAttributes( hwnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD, ) -> BOOL; } pub const LWA_COLORKEY: DWORD = 0x00000001; pub const LWA_ALPHA: DWORD = 0x00000002; pub const ULW_COLORKEY: DWORD = 0x00000001; pub const ULW_ALPHA: DWORD = 0x00000002; pub const ULW_OPAQUE: DWORD = 0x00000004; pub const ULW_EX_NORESIZE: DWORD = 0x00000008; extern "system" { pub fn ShowWindowAsync( hWnd: HWND, nCmdShow: c_int, ) -> BOOL; pub fn FlashWindow( hwnd: HWND, bInvert: BOOL, ) -> BOOL; } STRUCT!{struct FLASHWINFO { cbSize: UINT, hwnd: HWND, dwFlags: DWORD, uCount: UINT, dwTimeout: DWORD, }} pub type PFLASHWINFO = *mut FLASHWINFO; extern "system" { pub fn FlashWindowEx( pfwi: PFLASHWINFO, ) -> BOOL; } pub const FLASHW_STOP: DWORD = 0; pub const FLASHW_CAPTION: DWORD = 0x00000001; pub const FLASHW_TRAY: DWORD = 0x00000002; pub const FLASHW_ALL: DWORD = FLASHW_CAPTION | FLASHW_TRAY; pub const FLASHW_TIMER: DWORD = 0x00000004; pub const FLASHW_TIMERNOFG: DWORD = 0x0000000C; extern "system" { pub fn ShowOwnedPopups( hWnd: HWND, fShow: BOOL, ) -> BOOL; pub fn OpenIcon( hWnd: HWND, ) -> BOOL; pub fn CloseWindow( hWnd: HWND, ) -> BOOL; pub fn MoveWindow( hWnd: HWND, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, bRepaint: BOOL, ) -> BOOL; pub fn SetWindowPos( hWnd: HWND, hWndInsertAfter: HWND, X: c_int, Y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> BOOL; pub fn GetWindowPlacement( hWnd: HWND, lpwndpl: *mut WINDOWPLACEMENT, ) -> BOOL; pub fn SetWindowPlacement( hWnd: HWND, lpwndpl: *const WINDOWPLACEMENT, ) -> BOOL; } pub const WDA_NONE: DWORD = 0x00000000; pub const WDA_MONITOR: DWORD = 0x00000001; extern "system" { pub fn GetWindowDisplayAffinity( hWnd: HWND, pdwAffinity: *mut DWORD, ) -> BOOL; pub fn SetWindowDisplayAffinity( hWnd: HWND, dwAffinity: DWORD, ) -> BOOL; pub fn BeginDeferWindowPos( nNumWindows: c_int, ) -> HDWP; pub fn DeferWindowPos( hWinPosInfo: HDWP, hWnd: HWND, hWndInserAfter: HWND, x: c_int, y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> HDWP; pub fn EndDeferWindowPos( hWinPosInfo: HDWP, ) -> BOOL; pub fn IsWindowVisible( hWnd: HWND, ) -> BOOL; pub fn IsIconic( hWnd: HWND, ) -> BOOL; pub fn AnyPopup() -> BOOL; pub fn BringWindowToTop( hWnd: HWND, ) -> BOOL; pub fn IsZoomed( hwnd: HWND, ) -> BOOL; } pub const SWP_NOSIZE: UINT = 0x0001; pub const SWP_NOMOVE: UINT = 0x0002; pub const SWP_NOZORDER: UINT = 0x0004; pub const SWP_NOREDRAW: UINT = 0x0008; pub const SWP_NOACTIVATE: UINT = 0x0010; pub const SWP_FRAMECHANGED: UINT = 0x0020; pub const SWP_SHOWWINDOW: UINT = 0x0040; pub const SWP_HIDEWINDOW: UINT = 0x0080; pub const SWP_NOCOPYBITS: UINT = 0x0100; pub const SWP_NOOWNERZORDER: UINT = 0x0200; pub const SWP_NOSENDCHANGING: UINT = 0x0400; pub const SWP_DRAWFRAME: UINT = SWP_FRAMECHANGED; pub const SWP_NOREPOSITION: UINT = SWP_NOOWNERZORDER; pub const SWP_DEFERERASE: UINT = 0x2000; pub const SWP_ASYNCWINDOWPOS: UINT = 0x4000; pub const HWND_TOP: HWND = 0 as HWND; pub const HWND_BOTTOM: HWND = 1 as HWND; pub const HWND_TOPMOST: HWND = -1isize as HWND; pub const HWND_NOTOPMOST: HWND = -2isize as HWND; STRUCT!{struct DLGTEMPLATE { style: DWORD, dwExtendedStyle: DWORD, cdit: WORD, x: c_short, y: c_short, cx: c_short, cy: c_short, }} pub type LPDLGTEMPLATEA = *mut DLGTEMPLATE; pub type LPDLGTEMPLATEW = *mut DLGTEMPLATE; pub type LPCDLGTEMPLATEA = *const DLGTEMPLATE; pub type LPCDLGTEMPLATEW = *const DLGTEMPLATE; STRUCT!{struct DLGITEMTEMPLATE { style: DWORD, dwExtendedStyle: DWORD, x: c_short, y: c_short, cx: c_short, cy: c_short, id: WORD, }} pub type PDLGITEMTEMPLATEA = *mut DLGITEMTEMPLATE; pub type PDLGITEMTEMPLATEW = *mut DLGITEMTEMPLATE; pub type LPDLGITEMTEMPLATEA = *mut DLGITEMTEMPLATE; pub type LPDLGITEMTEMPLATEW = *mut DLGITEMTEMPLATE; extern "system" { pub fn CreateDialogParamA( hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND; pub fn CreateDialogParamW( hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND; pub fn CreateDialogIndirectParamA( hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND; pub fn CreateDialogIndirectParamW( hInstance: HINSTANCE, lpTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> HWND; } // CreateDialogA // CreateDialogW // CreateDialogIndirectA // CreateDialogIndirectW extern "system" { pub fn DialogBoxParamA( hInstance: HINSTANCE, lpTemplateName: LPCSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR; pub fn DialogBoxParamW( hInstance: HINSTANCE, lpTemplateName: LPCWSTR, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR; pub fn DialogBoxIndirectParamA( hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEA, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR; pub fn DialogBoxIndirectParamW( hInstance: HINSTANCE, hDialogTemplate: LPCDLGTEMPLATEW, hWndParent: HWND, lpDialogFunc: DLGPROC, dwInitParam: LPARAM, ) -> INT_PTR; } // DialogBoxA // DialogBoxW // DialogBoxIndirectA // DialogBoxIndirectW extern "system" { pub fn EndDialog( hDlg: HWND, nResult: INT_PTR, ) -> BOOL; pub fn GetDlgItem( hDlg: HWND, nIDDlgItem: c_int, ) -> HWND; pub fn SetDlgItemInt( hDlg: HWND, nIDDlgItem: c_int, uValue: UINT, bSigned: BOOL, ) -> BOOL; pub fn GetDlgItemInt( hDlg: HWND, nIDDlgItem: c_int, lpTranslated: *mut BOOL, bSigned: BOOL, ) -> UINT; pub fn SetDlgItemTextA( hDlg: HWND, nIDDlgItem: c_int, lpString: LPCSTR, ) -> BOOL; pub fn SetDlgItemTextW( hDlg: HWND, nIDDlgItem: c_int, lpString: LPCWSTR, ) -> BOOL; pub fn GetDlgItemTextA( hDlg: HWND, nIDDlgItem: c_int, lpString: LPSTR, nMaxCount: c_int, ) -> UINT; pub fn GetDlgItemTextW( hDlg: HWND, nIDDlgItem: c_int, lpString: LPWSTR, nMaxCount: c_int, ) -> UINT; pub fn CheckDlgButton( hDlg: HWND, nIDButton: c_int, uCheck: UINT, ) -> BOOL; pub fn CheckRadioButton( hDlg: HWND, nIDFirstButton: c_int, nIDLasatButton: c_int, nIDCheckButton: c_int, ) -> BOOL; pub fn IsDlgButtonChecked( hDlg: HWND, nIDButton: c_int, ) -> UINT; pub fn SendDlgItemMessageA( hDlg: HWND, nIDDlgItem: c_int, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn SendDlgItemMessageW( hDlg: HWND, nIDDlgItem: c_int, Msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn GetNextDlgGroupItem( hDlg: HWND, hCtl: HWND, bPrevious: BOOL, ) -> HWND; pub fn GetNextDlgTabItem( hDlg: HWND, hCtl: HWND, bPrevious: BOOL, ) -> HWND; pub fn GetDlgCtrlID( hwnd: HWND, ) -> c_int; pub fn GetDialogBaseUnits() -> LONG; pub fn DefDlgProcA( hDlg: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn DefDlgProcW( hDlg: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; } ENUM!{enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS { DCDC_DEFAULT = 0x0000, DCDC_DISABLE_FONT_UPDATE = 0x0001, DCDC_DISABLE_RELAYOUT = 0x0002, }} extern "system" { pub fn SetDialogControlDpiChangeBehavior( hwnd: HWND, mask: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS, values: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS, ) -> BOOL; pub fn GetDialogControlDpiChangeBehavior( hwnd: HWND, ) -> DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS; } ENUM!{enum DIALOG_DPI_CHANGE_BEHAVIORS { DDC_DEFAULT = 0x0000, DDC_DISABLE_ALL = 0x0001, DDC_DISABLE_RESIZE = 0x0002, DDC_DISABLE_CONTROL_RELAYOUT = 0x0004, }} extern "system" { pub fn SetDialogDpiChangeBehavior( hDlg: HWND, mask: DIALOG_DPI_CHANGE_BEHAVIORS, values: DIALOG_DPI_CHANGE_BEHAVIORS, ) -> BOOL; pub fn GetDialogDpiChangeBehavior( hDlg: HWND, ) -> DIALOG_DPI_CHANGE_BEHAVIORS; pub fn CallMsgFilterA( lpMsg: LPMSG, nCode: c_int, ) -> BOOL; pub fn CallMsgFilterW( lpMsg: LPMSG, nCode: c_int, ) -> BOOL; pub fn OpenClipboard( hWnd: HWND, ) -> BOOL; pub fn CloseClipboard() -> BOOL; pub fn GetClipboardSequenceNumber() -> DWORD; pub fn GetClipboardOwner() -> HWND; pub fn SetClipboardViewer( hWndNewViewer: HWND, ) -> HWND; pub fn GetClipboardViewer() -> HWND; pub fn ChangeClipboardChain( hwndRemove: HWND, hwndNewNext: HWND, ) -> BOOL; pub fn SetClipboardData( uFormat: UINT, hMem: HANDLE, ) -> HANDLE; pub fn GetClipboardData( uFormat: UINT, ) -> HANDLE; pub fn RegisterClipboardFormatA( lpszFormat: LPCSTR, ) -> UINT; pub fn RegisterClipboardFormatW( lpszFormat: LPCWSTR, ) -> UINT; pub fn CountClipboardFormats() -> c_int; pub fn EnumClipboardFormats( format: UINT, ) -> UINT; pub fn GetClipboardFormatNameA( format: UINT, lpszFormatName: LPSTR, cchMaxCount: c_int, ) -> c_int; pub fn GetClipboardFormatNameW( format: UINT, lpszFormatName: LPWSTR, cchMaxCount: c_int, ) -> c_int; pub fn EmptyClipboard() -> BOOL; pub fn IsClipboardFormatAvailable( format: UINT, ) -> BOOL; pub fn GetPriorityClipboardFormat( paFormatPriorityList: *mut UINT, cFormats: c_int, ) -> c_int; pub fn GetOpenClipboardWindow() -> HWND; pub fn AddClipboardFormatListener( hWnd: HWND, ) -> BOOL; pub fn RemoveClipboardFormatListener( hWnd: HWND, ) -> BOOL; pub fn GetUpdatedClipboardFormats( lpuiFormats: PUINT, cFormats: UINT, pcFormatsOUT: PUINT, ) -> BOOL; pub fn CharToOemA( pSrc: LPCSTR, pDst: LPSTR, ) -> BOOL; pub fn CharToOemW( pSrc: LPCWSTR, pDst: LPSTR, ) -> BOOL; pub fn OemToCharA( pSrc: LPCSTR, pDst: LPSTR, ) -> BOOL; pub fn OemToCharW( pSrc: LPCSTR, pDst: LPWSTR, ) -> BOOL; pub fn CharToOemBuffA( lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD, ) -> BOOL; pub fn CharToOemBuffW( lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD, ) -> BOOL; pub fn OemToCharBuffA( lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD, ) -> BOOL; pub fn OemToCharBuffW( lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD, ) -> BOOL; pub fn CharUpperA( lpsz: LPSTR, ) -> LPSTR; pub fn CharUpperW( lpsz: LPWSTR, ) -> LPWSTR; pub fn CharUpperBuffA( lpsz: LPSTR, cchLength: DWORD, ) -> DWORD; pub fn CharUpperBuffW( lpsz: LPWSTR, cchLength: DWORD, ) -> DWORD; pub fn CharLowerA( lpsz: LPSTR, ) -> LPSTR; pub fn CharLowerW( lpsz: LPWSTR, ) -> LPWSTR; pub fn CharLowerBuffA( lpsz: LPSTR, cchLength: DWORD, ) -> DWORD; pub fn CharLowerBuffW( lpsz: LPWSTR, cchLength: DWORD, ) -> DWORD; pub fn CharNextA( lpsz: LPCSTR, ) -> LPSTR; pub fn CharNextW( lpsz: LPCWSTR, ) -> LPWSTR; pub fn CharPrevA( lpszStart: LPCSTR, lpszCurrent: LPCSTR, ) -> LPSTR; pub fn CharPrevW( lpszStart: LPCWSTR, lpszCurrent: LPCWSTR, ) -> LPWSTR; pub fn CharNextExA( codePage: WORD, lpCurrentChar: LPSTR, dwFlags: DWORD, ) -> LPSTR; pub fn CharPrevExA( codePage: WORD, lpStart: LPCSTR, lpCurrentChar: LPCSTR, dwFlags: DWORD, ) -> LPSTR; } // AnsiToOem // OemToAnsi // AnsiToOemBuff // OemToAnsiBuff // AnsiUpper // AnsiUpperBuff // AnsiLower // AnsiLowerBuff // AnsiNext // AnsiPrev extern "system" { pub fn IsCharAlphaA( ch: CHAR, ) -> BOOL; pub fn IsCharAlphaW( ch: WCHAR, ) -> BOOL; pub fn IsCharAlphaNumericA( ch: CHAR, ) -> BOOL; pub fn IsCharAlphaNumericW( ch: WCHAR, ) -> BOOL; pub fn IsCharUpperA( ch: CHAR, ) -> BOOL; pub fn IsCharUpperW( ch: WCHAR, ) -> BOOL; pub fn IsCharLowerA( ch: CHAR, ) -> BOOL; pub fn IsCharLowerW( ch: WCHAR, ) -> BOOL; pub fn SetFocus( hWnd: HWND, ) -> HWND; pub fn GetActiveWindow() -> HWND; pub fn GetFocus() -> HWND; pub fn GetKBCodePage() -> UINT; pub fn GetKeyState( nVirtKey: c_int, ) -> SHORT; pub fn GetAsyncKeyState( vKey: c_int, ) -> SHORT; pub fn GetKeyboardState( lpKeyState: PBYTE, ) -> BOOL; pub fn SetKeyboardState( lpKeyState: LPBYTE, ) -> BOOL; pub fn GetKeyNameTextA( lparam: LONG, lpString: LPSTR, cchSize: c_int, ) -> c_int; pub fn GetKeyNameTextW( lParam: LONG, lpString: LPWSTR, cchSize: c_int, ) -> c_int; pub fn GetKeyboardType( nTypeFlag: c_int, ) -> c_int; pub fn ToAscii( uVirtKey: UINT, uScanCode: UINT, lpKeyState: *const BYTE, lpChar: LPWORD, uFlags: UINT, ) -> c_int; pub fn ToAsciiEx( uVirtKey: UINT, uScanCode: UINT, lpKeyState: *const BYTE, lpChar: LPWORD, uFlags: UINT, dwhkl: HKL, ) -> c_int; pub fn ToUnicode( wVirtKey: UINT, wScanCode: UINT, lpKeyState: *const BYTE, lwszBuff: LPWSTR, cchBuff: c_int, wFlags: UINT, ) -> c_int; pub fn OemKeyScan( wOemChar: WORD, ) -> DWORD; pub fn VkKeyScanA( ch: CHAR, ) -> SHORT; pub fn VkKeyScanW( ch: WCHAR, ) -> SHORT; pub fn VkKeyScanExA( ch: CHAR, dwhkl: HKL, ) -> SHORT; pub fn VkKeyScanExW( ch: WCHAR, dwhkl: HKL, ) -> SHORT; } pub const KEYEVENTF_EXTENDEDKEY: DWORD = 0x0001; pub const KEYEVENTF_KEYUP: DWORD = 0x0002; pub const KEYEVENTF_UNICODE: DWORD = 0x0004; pub const KEYEVENTF_SCANCODE: DWORD = 0x0008; extern "system" { pub fn keybd_event( bVk: BYTE, bScan: BYTE, dwFlags: DWORD, dwExtraInfo: ULONG_PTR, ); } pub const MOUSEEVENTF_MOVE: DWORD = 0x0001; pub const MOUSEEVENTF_LEFTDOWN: DWORD = 0x0002; pub const MOUSEEVENTF_LEFTUP: DWORD = 0x0004; pub const MOUSEEVENTF_RIGHTDOWN: DWORD = 0x0008; pub const MOUSEEVENTF_RIGHTUP: DWORD = 0x0010; pub const MOUSEEVENTF_MIDDLEDOWN: DWORD = 0x0020; pub const MOUSEEVENTF_MIDDLEUP: DWORD = 0x0040; pub const MOUSEEVENTF_XDOWN: DWORD = 0x0080; pub const MOUSEEVENTF_XUP: DWORD = 0x0100; pub const MOUSEEVENTF_WHEEL: DWORD = 0x0800; pub const MOUSEEVENTF_HWHEEL: DWORD = 0x01000; pub const MOUSEEVENTF_MOVE_NOCOALESCE: DWORD = 0x2000; pub const MOUSEEVENTF_VIRTUALDESK: DWORD = 0x4000; pub const MOUSEEVENTF_ABSOLUTE: DWORD = 0x8000; extern "system" { pub fn mouse_event( dwFlags: DWORD, dx: DWORD, dy: DWORD, dwData: DWORD, dwExtraInfo: ULONG_PTR, ); } STRUCT!{struct MOUSEINPUT { dx: LONG, dy: LONG, mouseData: DWORD, dwFlags: DWORD, time: DWORD, dwExtraInfo: ULONG_PTR, }} pub type PMOUSEINPUT = *mut MOUSEINPUT; pub type LPMOUSEINPUT = *mut MOUSEINPUT; STRUCT!{struct KEYBDINPUT { wVk: WORD, wScan: WORD, dwFlags: DWORD, time: DWORD, dwExtraInfo: ULONG_PTR, }} pub type PKEYBDINPUT = *mut KEYBDINPUT; pub type LPKEYBDINPUT = *mut KEYBDINPUT; STRUCT!{struct HARDWAREINPUT { uMsg: DWORD, wParamL: WORD, wParamH: WORD, }} pub type PHARDWAREINPUT = *mut HARDWAREINPUT; pub type LPHARDWAREINPUT= *mut HARDWAREINPUT; pub const INPUT_MOUSE: DWORD = 0; pub const INPUT_KEYBOARD: DWORD = 1; pub const INPUT_HARDWARE: DWORD = 2; UNION!{union INPUT_u { [u32; 6] [u64; 4], mi mi_mut: MOUSEINPUT, ki ki_mut: KEYBDINPUT, hi hi_mut: HARDWAREINPUT, }} STRUCT!{struct INPUT { type_: DWORD, u: INPUT_u, }} pub type PINPUT = *mut INPUT; pub type LPINPUT = *mut INPUT; extern "system" { pub fn SendInput( cInputs: UINT, pInputs: LPINPUT, cbSize: c_int, ) -> UINT; } DECLARE_HANDLE!{HTOUCHINPUT, HTOUCHINPUT__} STRUCT!{struct TOUCHINPUT { x: LONG, y: LONG, hSource: HANDLE, dwID: DWORD, dwFlags: DWORD, dwMask: DWORD, dwTime: DWORD, dwExtraInfo: ULONG_PTR, cxContact: DWORD, cyContact: DWORD, }} pub type PTOUCHINPUT = *mut TOUCHINPUT; pub type PCTOUCHINPUT = *const TOUCHINPUT; // TOUCH_COORD_TO_PIXEL pub const TOUCHEVENTF_MOVE: DWORD = 0x0001; pub const TOUCHEVENTF_DOWN: DWORD = 0x0002; pub const TOUCHEVENTF_UP: DWORD = 0x0004; pub const TOUCHEVENTF_INRANGE: DWORD = 0x0008; pub const TOUCHEVENTF_PRIMARY: DWORD = 0x0010; pub const TOUCHEVENTF_NOCOALESCE: DWORD = 0x0020; pub const TOUCHEVENTF_PEN: DWORD = 0x0040; pub const TOUCHEVENTF_PALM: DWORD = 0x0080; pub const TOUCHINPUTMASKF_TIMEFROMSYSTEM: DWORD = 0x0001; pub const TOUCHINPUTMASKF_EXTRAINFO: DWORD = 0x0002; pub const TOUCHINPUTMASKF_CONTACTAREA: DWORD = 0x0004; extern "system" { pub fn GetTouchInputInfo( hTouchInput: HTOUCHINPUT, cInputs: c_uint, pInputs: PTOUCHINPUT, cbSize: c_int, ) -> BOOL; pub fn CloseTouchInputHandle( hTouchInput: HTOUCHINPUT, ) -> BOOL; } pub const TWF_FINETOUCH: DWORD = 0x00000001; pub const TWF_WANTPALM: DWORD = 0x00000002; extern "system" { pub fn RegisterTouchWindow( hWnd: HWND, flags: ULONG, ) -> BOOL; pub fn UnregisterTouchWindow( hwnd: HWND, ) -> BOOL; pub fn IsTouchWindow( hwnd: HWND, pulFlags: PULONG, ) -> BOOL; } ENUM!{enum POINTER_INPUT_TYPE { PT_POINTER = 0x00000001, PT_TOUCH = 0x00000002, PT_PEN = 0x00000003, PT_MOUSE = 0x00000004, PT_TOUCHPAD = 0x00000005, }} ENUM!{enum POINTER_FLAGS { POINTER_FLAG_NONE = 0x00000000, POINTER_FLAG_NEW = 0x00000001, POINTER_FLAG_INRANGE = 0x00000002, POINTER_FLAG_INCONTACT = 0x00000004, POINTER_FLAG_FIRSTBUTTON = 0x00000010, POINTER_FLAG_SECONDBUTTON = 0x00000020, POINTER_FLAG_THIRDBUTTON = 0x00000040, POINTER_FLAG_FOURTHBUTTON = 0x00000080, POINTER_FLAG_FIFTHBUTTON = 0x00000100, POINTER_FLAG_PRIMARY = 0x00002000, POINTER_FLAG_CONFIDENCE = 0x00004000, POINTER_FLAG_CANCELED = 0x00008000, POINTER_FLAG_DOWN = 0x00010000, POINTER_FLAG_UPDATE = 0x00020000, POINTER_FLAG_UP = 0x00040000, POINTER_FLAG_WHEEL = 0x00080000, POINTER_FLAG_HWHEEL = 0x00100000, POINTER_FLAG_CAPTURECHANGED = 0x00200000, POINTER_FLAG_HASTRANSFORM = 0x00400000, }} pub const POINTER_MOD_SHIFT: DWORD = 0x0004; pub const POINTER_MOD_CTRL: DWORD = 0x0008; ENUM!{enum POINTER_BUTTON_CHANGE_TYPE { POINTER_CHANGE_NONE, POINTER_CHANGE_FIRSTBUTTON_DOWN, POINTER_CHANGE_FIRSTBUTTON_UP, POINTER_CHANGE_SECONDBUTTON_DOWN, POINTER_CHANGE_SECONDBUTTON_UP, POINTER_CHANGE_THIRDBUTTON_DOWN, POINTER_CHANGE_THIRDBUTTON_UP, POINTER_CHANGE_FOURTHBUTTON_DOWN, POINTER_CHANGE_FOURTHBUTTON_UP, POINTER_CHANGE_FIFTHBUTTON_DOWN, POINTER_CHANGE_FIFTHBUTTON_UP, }} STRUCT!{struct POINTER_INFO { pointerType: POINTER_INPUT_TYPE, pointerId: UINT32, frameId: UINT32, pointerFlags: POINTER_FLAGS, sourceDevice: HANDLE, hwndTarget: HWND, ptPixelLocation: POINT, ptHimetricLocation: POINT, ptPixelLocationRaw: POINT, ptHimetricLocationRaw: POINT, dwTime: DWORD, historyCount: UINT32, InputData: INT32, dwKeyStates: DWORD, PerformanceCount: UINT64, ButtonChangeType: POINTER_BUTTON_CHANGE_TYPE, }} ENUM!{enum TOUCH_FLAGS { TOUCH_FLAG_NONE = 0x00000000, }} ENUM!{enum TOUCH_MASK { TOUCH_MASK_NONE = 0x00000000, TOUCH_MASK_CONTACTAREA = 0x00000001, TOUCH_MASK_ORIENTATION = 0x00000002, TOUCH_MASK_PRESSURE = 0x00000004, }} STRUCT!{struct POINTER_TOUCH_INFO { pointerInfo: POINTER_INFO, touchFlags: TOUCH_FLAGS, touchMask: TOUCH_MASK, rcContact: RECT, rcContactRaw: RECT, orientation: UINT32, pressure: UINT32, }} ENUM!{enum PEN_FLAGS { PEN_FLAG_NONE = 0x00000000, PEN_FLAG_BARREL = 0x00000001, PEN_FLAG_INVERTED = 0x00000002, PEN_FLAG_ERASER = 0x00000004, }} ENUM!{enum PEN_MASK { PEN_MASK_NONE = 0x00000000, PEN_MASK_PRESSURE = 0x00000001, PEN_MASK_ROTATION = 0x00000002, PEN_MASK_TILT_X = 0x00000004, PEN_MASK_TILT_Y = 0x00000008, }} STRUCT!{struct POINTER_PEN_INFO { pointerInfo: POINTER_INFO, penFlags: PEN_FLAGS, penMask: PEN_MASK, pressure: UINT32, rotation: UINT32, tiltX: INT32, tiltY: INT32, }} pub const POINTER_MESSAGE_FLAG_NEW: DWORD = 0x00000001; pub const POINTER_MESSAGE_FLAG_INRANGE: DWORD = 0x00000002; pub const POINTER_MESSAGE_FLAG_INCONTACT: DWORD = 0x00000004; pub const POINTER_MESSAGE_FLAG_FIRSTBUTTON: DWORD = 0x00000010; pub const POINTER_MESSAGE_FLAG_SECONDBUTTON: DWORD = 0x00000020; pub const POINTER_MESSAGE_FLAG_THIRDBUTTON: DWORD = 0x00000040; pub const POINTER_MESSAGE_FLAG_FOURTHBUTTON: DWORD = 0x00000080; pub const POINTER_MESSAGE_FLAG_FIFTHBUTTON: DWORD = 0x00000100; pub const POINTER_MESSAGE_FLAG_PRIMARY: DWORD = 0x00002000; pub const POINTER_MESSAGE_FLAG_CONFIDENCE: DWORD = 0x00004000; pub const POINTER_MESSAGE_FLAG_CANCELED: DWORD = 0x00008000; pub const PA_ACTIVATE: UINT = MA_ACTIVATE; pub const PA_NOACTIVATE: UINT = MA_NOACTIVATE; pub const MAX_TOUCH_COUNT: UINT32 = 256; pub const TOUCH_FEEDBACK_DEFAULT: DWORD = 0x1; pub const TOUCH_FEEDBACK_INDIRECT: DWORD = 0x2; pub const TOUCH_FEEDBACK_NONE: DWORD = 0x3; extern "system" { pub fn InitializeTouchInjection( maxCount: UINT32, dwMode: DWORD, ) -> BOOL; pub fn InjectTouchInput( count: UINT32, contacts: *const POINTER_TOUCH_INFO, ) -> BOOL; } STRUCT!{struct USAGE_PROPERTIES { level: USHORT, page: USHORT, usage: USHORT, logicalMinimum: INT32, logicalMaximum: INT32, unit: USHORT, exponent: USHORT, count: BYTE, physicalMinimum: INT32, physicalMaximum: INT32, }} pub type PUSAGE_PROPERTIES = *mut USAGE_PROPERTIES; UNION!{union POINTER_TYPE_INFO_u { [u64; 17] [u64; 18], touchInfo touchInfo_mut: POINTER_TOUCH_INFO, penInfo penInfo_mut: POINTER_PEN_INFO, }} STRUCT!{struct POINTER_TYPE_INFO { type_: POINTER_INPUT_TYPE, u: POINTER_TYPE_INFO_u, }} pub type PPOINTER_TYPE_INFO = *mut POINTER_TYPE_INFO; STRUCT!{struct INPUT_INJECTION_VALUE { page: USHORT, usage: USHORT, value: INT32, index: USHORT, }} pub type PINPUT_INJECTION_VALUE = *mut INPUT_INJECTION_VALUE; extern "system" { pub fn GetPointerType( pointerId: UINT32, pointerType: *mut POINTER_INPUT_TYPE, ) -> BOOL; pub fn GetPointerCursorId( pointerId: UINT32, cursorId: *mut UINT32, ) -> BOOL; pub fn GetPointerInfo( pointerId: UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL; pub fn GetPointerInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL; pub fn GetPointerFrameInfo( pointerId: UINT32, pointerCount: *mut UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL; pub fn GetPointerFrameInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerCount: *mut UINT32, pointerInfo: *mut POINTER_INFO, ) -> BOOL; pub fn GetPointerTouchInfo( pointerId: UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL; pub fn GetPointerTouchInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL; pub fn GetPointerFrameTouchInfo( pointerId: UINT32, pointerCount: *mut UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL; pub fn GetPointerFrameTouchInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerCount: *mut UINT32, touchInfo: *mut POINTER_TOUCH_INFO, ) -> BOOL; pub fn GetPointerPenInfo( pointerId: UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL; pub fn GetPointerPenInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL; pub fn GetPointerFramePenInfo( pointerId: UINT32, pointerCount: *mut UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL; pub fn GetPointerFramePenInfoHistory( pointerId: UINT32, entriesCount: *mut UINT32, pointerCount: *mut UINT32, penInfo: *mut POINTER_PEN_INFO, ) -> BOOL; pub fn SkipPointerFrameMessages( pointerId: UINT32, ) -> BOOL; pub fn RegisterPointerInputTarget( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, ) -> BOOL; pub fn UnregisterPointerInputTarget( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, ) -> BOOL; pub fn RegisterPointerInputTargetEx( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, fObserve: BOOL, ) -> BOOL; pub fn UnregisterPointerInputTargetEx( hwnd: HWND, pointerType: POINTER_INPUT_TYPE, ) -> BOOL; pub fn EnableMouseInPointer( fEnable: BOOL, ) -> BOOL; pub fn IsMouseInPointerEnabled() -> BOOL; } pub const TOUCH_HIT_TESTING_DEFAULT: ULONG = 0x0; pub const TOUCH_HIT_TESTING_CLIENT: ULONG = 0x1; pub const TOUCH_HIT_TESTING_NONE: ULONG = 0x2; extern "system" { pub fn RegisterTouchHitTestingWindow( hwnd: HWND, value: ULONG, ) -> BOOL; } STRUCT!{struct TOUCH_HIT_TESTING_PROXIMITY_EVALUATION { score: UINT16, adjustedPoint: POINT, }} pub type PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION = *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION; STRUCT!{struct TOUCH_HIT_TESTING_INPUT { pointerId: UINT32, point: POINT, boundingBox: RECT, nonOccludedBoundingBox: RECT, orientation: UINT32, }} pub type PTOUCH_HIT_TESTING_INPUT = *mut TOUCH_HIT_TESTING_INPUT; pub const TOUCH_HIT_TESTING_PROXIMITY_CLOSEST: UINT16 = 0x0; pub const TOUCH_HIT_TESTING_PROXIMITY_FARTHEST: UINT16 = 0xFFF; extern "system" { pub fn EvaluateProximityToRect( controlBoundingBox: *const RECT, pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, ) -> BOOL; pub fn EvaluateProximityToPolygon( numVertices: UINT32, controlPolygon: *const POINT, pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, ) -> BOOL; pub fn PackTouchHitTestingProximityEvaluation( pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, pProximityEval: *const TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, ) -> LRESULT; } ENUM!{enum FEEDBACK_TYPE { FEEDBACK_TOUCH_CONTACTVISUALIZATION = 1, FEEDBACK_PEN_BARRELVISUALIZATION = 2, FEEDBACK_PEN_TAP = 3, FEEDBACK_PEN_DOUBLETAP = 4, FEEDBACK_PEN_PRESSANDHOLD = 5, FEEDBACK_PEN_RIGHTTAP = 6, FEEDBACK_TOUCH_TAP = 7, FEEDBACK_TOUCH_DOUBLETAP = 8, FEEDBACK_TOUCH_PRESSANDHOLD = 9, FEEDBACK_TOUCH_RIGHTTAP = 10, FEEDBACK_GESTURE_PRESSANDTAP = 11, FEEDBACK_MAX = 0xFFFFFFFF, }} pub const GWFS_INCLUDE_ANCESTORS: DWORD = 0x00000001; extern "system" { pub fn GetWindowFeedbackSetting( hwnd: HWND, feedback: FEEDBACK_TYPE, dwFlags: DWORD, pSize: *mut UINT32, config: *mut VOID, ) -> BOOL; pub fn SetWindowFeedbackSetting( hwnd: HWND, feedback: FEEDBACK_TYPE, dwFlags: DWORD, size: UINT32, configuration: *const VOID, ) -> BOOL; } STRUCT!{struct INPUT_TRANSFORM { m: [[f32; 4]; 4], }} extern "system" { pub fn GetPointerInputTransform( pointerId: UINT32, historyCount: UINT32, inputTransform: *mut INPUT_TRANSFORM, ) -> BOOL; } STRUCT!{struct LASTINPUTINFO { cbSize: UINT, dwTime: DWORD, }} pub type PLASTINPUTINFO = *mut LASTINPUTINFO; extern "system" { pub fn GetLastInputInfo( plii: PLASTINPUTINFO, ) -> BOOL; pub fn MapVirtualKeyA( nCode: UINT, uMapType: UINT, ) -> UINT; pub fn MapVirtualKeyW( nCode: UINT, uMapType: UINT, ) -> UINT; pub fn MapVirtualKeyExA( nCode: UINT, uMapType: UINT, dwhkl: HKL, ) -> UINT; pub fn MapVirtualKeyExW( nCode: UINT, uMapType: UINT, dwhkl: HKL, ) -> UINT; } pub const MAPVK_VK_TO_VSC: UINT = 0; pub const MAPVK_VSC_TO_VK: UINT = 1; pub const MAPVK_VK_TO_CHAR: UINT = 2; pub const MAPVK_VSC_TO_VK_EX: UINT = 3; pub const MAPVK_VK_TO_VSC_EX: UINT = 4; extern "system" { pub fn GetInputState() -> BOOL; pub fn GetQueueStatus( flags: UINT, ) -> DWORD; pub fn GetCapture() -> HWND; pub fn SetCapture( hWnd: HWND, ) -> HWND; pub fn ReleaseCapture() -> BOOL; pub fn MsgWaitForMultipleObjects( nCount: DWORD, pHandles: *const HANDLE, fWaitAll: BOOL, dwMilliseconds: DWORD, dwWakeMask: DWORD, ) -> DWORD; pub fn MsgWaitForMultipleObjectsEx( nCount: DWORD, pHandles: *const HANDLE, dwMilliseconds: DWORD, dwWakeMask: DWORD, dwFlags: DWORD, ) -> DWORD; } pub const MWMO_WAITALL: UINT = 0x0001; pub const MWMO_ALERTABLE: UINT = 0x0002; pub const MWMO_INPUTAVAILABLE: UINT = 0x0004; pub const QS_KEY: UINT = 0x0001; pub const QS_MOUSEMOVE: UINT = 0x0002; pub const QS_MOUSEBUTTON: UINT = 0x0004; pub const QS_POSTMESSAGE: UINT = 0x0008; pub const QS_TIMER: UINT = 0x0010; pub const QS_PAINT: UINT = 0x0020; pub const QS_SENDMESSAGE: UINT = 0x0040; pub const QS_HOTKEY: UINT = 0x0080; pub const QS_ALLPOSTMESSAGE: UINT = 0x0100; pub const QS_RAWINPUT: UINT = 0x0400; pub const QS_TOUCH: UINT = 0x0800; pub const QS_POINTER: UINT = 0x1000; pub const QS_MOUSE: UINT = QS_MOUSEMOVE | QS_MOUSEBUTTON; pub const QS_INPUT: UINT = QS_MOUSE | QS_KEY | QS_RAWINPUT | QS_TOUCH | QS_POINTER; pub const QS_ALLEVENTS: UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY; pub const QS_ALLINPUT: UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE; pub const USER_TIMER_MAXIMUM: UINT = 0x7FFFFFFF; pub const USER_TIMER_MINIMUM: UINT = 0x0000000A; extern "system" { pub fn SetTimer( hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC, ) -> UINT_PTR; } pub const TIMERV_DEFAULT_COALESCING: ULONG = 0; pub const TIMERV_NO_COALESCING: ULONG = 0xFFFFFFFF; pub const TIMERV_COALESCING_MIN: ULONG = 1; pub const TIMERV_COALESCING_MAX: ULONG = 0x7FFFFFF5; extern "system" { pub fn SetCoalescableTimer( hWnd: HWND, nIDEvent: UINT_PTR, uElapse: UINT, lpTimerFunc: TIMERPROC, uToleranceDelay: ULONG, ) -> UINT_PTR; pub fn KillTimer( hWnd: HWND, uIDEvent: UINT_PTR, ) -> BOOL; pub fn IsWindowUnicode( hWnd: HWND, ) -> BOOL; pub fn EnableWindow( hWnd: HWND, bEnable: BOOL, ) -> BOOL; pub fn IsWindowEnabled( hWnd: HWND, ) -> BOOL; pub fn LoadAcceleratorsA( hInstance: HINSTANCE, lpTableName: LPCSTR, ) -> HACCEL; pub fn LoadAcceleratorsW( hInstance: HINSTANCE, lpTableName: LPCWSTR, ) -> HACCEL; pub fn CreateAcceleratorTableA( paccel: LPACCEL, cAccel: c_int, ) -> HACCEL; pub fn CreateAcceleratorTableW( paccel: LPACCEL, cAccel: c_int, ) -> HACCEL; pub fn DestroyAcceleratorTable( hAccel: HACCEL, ) -> BOOL; pub fn CopyAcceleratorTableA( hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: c_int, ) -> c_int; pub fn CopyAcceleratorTableW( hAccelSrc: HACCEL, lpAccelDst: LPACCEL, cAccelEntries: c_int, ) -> c_int; pub fn TranslateAcceleratorA( hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG, ) -> c_int; pub fn TranslateAcceleratorW( hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG, ) -> c_int; } pub const SM_CXSCREEN: c_int = 0; pub const SM_CYSCREEN: c_int = 1; pub const SM_CXVSCROLL: c_int = 2; pub const SM_CYHSCROLL: c_int = 3; pub const SM_CYCAPTION: c_int = 4; pub const SM_CXBORDER: c_int = 5; pub const SM_CYBORDER: c_int = 6; pub const SM_CXDLGFRAME: c_int = 7; pub const SM_CYDLGFRAME: c_int = 8; pub const SM_CYVTHUMB: c_int = 9; pub const SM_CXHTHUMB: c_int = 10; pub const SM_CXICON: c_int = 11; pub const SM_CYICON: c_int = 12; pub const SM_CXCURSOR: c_int = 13; pub const SM_CYCURSOR: c_int = 14; pub const SM_CYMENU: c_int = 15; pub const SM_CXFULLSCREEN: c_int = 16; pub const SM_CYFULLSCREEN: c_int = 17; pub const SM_CYKANJIWINDOW: c_int = 18; pub const SM_MOUSEPRESENT: c_int = 19; pub const SM_CYVSCROLL: c_int = 20; pub const SM_CXHSCROLL: c_int = 21; pub const SM_DEBUG: c_int = 22; pub const SM_SWAPBUTTON: c_int = 23; pub const SM_RESERVED1: c_int = 24; pub const SM_RESERVED2: c_int = 25; pub const SM_RESERVED3: c_int = 26; pub const SM_RESERVED4: c_int = 27; pub const SM_CXMIN: c_int = 28; pub const SM_CYMIN: c_int = 29; pub const SM_CXSIZE: c_int = 30; pub const SM_CYSIZE: c_int = 31; pub const SM_CXFRAME: c_int = 32; pub const SM_CYFRAME: c_int = 33; pub const SM_CXMINTRACK: c_int = 34; pub const SM_CYMINTRACK: c_int = 35; pub const SM_CXDOUBLECLK: c_int = 36; pub const SM_CYDOUBLECLK: c_int = 37; pub const SM_CXICONSPACING: c_int = 38; pub const SM_CYICONSPACING: c_int = 39; pub const SM_MENUDROPALIGNMENT: c_int = 40; pub const SM_PENWINDOWS: c_int = 41; pub const SM_DBCSENABLED: c_int = 42; pub const SM_CMOUSEBUTTONS: c_int = 43; pub const SM_CXFIXEDFRAME: c_int = SM_CXDLGFRAME; pub const SM_CYFIXEDFRAME: c_int = SM_CYDLGFRAME; pub const SM_CXSIZEFRAME: c_int = SM_CXFRAME; pub const SM_CYSIZEFRAME: c_int = SM_CYFRAME; pub const SM_SECURE: c_int = 44; pub const SM_CXEDGE: c_int = 45; pub const SM_CYEDGE: c_int = 46; pub const SM_CXMINSPACING: c_int = 47; pub const SM_CYMINSPACING: c_int = 48; pub const SM_CXSMICON: c_int = 49; pub const SM_CYSMICON: c_int = 50; pub const SM_CYSMCAPTION: c_int = 51; pub const SM_CXSMSIZE: c_int = 52; pub const SM_CYSMSIZE: c_int = 53; pub const SM_CXMENUSIZE: c_int = 54; pub const SM_CYMENUSIZE: c_int = 55; pub const SM_ARRANGE: c_int = 56; pub const SM_CXMINIMIZED: c_int = 57; pub const SM_CYMINIMIZED: c_int = 58; pub const SM_CXMAXTRACK: c_int = 59; pub const SM_CYMAXTRACK: c_int = 60; pub const SM_CXMAXIMIZED: c_int = 61; pub const SM_CYMAXIMIZED: c_int = 62; pub const SM_NETWORK: c_int = 63; pub const SM_CLEANBOOT: c_int = 67; pub const SM_CXDRAG: c_int = 68; pub const SM_CYDRAG: c_int = 69; pub const SM_SHOWSOUNDS: c_int = 70; pub const SM_CXMENUCHECK: c_int = 71; pub const SM_CYMENUCHECK: c_int = 72; pub const SM_SLOWMACHINE: c_int = 73; pub const SM_MIDEASTENABLED: c_int = 74; pub const SM_MOUSEWHEELPRESENT: c_int = 75; pub const SM_XVIRTUALSCREEN: c_int = 76; pub const SM_YVIRTUALSCREEN: c_int = 77; pub const SM_CXVIRTUALSCREEN: c_int = 78; pub const SM_CYVIRTUALSCREEN: c_int = 79; pub const SM_CMONITORS: c_int = 80; pub const SM_SAMEDISPLAYFORMAT: c_int = 81; pub const SM_IMMENABLED: c_int = 82; pub const SM_CXFOCUSBORDER: c_int = 83; pub const SM_CYFOCUSBORDER: c_int = 84; pub const SM_TABLETPC: c_int = 86; pub const SM_MEDIACENTER: c_int = 87; pub const SM_STARTER: c_int = 88; pub const SM_SERVERR2: c_int = 89; pub const SM_MOUSEHORIZONTALWHEELPRESENT: c_int = 91; pub const SM_CXPADDEDBORDER: c_int = 92; pub const SM_DIGITIZER: c_int = 94; pub const SM_MAXIMUMTOUCHES: c_int = 95; pub const SM_CMETRICS: c_int = 97; pub const SM_REMOTESESSION: c_int = 0x1000; pub const SM_SHUTTINGDOWN: c_int = 0x2000; pub const SM_REMOTECONTROL: c_int = 0x2001; pub const SM_CARETBLINKINGENABLED: c_int = 0x2002; pub const SM_CONVERTIBLESLATEMODE: c_int = 0x2003; pub const SM_SYSTEMDOCKED: c_int = 0x2004; extern "system" { pub fn GetSystemMetrics( nIndex: c_int, ) -> c_int; pub fn GetSystemMetricsForDpi( nIndex: c_int, dpi: UINT, ) -> c_int; pub fn LoadMenuA( hInstance: HINSTANCE, lpMenuName: LPCSTR, ) -> HMENU; pub fn LoadMenuW( hInstance: HINSTANCE, lpMenuName: LPCWSTR, ) -> HMENU; pub fn LoadMenuIndirectA( lpMenuTemplate: *const MENUTEMPLATEA, ) -> HMENU; pub fn LoadMenuIndirectW( lpMenuTemplate: *const MENUTEMPLATEW, ) -> HMENU; pub fn GetMenu( hWnd: HWND, ) -> HMENU; pub fn SetMenu( hWnd: HWND, hMenu: HMENU, ) -> BOOL; pub fn ChangeMenuA( hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT, flags: UINT, ) -> BOOL; pub fn ChangeMenuW( hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR, cmdInsert: UINT, flags: UINT, ) -> BOOL; pub fn HiliteMenuItem( hWnd: HWND, hMenu: HMENU, uIDHiliteItem: UINT, uHilite: UINT, ) -> BOOL; pub fn GetMenuStringA( hMenu: HMENU, uIDItem: UINT, lpString: LPSTR, cchMax: c_int, flags: UINT, ) -> c_int; pub fn GetMenuStringW( hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR, cchMax: c_int, flags: UINT, ) -> c_int; pub fn GetMenuState( hMenu: HMENU, uId: UINT, uFlags: UINT, ) -> UINT; pub fn DrawMenuBar( hwnd: HWND, ) -> BOOL; } pub const PMB_ACTIVE: DWORD = 0x00000001; extern "system" { pub fn GetSystemMenu( hWnd: HWND, bRevert: BOOL, ) -> HMENU; pub fn CreateMenu() -> HMENU; pub fn CreatePopupMenu() ->HMENU; pub fn DestroyMenu( hMenu: HMENU, ) -> BOOL; pub fn CheckMenuItem( hMenu: HMENU, uIDCheckItem: UINT, uCheck: UINT, ) -> DWORD; pub fn EnableMenuItem( hMenu: HMENU, uIDEnableItem: UINT, uEnable: UINT, ) -> BOOL; pub fn GetSubMenu( hMenu: HMENU, nPos: c_int, ) -> HMENU; pub fn GetMenuItemID( hMenu: HMENU, nPos: c_int, ) -> UINT; pub fn GetMenuItemCount( hMenu: HMENU, ) -> c_int; pub fn InsertMenuA( hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL; pub fn InsertMenuW( hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR, ) -> BOOL; pub fn AppendMenuA( hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL; pub fn AppendMenuW( hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR, ) -> BOOL; pub fn ModifyMenuA( hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL; pub fn ModifyMenuW( hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR, ) -> BOOL; pub fn RemoveMenu( hMenu: HMENU, uPosition: UINT, uFlags: UINT, ) -> BOOL; pub fn DeleteMenu( hMenu: HMENU, uPosition: UINT, uFlags: UINT, ) -> BOOL; pub fn SetMenuItemBitmaps( hMenu: HMENU, uPosition: UINT, uFlags: UINT, hBitmapUnchecked: HBITMAP, hBitmapChecked: HBITMAP, ) -> BOOL; pub fn GetMenuCheckMarkDimensions() -> LONG; pub fn TrackPopupMenu( hMenu: HMENU, uFlags: UINT, x: c_int, y: c_int, nReserved: c_int, hWnd: HWND, prcRect: *const RECT, ) -> BOOL; } pub const MNC_IGNORE: DWORD = 0; pub const MNC_CLOSE: DWORD = 1; pub const MNC_EXECUTE: DWORD = 2; pub const MNC_SELECT: DWORD = 3; STRUCT!{struct TPMPARAMS { cbSize: UINT, rcExclude: RECT, }} pub type LPTPMPARAMS = *mut TPMPARAMS; extern "system" { pub fn TrackPopupMenuEx( hMenu: HMENU, uFlags: UINT, x: INT, y: INT, hwnd: HWND, lptpm: LPTPMPARAMS, ) -> BOOL; pub fn CalculatePopupWindowPosition( anchorPoint: *const POINT, windowSize: *const SIZE, flags: UINT, excludeRect: *mut RECT, popupWindowPosition: *mut RECT, ) -> BOOL; } pub const MNS_NOCHECK: DWORD = 0x80000000; pub const MNS_MODELESS: DWORD = 0x40000000; pub const MNS_DRAGDROP: DWORD = 0x20000000; pub const MNS_AUTODISMISS: DWORD = 0x10000000; pub const MNS_NOTIFYBYPOS: DWORD = 0x08000000; pub const MNS_CHECKORBMP: DWORD = 0x04000000; pub const MIM_MAXHEIGHT: DWORD = 0x00000001; pub const MIM_BACKGROUND: DWORD = 0x00000002; pub const MIM_HELPID: DWORD = 0x00000004; pub const MIM_MENUDATA: DWORD = 0x00000008; pub const MIM_STYLE: DWORD = 0x00000010; pub const MIM_APPLYTOSUBMENUS: DWORD = 0x80000000; STRUCT!{struct MENUINFO { cbSize: DWORD, fMask: DWORD, dwStyle: DWORD, cyMax: UINT, hbrBack: HBRUSH, dwContextHelpID: DWORD, dwMenuData: ULONG_PTR, }} pub type LPMENUINFO = *mut MENUINFO; pub type LPCMENUINFO = *const MENUINFO; extern "system" { pub fn GetMenuInfo( hMenu: HMENU, lpcmi: LPMENUINFO, ) -> BOOL; pub fn SetMenuInfo( hMenu: HMENU, lpcmi: LPCMENUINFO, ) -> BOOL; pub fn EndMenu( hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCSTR, ) -> BOOL; } pub const MND_CONTINUE: DWORD = 0; pub const MND_ENDMENU: DWORD = 1; STRUCT!{struct MENUGETOBJECTINFO { dwFlags: DWORD, uPos: UINT, hmenu: HMENU, riid: PVOID, pvObj: PVOID, }} pub type PMENUGETOBJECTINFO = *mut MENUGETOBJECTINFO; pub const MNGOF_TOPGAP: DWORD = 0x00000001; pub const MNGOF_BOTTOMGAP: DWORD = 0x00000002; pub const MNGO_NOINTERFACE: DWORD = 0x00000000; pub const MNGO_NOERROR: DWORD = 0x00000001; pub const MIIM_STATE: DWORD = 0x00000001; pub const MIIM_ID: DWORD = 0x00000002; pub const MIIM_SUBMENU: DWORD = 0x00000004; pub const MIIM_CHECKMARKS: DWORD = 0x00000008; pub const MIIM_TYPE: DWORD = 0x00000010; pub const MIIM_DATA: DWORD = 0x00000020; pub const MIIM_STRING: DWORD = 0x00000040; pub const MIIM_BITMAP: DWORD = 0x00000080; pub const MIIM_FTYPE: DWORD = 0x00000100; pub const HBMMENU_CALLBACK: HBITMAP = -1isize as HBITMAP; pub const HBMMENU_SYSTEM: HBITMAP = 1 as HBITMAP; pub const HBMMENU_MBAR_RESTORE: HBITMAP = 2 as HBITMAP; pub const HBMMENU_MBAR_MINIMIZE: HBITMAP = 3 as HBITMAP; pub const HBMMENU_MBAR_CLOSE: HBITMAP = 5 as HBITMAP; pub const HBMMENU_MBAR_CLOSE_D: HBITMAP = 6 as HBITMAP; pub const HBMMENU_MBAR_MINIMIZE_D: HBITMAP = 7 as HBITMAP; pub const HBMMENU_POPUP_CLOSE: HBITMAP = 8 as HBITMAP; pub const HBMMENU_POPUP_RESTORE: HBITMAP = 9 as HBITMAP; pub const HBMMENU_POPUP_MAXIMIZE: HBITMAP = 10 as HBITMAP; pub const HBMMENU_POPUP_MINIMIZE: HBITMAP = 11 as HBITMAP; STRUCT!{struct MENUITEMINFOA { cbSize: UINT, fMask: UINT, fType: UINT, fState: UINT, wID: UINT, hSubMenu: HMENU, hbmpChecked: HBITMAP, hbmpUnchecked: HBITMAP, dwItemData: ULONG_PTR, dwTypeData: LPSTR, cch: UINT, hbmpItem: HBITMAP, }} pub type LPMENUITEMINFOA = *mut MENUITEMINFOA; pub type LPCMENUITEMINFOA = *const MENUITEMINFOA; STRUCT!{struct MENUITEMINFOW { cbSize: UINT, fMask: UINT, fType: UINT, fState: UINT, wID: UINT, hSubMenu: HMENU, hbmpChecked: HBITMAP, hbmpUnchecked: HBITMAP, dwItemData: ULONG_PTR, dwTypeData: LPWSTR, cch: UINT, hbmpItem: HBITMAP, }} pub type LPMENUITEMINFOW = *mut MENUITEMINFOW; pub type LPCMENUITEMINFOW = *const MENUITEMINFOW; extern "system" { pub fn InsertMenuItemA( hmenu: HMENU, item: UINT, fByPosition: BOOL, lpmi: LPCMENUITEMINFOA, ) -> BOOL; pub fn InsertMenuItemW( hmenu: HMENU, item: UINT, fByPosition: BOOL, lpmi: LPCMENUITEMINFOW, ) -> BOOL; pub fn GetMenuItemInfoA( hMenu: HMENU, uItem: UINT, fByPosition: BOOL, lpmii: LPMENUITEMINFOA, ) -> BOOL; pub fn GetMenuItemInfoW( hMenu: HMENU, uItem: UINT, fByPosition: BOOL, lpmii: LPMENUITEMINFOW, ) -> BOOL; pub fn SetMenuItemInfoA( hmenu: HMENU, item: UINT, fByPositon: BOOL, lpmii: LPCMENUITEMINFOA, ) -> BOOL; pub fn SetMenuItemInfoW( hmenu: HMENU, item: UINT, fByPositon: BOOL, lpmii: LPCMENUITEMINFOW, ) -> BOOL; } pub const GMDI_USEDISABLED: DWORD = 0x0001; pub const GMDI_GOINTOPOPUPS: DWORD = 0x0002; extern "system" { pub fn GetMenuDefaultItem( hMenu: HMENU, fByPos: UINT, gmdiFlags: UINT, ) -> UINT; pub fn SetMenuDefaultItem( hMenu: HMENU, uItem: UINT, fByPos: UINT, ) -> BOOL; pub fn GetMenuItemRect( hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: LPRECT, ) -> BOOL; pub fn MenuItemFromPoint( hWnd: HWND, hMenu: HMENU, ptScreen: POINT, ) -> c_int; } pub const TPM_LEFTBUTTON: UINT = 0x0000; pub const TPM_RIGHTBUTTON: UINT = 0x0002; pub const TPM_LEFTALIGN: UINT = 0x0000; pub const TPM_CENTERALIGN: UINT = 0x0004; pub const TPM_RIGHTALIGN: UINT = 0x0008; pub const TPM_TOPALIGN: UINT = 0x0000; pub const TPM_VCENTERALIGN: UINT = 0x0010; pub const TPM_BOTTOMALIGN: UINT = 0x0020; pub const TPM_HORIZONTAL: UINT = 0x0000; pub const TPM_VERTICAL: UINT = 0x0040; pub const TPM_NONOTIFY: UINT = 0x0080; pub const TPM_RETURNCMD: UINT = 0x0100; pub const TPM_RECURSE: UINT = 0x0001; pub const TPM_HORPOSANIMATION: UINT = 0x0400; pub const TPM_HORNEGANIMATION: UINT = 0x0800; pub const TPM_VERPOSANIMATION: UINT = 0x1000; pub const TPM_VERNEGANIMATION: UINT = 0x2000; pub const TPM_NOANIMATION: UINT = 0x4000; pub const TPM_LAYOUTRTL: UINT = 0x8000; pub const TPM_WORKAREA: UINT = 0x10000; STRUCT!{struct DROPSTRUCT { hwndSource: HWND, hwndSink: HWND, wFmt: DWORD, dwData: ULONG_PTR, ptDrop: POINT, dwControlData: DWORD, }} pub type PDROPSTRUCT = *mut DROPSTRUCT; pub type LPDROPSTRUCT = *mut DROPSTRUCT; pub const DOF_EXECUTABLE: DWORD = 0x8001; pub const DOF_DOCUMENT: DWORD = 0x8002; pub const DOF_DIRECTORY: DWORD = 0x8003; pub const DOF_MULTIPLE: DWORD = 0x8004; pub const DOF_PROGMAN: DWORD = 0x0001; pub const DOF_SHELLDATA: DWORD = 0x0002; pub const DO_DROPFILE: DWORD = 0x454C4946; pub const DO_PRINTFILE: DWORD = 0x544E5250; extern "system" { pub fn DragObject( hwndParent: HWND, hwndFrom: HWND, fmt: UINT, data: ULONG_PTR, hcur: HCURSOR, ) -> DWORD; pub fn DragDetect( hwnd: HWND, pt: POINT, ) -> BOOL; pub fn DrawIcon( hDC: HDC, x: c_int, y: c_int, hIcon: HICON, ) -> BOOL; } pub const DT_TOP: UINT = 0x00000000; pub const DT_LEFT: UINT = 0x00000000; pub const DT_CENTER: UINT = 0x00000001; pub const DT_RIGHT: UINT = 0x00000002; pub const DT_VCENTER: UINT = 0x00000004; pub const DT_BOTTOM: UINT = 0x00000008; pub const DT_WORDBREAK: UINT = 0x00000010; pub const DT_SINGLELINE: UINT = 0x00000020; pub const DT_EXPANDTABS: UINT = 0x00000040; pub const DT_TABSTOP: UINT = 0x00000080; pub const DT_NOCLIP: UINT = 0x00000100; pub const DT_EXTERNALLEADING: UINT = 0x00000200; pub const DT_CALCRECT: UINT = 0x00000400; pub const DT_NOPREFIX: UINT = 0x00000800; pub const DT_INTERNAL: UINT = 0x00001000; pub const DT_EDITCONTROL: UINT = 0x00002000; pub const DT_PATH_ELLIPSIS: UINT = 0x00004000; pub const DT_END_ELLIPSIS: UINT = 0x00008000; pub const DT_MODIFYSTRING: UINT = 0x00010000; pub const DT_RTLREADING: UINT = 0x00020000; pub const DT_WORD_ELLIPSIS: UINT = 0x00040000; pub const DT_NOFULLWIDTHCHARBREAK: UINT = 0x00080000; pub const DT_HIDEPREFIX: UINT = 0x00100000; pub const DT_PREFIXONLY: UINT = 0x00200000; STRUCT!{struct DRAWTEXTPARAMS { cbSize: UINT, iTabLength: c_int, iLeftMargin: c_int, iRightMargin: c_int, uiLengthDrawn: UINT, }} pub type LPDRAWTEXTPARAMS = *mut DRAWTEXTPARAMS; extern "system" { pub fn DrawTextA( hdc: HDC, lpchText: LPCSTR, cchText: c_int, lprc: LPRECT, format: UINT, ) -> c_int; pub fn DrawTextW( hdc: HDC, lpchText: LPCWSTR, cchText: c_int, lprc: LPRECT, format: UINT, ) -> c_int; pub fn DrawTextExA( hdc: HDC, lpchText: LPCSTR, cchText: c_int, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS, ) -> c_int; pub fn DrawTextExW( hdc: HDC, lpchText: LPCWSTR, cchText: c_int, lprc: LPRECT, format: UINT, lpdtp: LPDRAWTEXTPARAMS, ) -> c_int; pub fn GrayStringA( hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: c_int, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, ) -> BOOL; pub fn GrayStringW( hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC, lpData: LPARAM, nCount: c_int, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, ) -> BOOL; } pub const DST_COMPLEX: UINT = 0x0000; pub const DST_TEXT: UINT = 0x0001; pub const DST_PREFIXTEXT: UINT = 0x0002; pub const DST_ICON: UINT = 0x0003; pub const DST_BITMAP: UINT = 0x0004; pub const DSS_NORMAL: UINT = 0x0000; pub const DSS_UNION: UINT = 0x0010; pub const DSS_DISABLED: UINT = 0x0020; pub const DSS_MONO: UINT = 0x0080; pub const DSS_HIDEPREFIX: UINT = 0x0200; pub const DSS_PREFIXONLY: UINT = 0x0400; pub const DSS_RIGHT: UINT = 0x8000; extern "system" { pub fn DrawStateA( hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: c_int, y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> BOOL; pub fn DrawStateW( hdc: HDC, hbrFore: HBRUSH, qfnCallBack: DRAWSTATEPROC, lData: LPARAM, wData: WPARAM, x: c_int, y: c_int, cx: c_int, cy: c_int, uFlags: UINT, ) -> BOOL; pub fn TabbedTextOutA( hdc: HDC, x: c_int, y: c_int, lpString: LPCSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, nTabOrigin: c_int, ) -> LONG; pub fn TabbedTextOutW( hdc: HDC, x: c_int, y: c_int, lpString: LPCWSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, nTabOrigin: c_int, ) -> LONG; pub fn GetTabbedTextExtentA( hdc: HDC, lpString: LPCSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, ) -> DWORD; pub fn GetTabbedTextExtentW( hdc: HDC, lpString: LPCWSTR, chCount: c_int, nTabPositions: c_int, lpnTabStopPositions: *const INT, ) -> DWORD; pub fn UpdateWindow( hWnd: HWND, ) -> BOOL; pub fn SetActiveWindow( hWnd: HWND, ) -> HWND; pub fn GetForegroundWindow() -> HWND; pub fn PaintDesktop( hdc: HDC, ) -> BOOL; pub fn SwitchToThisWindow( hwnd: HWND, fUnknown: BOOL, ); pub fn SetForegroundWindow( hWnd: HWND, ) -> BOOL; pub fn AllowSetForegroundWindow( dwProcessId: DWORD, ) -> BOOL; } pub const ASFW_ANY: DWORD = -1i32 as u32; extern "system" { pub fn LockSetForegroundWindow( uLockCode: UINT, ) -> BOOL; } pub const LSFW_LOCK: UINT = 1; pub const LSFW_UNLOCK: UINT = 2; extern "system" { pub fn WindowFromDC( hDC: HDC, ) -> HWND; pub fn GetDC( hWnd: HWND, ) -> HDC; pub fn GetDCEx( hWnd: HWND, hrgnClip: HRGN, flags: DWORD, ) -> HDC; } pub const DCX_WINDOW: DWORD = 0x00000001; pub const DCX_CACHE: DWORD = 0x00000002; pub const DCX_NORESETATTRS: DWORD = 0x00000004; pub const DCX_CLIPCHILDREN: DWORD = 0x00000008; pub const DCX_CLIPSIBLINGS: DWORD = 0x00000010; pub const DCX_PARENTCLIP: DWORD = 0x00000020; pub const DCX_EXCLUDERGN: DWORD = 0x00000040; pub const DCX_INTERSECTRGN: DWORD = 0x00000080; pub const DCX_EXCLUDEUPDATE: DWORD = 0x00000100; pub const DCX_INTERSECTUPDATE: DWORD = 0x00000200; pub const DCX_LOCKWINDOWUPDATE: DWORD = 0x00000400; pub const DCX_VALIDATE: DWORD = 0x00200000; extern "system" { pub fn GetWindowDC( hWnd: HWND, ) -> HDC; pub fn ReleaseDC( hWnd: HWND, hDC: HDC, ) -> c_int; pub fn BeginPaint( hwnd: HWND, lpPaint: LPPAINTSTRUCT, ) -> HDC; pub fn EndPaint( hWnd: HWND, lpPaint: *const PAINTSTRUCT, ) -> BOOL; pub fn GetUpdateRect( hWnd: HWND, lpRect: LPRECT, bErase: BOOL, ) -> BOOL; pub fn GetUpdateRgn( hWnd: HWND, hRgn: HRGN, bErase: BOOL, ) -> c_int; pub fn SetWindowRgn( hWnd: HWND, hRgn: HRGN, bRedraw: BOOL, ) -> c_int; pub fn GetWindowRgn( hWnd: HWND, hRgn: HRGN, ) -> c_int; pub fn GetWindowRgnBox( hWnd: HWND, lprc: LPRECT, ) -> c_int; pub fn ExcludeUpdateRgn( hDC: HDC, hWnd: HWND, ) -> c_int; pub fn InvalidateRect( hWnd: HWND, lpRect: *const RECT, bErase: BOOL, ) -> BOOL; pub fn ValidateRect( hWnd: HWND, lpRect: *const RECT, ) -> BOOL; pub fn InvalidateRgn( hWnd: HWND, hRgn: HRGN, bErase: BOOL, ) -> BOOL; pub fn ValidateRgn( hWnd: HWND, hRgn: HRGN, ) -> BOOL; pub fn RedrawWindow( hwnd: HWND, lprcUpdate: *const RECT, hrgnUpdate: HRGN, flags: UINT, ) -> BOOL; } pub const RDW_INVALIDATE: UINT = 0x0001; pub const RDW_INTERNALPAINT: UINT = 0x0002; pub const RDW_ERASE: UINT = 0x0004; pub const RDW_VALIDATE: UINT = 0x0008; pub const RDW_NOINTERNALPAINT: UINT = 0x0010; pub const RDW_NOERASE: UINT = 0x0020; pub const RDW_NOCHILDREN: UINT = 0x0040; pub const RDW_ALLCHILDREN: UINT = 0x0080; pub const RDW_UPDATENOW: UINT = 0x0100; pub const RDW_ERASENOW: UINT = 0x0200; pub const RDW_FRAME: UINT = 0x0400; pub const RDW_NOFRAME: UINT = 0x0800; extern "system" { pub fn LockWindowUpdate( hWndLock: HWND, ) -> BOOL; pub fn ScrollWindow( hWnd: HWND, xAmount: c_int, yAmount: c_int, lpRect: *const RECT, lpClipRect: *const RECT, ) -> BOOL; pub fn ScrollDC( hDC: HDC, dx: c_int, dy: c_int, lprcScroll: *const RECT, lprcClip: *const RECT, hrgnUpdate: HRGN, lprcUpdate: LPRECT, ) -> BOOL; pub fn ScrollWindowEx( hWnd: HWND, dx: c_int, dy: c_int, prcScroll: *const RECT, prcClip: *const RECT, hrgnUpdate: HRGN, prcUpdate: LPRECT, flags: UINT, ) -> c_int; } pub const SW_SCROLLCHILDREN: UINT = 0x0001; pub const SW_INVALIDATE: UINT = 0x0002; pub const SW_ERASE: UINT = 0x0004; pub const SW_SMOOTHSCROLL: UINT = 0x0010; extern "system" { pub fn SetScrollPos( hWnd: HWND, nBar: c_int, nPos: c_int, bRedraw: BOOL, ) -> c_int; pub fn GetScrollPos( hWnd: HWND, nBar: c_int, ) -> c_int; pub fn SetScrollRange( hWnd: HWND, nBar: c_int, nMinPos: c_int, nMaxPos: c_int, bRedraw: BOOL, ) -> BOOL; pub fn GetScrollRange( hWnd: HWND, nBar: c_int, lpMinPos: LPINT, lpMaxPos: LPINT, ) -> BOOL; pub fn ShowScrollBar( hWnd: HWND, wBar: c_int, bShow: BOOL, ) -> BOOL; pub fn EnableScrollBar( hWnd: HWND, wSBflags: UINT, wArrows: UINT, ) -> BOOL; } pub const ESB_ENABLE_BOTH: UINT = 0x0000; pub const ESB_DISABLE_BOTH: UINT = 0x0003; pub const ESB_DISABLE_LEFT: UINT = 0x0001; pub const ESB_DISABLE_RIGHT: UINT = 0x0002; pub const ESB_DISABLE_UP: UINT = 0x0001; pub const ESB_DISABLE_DOWN: UINT = 0x0002; pub const ESB_DISABLE_LTUP: UINT = ESB_DISABLE_LEFT; pub const ESB_DISABLE_RTDN: UINT = ESB_DISABLE_RIGHT; extern "system" { pub fn SetPropA( hWnd: HWND, lpString: LPCSTR, hData: HANDLE, ) -> BOOL; pub fn SetPropW( hWnd: HWND, lpString: LPCWSTR, hData: HANDLE, ) -> BOOL; pub fn GetPropA( hwnd: HWND, lpString: LPCSTR, ) -> HANDLE; pub fn GetPropW( hwnd: HWND, lpString: LPCWSTR, ) -> HANDLE; pub fn RemovePropA( hWnd: HWND, lpStr: LPCSTR, ) -> HANDLE; pub fn RemovePropW( hWnd: HWND, lpStr: LPCWSTR, ) -> HANDLE; pub fn EnumPropsExA( hWnd: HWND, lpEnumFunc: PROPENUMPROCA, lParam: LPARAM, ) -> c_int; pub fn EnumPropsExW( hWnd: HWND, lpEnumFunc: PROPENUMPROCW, lParam: LPARAM, ) -> c_int; pub fn EnumPropsA( hWnd: HWND, lpEnumFunc: PROPENUMPROCA, ) -> c_int; pub fn EnumPropsW( hWnd: HWND, lpEnumFunc: PROPENUMPROCW, ) -> c_int; pub fn SetWindowTextA( hWnd: HWND, lpString: LPCSTR, ) -> BOOL; pub fn SetWindowTextW( hWnd: HWND, lpString: LPCWSTR, ) -> BOOL; pub fn GetWindowTextA( hWnd: HWND, lpString: LPSTR, nMaxCount: c_int, ) -> c_int; pub fn GetWindowTextW( hWnd: HWND, lpString: LPWSTR, nMaxCount: c_int, ) -> c_int; pub fn GetWindowTextLengthA( hWnd: HWND, ) -> c_int; pub fn GetWindowTextLengthW( hWnd: HWND, ) -> c_int; pub fn GetClientRect( hWnd: HWND, lpRect: LPRECT, ) -> BOOL; pub fn GetWindowRect( hWnd: HWND, lpRect: LPRECT, ) -> BOOL; pub fn AdjustWindowRect( lpRect: LPRECT, dwStyle: DWORD, bMenu: BOOL, ) -> BOOL; pub fn AdjustWindowRectEx( lpRect: LPRECT, dwStyle: DWORD, bMenu: BOOL, dwExStyle: DWORD, ) -> BOOL; pub fn AdjustWindowRectExForDpi( lpRect: LPRECT, dwStyle: DWORD, bMenu: BOOL, dwExStyle: DWORD, dpi: UINT, ) -> BOOL; } pub const HELPINFO_WINDOW: UINT = 0x0001; pub const HELPINFO_MENUITEM: UINT = 0x0002; STRUCT!{struct HELPINFO { cbSize: UINT, iContextType: c_int, iCtrlId: c_int, hItemHandle: HANDLE, dwContextId: DWORD, MousePos: POINT, }} pub type LPHELPINFO = *mut HELPINFO; extern "system" { pub fn SetWindowContextHelpId( _: HWND, _: DWORD, ) -> BOOL; pub fn GetWindowContextHelpId( _: HWND, ) -> DWORD; pub fn SetMenuContextHelpId( _: HMENU, _: DWORD, ) -> BOOL; pub fn GetMenuContextHelpId( _: HMENU, ) -> DWORD; } pub const MB_OK: UINT = 0x00000000; pub const MB_OKCANCEL: UINT = 0x00000001; pub const MB_ABORTRETRYIGNORE: UINT = 0x00000002; pub const MB_YESNOCANCEL: UINT = 0x00000003; pub const MB_YESNO: UINT = 0x00000004; pub const MB_RETRYCANCEL: UINT = 0x00000005; pub const MB_CANCELTRYCONTINUE: UINT = 0x00000006; pub const MB_ICONHAND: UINT = 0x00000010; pub const MB_ICONQUESTION: UINT = 0x00000020; pub const MB_ICONEXCLAMATION: UINT = 0x00000030; pub const MB_ICONASTERISK: UINT = 0x00000040; pub const MB_USERICON: UINT = 0x00000080; pub const MB_ICONWARNING: UINT = MB_ICONEXCLAMATION; pub const MB_ICONERROR: UINT = MB_ICONHAND; pub const MB_ICONINFORMATION: UINT = MB_ICONASTERISK; pub const MB_ICONSTOP: UINT = MB_ICONHAND; pub const MB_DEFBUTTON1: UINT = 0x00000000; pub const MB_DEFBUTTON2: UINT = 0x00000100; pub const MB_DEFBUTTON3: UINT = 0x00000200; pub const MB_DEFBUTTON4: UINT = 0x00000300; pub const MB_APPLMODAL: UINT = 0x00000000; pub const MB_SYSTEMMODAL: UINT = 0x00001000; pub const MB_TASKMODAL: UINT = 0x00002000; pub const MB_HELP: UINT = 0x00004000; pub const MB_NOFOCUS: UINT = 0x00008000; pub const MB_SETFOREGROUND: UINT = 0x00010000; pub const MB_DEFAULT_DESKTOP_ONLY: UINT = 0x00020000; pub const MB_TOPMOST: UINT = 0x00040000; pub const MB_RIGHT: UINT = 0x00080000; pub const MB_RTLREADING: UINT = 0x00100000; pub const MB_SERVICE_NOTIFICATION: UINT = 0x00200000; pub const MB_SERVICE_NOTIFICATION_NT3X: UINT = 0x00040000; pub const MB_TYPEMASK: UINT = 0x0000000F; pub const MB_ICONMASK: UINT = 0x000000F0; pub const MB_DEFMASK: UINT = 0x00000F00; pub const MB_MODEMASK: UINT = 0x00003000; pub const MB_MISCMASK: UINT = 0x0000C000; extern "system" { pub fn MessageBoxA( hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, ) -> c_int; pub fn MessageBoxW( hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, ) -> c_int; pub fn MessageBoxExA( hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT, wLanguageId: WORD, ) -> c_int; pub fn MessageBoxExW( hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT, wLanguageId: WORD, ) -> c_int; } FN!{stdcall MSGBOXCALLBACK( LPHELPINFO, ) -> ()} STRUCT!{struct MSGBOXPARAMSA { cbSize: UINT, hwndOwner: HWND, hInstance: HINSTANCE, lpszText: LPCSTR, lpszCaption: LPCSTR, dwStyle: DWORD, lpszIcon: LPCSTR, dwContextHelpId: DWORD_PTR, lpfnMsgBoxCallback: MSGBOXCALLBACK, dwLanguageId: DWORD, }} pub type PMSGBOXPARAMSA = *mut MSGBOXPARAMSA; pub type LPMSGBOXPARAMSA = *mut MSGBOXPARAMSA; STRUCT!{struct MSGBOXPARAMSW { cbSize: UINT, hwndOwner: HWND, hInstance: HINSTANCE, lpszText: LPCWSTR, lpszCaption: LPCWSTR, dwStyle: DWORD, lpszIcon: LPCWSTR, dwContextHelpId: DWORD_PTR, lpfnMsgBoxCallback: MSGBOXCALLBACK, dwLanguageId: DWORD, }} pub type PMSGBOXPARAMSW = *mut MSGBOXPARAMSW; pub type LPMSGBOXPARAMSW = *mut MSGBOXPARAMSW; extern "system" { pub fn MessageBoxIndirectA( lpmbp: *const MSGBOXPARAMSA, ) -> c_int; pub fn MessageBoxIndirectW( lpmbp: *const MSGBOXPARAMSW, ) -> c_int; pub fn MessageBeep( uType: UINT, ) -> BOOL; pub fn ShowCursor( bShow: BOOL, ) -> c_int; pub fn SetCursorPos( X: c_int, Y: c_int, ) -> BOOL; pub fn SetPhysicalCursorPos( X: c_int, Y: c_int, ) -> BOOL; pub fn SetCursor( hCursor: HCURSOR, ) -> HCURSOR; pub fn GetCursorPos( lpPoint: LPPOINT, ) -> BOOL; pub fn GetPhysicalCursorPos( lpPoint: LPPOINT, ) -> BOOL; pub fn GetClipCursor( lpRect: LPRECT, ) -> BOOL; pub fn GetCursor() -> HCURSOR; pub fn CreateCaret( hWnd: HWND, hBitmap: HBITMAP, nWidth: c_int, nHeight: c_int, ) -> BOOL; pub fn GetCaretBlinkTime() -> UINT; pub fn SetCaretBlinkTime( uMSeconds: UINT, ) -> BOOL; pub fn DestroyCaret() -> BOOL; pub fn HideCaret( hWnd: HWND, ) -> BOOL; pub fn ShowCaret( hWnd: HWND, ) -> BOOL; pub fn SetCaretPos( X: c_int, Y: c_int, ) -> BOOL; pub fn GetCaretPos( lpPoint: LPPOINT, ) -> BOOL; pub fn ClientToScreen( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL; pub fn ScreenToClient( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL; pub fn LogicalToPhysicalPoint( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL; pub fn PhysicalToLogicalPoint( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL; pub fn LogicalToPhysicalPointForPerMonitorDPI( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL; pub fn PhysicalToLogicalPointForPerMonitorDPI( hWnd: HWND, lpPoint: LPPOINT, ) -> BOOL; pub fn MapWindowPoints( hWndFrom: HWND, hWndTo: HWND, lpPoints: LPPOINT, cPoints: UINT, ) -> c_int; pub fn WindowFromPoint( Point: POINT, ) -> HWND; pub fn WindowFromPhysicalPoint( Point: POINT, ) -> HWND; pub fn ChildWindowFromPoint( hWndParent: HWND, point: POINT, ) -> HWND; pub fn ClipCursor( lpRect: *const RECT, ) -> BOOL; } pub const CWP_ALL: UINT = 0x0000; pub const CWP_SKIPINVISIBLE: UINT = 0x0001; pub const CWP_SKIPDISABLED: UINT = 0x0002; pub const CWP_SKIPTRANSPARENT: UINT = 0x0004; extern "system" { pub fn ChildWindowFromPointEx( hwnd: HWND, pt: POINT, flags: UINT, ) -> HWND; } pub const CTLCOLOR_MSGBOX: c_int = 0; pub const CTLCOLOR_EDIT: c_int = 1; pub const CTLCOLOR_LISTBOX: c_int = 2; pub const CTLCOLOR_BTN: c_int = 3; pub const CTLCOLOR_DLG: c_int = 4; pub const CTLCOLOR_SCROLLBAR: c_int = 5; pub const CTLCOLOR_STATIC: c_int = 6; pub const CTLCOLOR_MAX: c_int = 7; pub const COLOR_SCROLLBAR: c_int = 0; pub const COLOR_BACKGROUND: c_int = 1; pub const COLOR_ACTIVECAPTION: c_int = 2; pub const COLOR_INACTIVECAPTION: c_int = 3; pub const COLOR_MENU: c_int = 4; pub const COLOR_WINDOW: c_int = 5; pub const COLOR_WINDOWFRAME: c_int = 6; pub const COLOR_MENUTEXT: c_int = 7; pub const COLOR_WINDOWTEXT: c_int = 8; pub const COLOR_CAPTIONTEXT: c_int = 9; pub const COLOR_ACTIVEBORDER: c_int = 10; pub const COLOR_INACTIVEBORDER: c_int = 11; pub const COLOR_APPWORKSPACE: c_int = 12; pub const COLOR_HIGHLIGHT: c_int = 13; pub const COLOR_HIGHLIGHTTEXT: c_int = 14; pub const COLOR_BTNFACE: c_int = 15; pub const COLOR_BTNSHADOW: c_int = 16; pub const COLOR_GRAYTEXT: c_int = 17; pub const COLOR_BTNTEXT: c_int = 18; pub const COLOR_INACTIVECAPTIONTEXT: c_int = 19; pub const COLOR_BTNHIGHLIGHT: c_int = 20; pub const COLOR_3DDKSHADOW: c_int = 21; pub const COLOR_3DLIGHT: c_int = 22; pub const COLOR_INFOTEXT: c_int = 23; pub const COLOR_INFOBK: c_int = 24; pub const COLOR_HOTLIGHT: c_int = 26; pub const COLOR_GRADIENTACTIVECAPTION: c_int = 27; pub const COLOR_GRADIENTINACTIVECAPTION: c_int = 28; pub const COLOR_MENUHILIGHT: c_int = 29; pub const COLOR_MENUBAR: c_int = 30; pub const COLOR_DESKTOP: c_int = COLOR_BACKGROUND; pub const COLOR_3DFACE: c_int = COLOR_BTNFACE; pub const COLOR_3DSHADOW: c_int = COLOR_BTNSHADOW; pub const COLOR_3DHIGHLIGHT: c_int = COLOR_BTNHIGHLIGHT; pub const COLOR_3DHILIGHT: c_int = COLOR_BTNHIGHLIGHT; pub const COLOR_BTNHILIGHT: c_int = COLOR_BTNHIGHLIGHT; extern "system" { pub fn GetSysColor( nIndex: c_int, ) -> DWORD; pub fn GetSysColorBrush( nIndex: c_int, ) -> HBRUSH; pub fn SetSysColors( cElements: c_int, lpaElements: *const INT, lpaRgbValues: *const COLORREF, ) -> BOOL; pub fn DrawFocusRect( hDC: HDC, lprc: *const RECT, ) -> BOOL; pub fn FillRect( hDC: HDC, lprc: *const RECT, hbr: HBRUSH, ) -> c_int; pub fn FrameRect( hDC: HDC, lprc: *const RECT, hbr: HBRUSH, ) -> c_int; pub fn InvertRect( hDC: HDC, lprc: *const RECT, ) -> BOOL; pub fn SetRect( lprc: LPRECT, xLeft: c_int, yTop: c_int, xRight: c_int, yBottom: c_int, ) -> BOOL; pub fn SetRectEmpty( lprc: LPRECT, ) -> BOOL; pub fn CopyRect( lprcDst: LPRECT, lprcSrc: *const RECT, ) -> BOOL; pub fn InflateRect( lprc: LPRECT, dx: c_int, dy: c_int, ) -> BOOL; pub fn IntersectRect( lprcDst: LPRECT, lprcSrc1: *const RECT, lprcSrc2: *const RECT, ) -> BOOL; pub fn UnionRect( lprcDst: LPRECT, lprcSrc1: *const RECT, lprcSrc2: *const RECT, ) -> BOOL; pub fn SubtractRect( lprcDst: LPRECT, lprcSrc1: *const RECT, lprcSrc2: *const RECT, ) -> BOOL; pub fn OffsetRect( lprc: LPRECT, dx: c_int, dy: c_int, ) -> BOOL; pub fn IsRectEmpty( lprc: *const RECT, ) -> BOOL; pub fn EqualRect( lprc1: *const RECT, lprc2: *const RECT, ) -> BOOL; pub fn PtInRect( lprc: *const RECT, pt: POINT, ) -> BOOL; pub fn GetWindowWord( hWnd: HWND, nIndex: c_int, ) -> WORD; pub fn SetWindowWord( hwnd: HWND, nIndex: c_int, wNewWord: WORD, ) -> WORD; pub fn GetWindowLongA( hWnd: HWND, nIndex: c_int, ) -> LONG; pub fn GetWindowLongW( hWnd: HWND, nIndex: c_int, ) -> LONG; pub fn SetWindowLongA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> LONG; pub fn SetWindowLongW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> LONG; #[cfg(target_pointer_width = "64")] pub fn GetWindowLongPtrA( hWnd: HWND, nIndex: c_int, ) -> LONG_PTR; #[cfg(target_pointer_width = "64")] pub fn GetWindowLongPtrW( hWnd: HWND, nIndex: c_int, ) -> LONG_PTR; #[cfg(target_pointer_width = "64")] pub fn SetWindowLongPtrA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> LONG_PTR; #[cfg(target_pointer_width = "64")] pub fn SetWindowLongPtrW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> LONG_PTR; } #[cfg(target_pointer_width = "32")] pub use self::GetWindowLongA as GetWindowLongPtrA; #[cfg(target_pointer_width = "32")] pub use self::GetWindowLongW as GetWindowLongPtrW; #[cfg(target_pointer_width = "32")] pub use self::SetWindowLongA as SetWindowLongPtrA; #[cfg(target_pointer_width = "32")] pub use self::SetWindowLongW as SetWindowLongPtrW; extern "system" { pub fn GetClassWord( hWnd: HWND, nIndex: c_int, ) -> WORD; pub fn SetClassWord( hWnd: HWND, nIndex: c_int, wNewWord: WORD, ) -> WORD; pub fn GetClassLongA( hWnd: HWND, nIndex: c_int, ) -> DWORD; pub fn GetClassLongW( hWnd: HWND, nIndex: c_int, ) -> DWORD; pub fn SetClassLongA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> DWORD; pub fn SetClassLongW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG, ) -> DWORD; #[cfg(target_pointer_width = "64")] pub fn GetClassLongPtrA( hWnd: HWND, nIndex: c_int, ) -> ULONG_PTR; #[cfg(target_pointer_width = "64")] pub fn GetClassLongPtrW( hWnd: HWND, nIndex: c_int, ) -> ULONG_PTR; #[cfg(target_pointer_width = "64")] pub fn SetClassLongPtrA( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> ULONG_PTR; #[cfg(target_pointer_width = "64")] pub fn SetClassLongPtrW( hWnd: HWND, nIndex: c_int, dwNewLong: LONG_PTR, ) -> ULONG_PTR; } #[cfg(target_pointer_width = "32")] pub use self::GetClassLongA as GetClassLongPtrA; #[cfg(target_pointer_width = "32")] pub use self::GetClassLongW as GetClassLongPtrW; #[cfg(target_pointer_width = "32")] pub use self::SetClassLongA as SetClassLongPtrA; #[cfg(target_pointer_width = "32")] pub use self::SetClassLongW as SetClassLongPtrW; extern "system" { pub fn GetProcessDefaultLayout( pdwDefaultLayout: *mut DWORD, ) -> BOOL; pub fn SetProcessDefaultLayout( dwDefaultLayout: DWORD, ) -> BOOL; pub fn GetDesktopWindow() -> HWND; pub fn GetParent( hWnd: HWND, ) -> HWND; pub fn SetParent( hWndChild: HWND, hWndNewParent: HWND, ) -> HWND; pub fn EnumChildWindows( hWndParent: HWND, lpEnumFunc: WNDENUMPROC, lParam: LPARAM, ) -> BOOL; pub fn FindWindowA( lpClassName: LPCSTR, lpWindowName: LPCSTR, ) -> HWND; pub fn FindWindowW( lpClassName: LPCWSTR, lpWindowName: LPCWSTR, ) -> HWND; pub fn FindWindowExA( hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR, ) -> HWND; pub fn FindWindowExW( hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR, ) -> HWND; pub fn GetShellWindow() -> HWND; pub fn RegisterShellHookWindow( hwnd: HWND, ) -> BOOL; pub fn DeregisterShellHookWindow( hwnd: HWND, ) -> BOOL; pub fn EnumWindows( lpEnumFunc: WNDENUMPROC, lParam: LPARAM, ) -> BOOL; pub fn EnumThreadWindows( dwThreadId: DWORD, lpfn: WNDENUMPROC, lParam: LPARAM, ) -> BOOL; } // EnumTaskWindows extern "system" { pub fn GetClassNameA( hWnd: HWND, lpClassName: LPCSTR, nMaxCount: c_int, ) -> c_int; pub fn GetClassNameW( hWnd: HWND, lpClassName: LPCWSTR, nMaxCount: c_int, ) -> c_int; pub fn GetTopWindow( hWnd: HWND, ) -> HWND; } // GetNextWindow // GetSysModalWindow // SetSysModalWindow extern "system" { pub fn GetWindowThreadProcessId( hWnd: HWND, lpdwProcessId: LPDWORD, ) -> DWORD; pub fn IsGUIThread( bConvert: BOOL, ) -> BOOL; pub fn GetLastActivePopup( hWnd: HWND, ) -> HWND; } pub const GW_HWNDFIRST: UINT = 0; pub const GW_HWNDLAST: UINT = 1; pub const GW_HWNDNEXT: UINT = 2; pub const GW_HWNDPREV: UINT = 3; pub const GW_OWNER: UINT = 4; pub const GW_CHILD: UINT = 5; pub const GW_ENABLEDPOPUP: UINT = 6; pub const GW_MAX: UINT = 6; extern "system" { pub fn GetWindow( hWnd: HWND, uCmd: UINT, ) -> HWND; pub fn SetWindowsHookA( nFilterType: c_int, pfnFilterProc: HOOKPROC, ) -> HHOOK; pub fn SetWindowsHookW( nFilterType: c_int, pfnFilterProc: HOOKPROC, ) -> HHOOK; pub fn UnhookWindowsHook( nFilterType: c_int, pfnFilterProc: HOOKPROC, ) -> BOOL; pub fn SetWindowsHookExA( idHook: c_int, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD, ) -> HHOOK; pub fn SetWindowsHookExW( idHook: c_int, lpfn: HOOKPROC, hmod: HINSTANCE, dwThreadId: DWORD, ) -> HHOOK; pub fn UnhookWindowsHookEx( hhk: HHOOK, ) -> BOOL; pub fn CallNextHookEx( hhk: HHOOK, nCode: c_int, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; } // DefHookProc pub const MF_INSERT: UINT = 0x00000000; pub const MF_CHANGE: UINT = 0x00000080; pub const MF_APPEND: UINT = 0x00000100; pub const MF_DELETE: UINT = 0x00000200; pub const MF_REMOVE: UINT = 0x00001000; pub const MF_BYCOMMAND: UINT = 0x00000000; pub const MF_BYPOSITION: UINT = 0x00000400; pub const MF_SEPARATOR: UINT = 0x00000800; pub const MF_ENABLED: UINT = 0x00000000; pub const MF_GRAYED: UINT = 0x00000001; pub const MF_DISABLED: UINT = 0x00000002; pub const MF_UNCHECKED: UINT = 0x00000000; pub const MF_CHECKED: UINT = 0x00000008; pub const MF_USECHECKBITMAPS: UINT = 0x00000200; pub const MF_STRING: UINT = 0x00000000; pub const MF_BITMAP: UINT = 0x00000004; pub const MF_OWNERDRAW: UINT = 0x00000100; pub const MF_POPUP: UINT = 0x00000010; pub const MF_MENUBARBREAK: UINT = 0x00000020; pub const MF_MENUBREAK: UINT = 0x00000040; pub const MF_UNHILITE: UINT = 0x00000000; pub const MF_HILITE: UINT = 0x00000080; pub const MF_DEFAULT: UINT = 0x00001000; pub const MF_SYSMENU: UINT = 0x00002000; pub const MF_HELP: UINT = 0x00004000; pub const MF_RIGHTJUSTIFY: UINT = 0x00004000; pub const MF_MOUSESELECT: UINT = 0x00008000; pub const MF_END: UINT = 0x00000080; pub const MFT_STRING: UINT = MF_STRING; pub const MFT_BITMAP: UINT = MF_BITMAP; pub const MFT_MENUBARBREAK: UINT = MF_MENUBARBREAK; pub const MFT_MENUBREAK: UINT = MF_MENUBREAK; pub const MFT_OWNERDRAW: UINT = MF_OWNERDRAW; pub const MFT_RADIOCHECK: UINT = 0x00000200; pub const MFT_SEPARATOR: UINT = MF_SEPARATOR; pub const MFT_RIGHTORDER: UINT = 0x00002000; pub const MFT_RIGHTJUSTIFY: UINT = MF_RIGHTJUSTIFY; pub const MFS_GRAYED: UINT = 0x00000003; pub const MFS_DISABLED: UINT = MFS_GRAYED; pub const MFS_CHECKED: UINT = MF_CHECKED; pub const MFS_HILITE: UINT = MF_HILITE; pub const MFS_ENABLED: UINT = MF_ENABLED; pub const MFS_UNCHECKED: UINT = MF_UNCHECKED; pub const MFS_UNHILITE: UINT = MF_UNHILITE; pub const MFS_DEFAULT: UINT = MF_DEFAULT; extern "system" { pub fn CheckMenuRadioItem( hMenu: HMENU, first: UINT, last: UINT, check: UINT, flags: UINT, ) -> BOOL; } //10225 pub const SC_SIZE: WPARAM = 0xF000; pub const SC_MOVE: WPARAM = 0xF010; pub const SC_MINIMIZE: WPARAM = 0xF020; pub const SC_MAXIMIZE: WPARAM = 0xF030; pub const SC_NEXTWINDOW: WPARAM = 0xF040; pub const SC_PREVWINDOW: WPARAM = 0xF050; pub const SC_CLOSE: WPARAM = 0xF060; pub const SC_VSCROLL: WPARAM = 0xF070; pub const SC_HSCROLL: WPARAM = 0xF080; pub const SC_MOUSEMENU: WPARAM = 0xF090; pub const SC_KEYMENU: WPARAM = 0xF100; pub const SC_ARRANGE: WPARAM = 0xF110; pub const SC_RESTORE: WPARAM = 0xF120; pub const SC_TASKLIST: WPARAM = 0xF130; pub const SC_SCREENSAVE: WPARAM = 0xF140; pub const SC_HOTKEY: WPARAM = 0xF150; pub const SC_DEFAULT: WPARAM = 0xF160; pub const SC_MONITORPOWER: WPARAM = 0xF170; pub const SC_CONTEXTHELP: WPARAM = 0xF180; pub const SC_SEPARATOR: WPARAM = 0xF00F; //10269 extern "system" { pub fn LoadBitmapA( hInstance: HINSTANCE, lpBitmapName: LPCSTR, ) -> HBITMAP; pub fn LoadBitmapW( hInstance: HINSTANCE, lpBitmapName: LPCWSTR, ) -> HBITMAP; pub fn LoadCursorA( hInstance: HINSTANCE, lpCursorName: LPCSTR, ) -> HCURSOR; pub fn LoadCursorW( hInstance: HINSTANCE, lpCursorName: LPCWSTR, ) -> HCURSOR; pub fn LoadCursorFromFileA( lpFileName: LPCSTR, ) -> HCURSOR; pub fn LoadCursorFromFileW( lpFileName: LPCWSTR, ) -> HCURSOR; pub fn CreateCursor( hInst: HINSTANCE, xHotSpot: c_int, yHotSpot: c_int, nWidth: c_int, nHeight: c_int, pvAndPlane: *const VOID, pvXORPlane: *const VOID, ) -> HCURSOR; pub fn DestroyCursor( hCursor: HCURSOR, ) -> BOOL; } //10355 pub const IDC_ARROW: LPCWSTR = 32512 as LPCWSTR; pub const IDC_IBEAM: LPCWSTR = 32513 as LPCWSTR; pub const IDC_WAIT: LPCWSTR = 32514 as LPCWSTR; pub const IDC_CROSS: LPCWSTR = 32515 as LPCWSTR; pub const IDC_UPARROW: LPCWSTR = 32516 as LPCWSTR; pub const IDC_SIZE: LPCWSTR = 32640 as LPCWSTR; pub const IDC_ICON: LPCWSTR = 32641 as LPCWSTR; pub const IDC_SIZENWSE: LPCWSTR = 32642 as LPCWSTR; pub const IDC_SIZENESW: LPCWSTR = 32643 as LPCWSTR; pub const IDC_SIZEWE: LPCWSTR = 32644 as LPCWSTR; pub const IDC_SIZENS: LPCWSTR = 32645 as LPCWSTR; pub const IDC_SIZEALL: LPCWSTR = 32646 as LPCWSTR; pub const IDC_NO: LPCWSTR = 32648 as LPCWSTR; pub const IDC_HAND: LPCWSTR = 32649 as LPCWSTR; pub const IDC_APPSTARTING: LPCWSTR = 32650 as LPCWSTR; pub const IDC_HELP: LPCWSTR = 32651 as LPCWSTR; extern "system" { pub fn SetSystemCursor( hcur: HCURSOR, id: DWORD, ) -> BOOL; } STRUCT!{struct ICONINFO { fIcon: BOOL, xHotspot: DWORD, yHotspot: DWORD, hbmMask: HBITMAP, hbmColor: HBITMAP, }} pub type PICONINFO = *mut ICONINFO; extern "system" { pub fn LoadIconA( hInstance: HINSTANCE, lpIconName: LPCSTR, ) -> HICON; pub fn LoadIconW( hInstance: HINSTANCE, lpIconName: LPCWSTR, ) -> HICON; } //10449 extern "system" { pub fn CreateIcon( hInstance: HINSTANCE, nWidth: c_int, nHeight: c_int, cPlanes: BYTE, cBitsPixel: BYTE, lpbANDbits: *const BYTE, lpbXORbits: *const BYTE, ) -> HICON; pub fn DestroyIcon( hIcon: HICON, ) -> BOOL; pub fn LookupIconIdFromDirectory( presbits: PBYTE, fIcon: BOOL, ) -> c_int; pub fn LookupIconIdFromDirectoryEx( presbits: PBYTE, fIcon: BOOL, cxDesired: c_int, cyDesired: c_int, Flags: UINT, ) -> c_int; pub fn CreateIconFromResource( presbits: PBYTE, dwResSize: DWORD, fIcon: BOOL, dwVer: DWORD, ) -> HICON; pub fn CreateIconFromResourceEx( presbits: PBYTE, dwResSize: DWORD, fIcon: BOOL, dwVer: DWORD, cxDesired: c_int, cyDesired: c_int, Flags: UINT, ) -> HICON; } //10524 pub const IMAGE_BITMAP: UINT = 0; pub const IMAGE_ICON: UINT = 1; pub const IMAGE_CURSOR: UINT = 2; pub const IMAGE_ENHMETAFILE: UINT = 3; pub const LR_DEFAULTCOLOR: UINT = 0x00000000; pub const LR_MONOCHROME: UINT = 0x00000001; pub const LR_COLOR: UINT = 0x00000002; pub const LR_COPYRETURNORG: UINT = 0x00000004; pub const LR_COPYDELETEORG: UINT = 0x00000008; pub const LR_LOADFROMFILE: UINT = 0x00000010; pub const LR_LOADTRANSPARENT: UINT = 0x00000020; pub const LR_DEFAULTSIZE: UINT = 0x00000040; pub const LR_VGACOLOR: UINT = 0x00000080; pub const LR_LOADMAP3DCOLORS: UINT = 0x00001000; pub const LR_CREATEDIBSECTION: UINT = 0x00002000; pub const LR_COPYFROMRESOURCE: UINT = 0x00004000; pub const LR_SHARED: UINT = 0x00008000; extern "system" { pub fn LoadImageA( hInst: HINSTANCE, name: LPCSTR, type_: UINT, cx: c_int, cy: c_int, fuLoad: UINT, ) -> HANDLE; pub fn LoadImageW( hInst: HINSTANCE, name: LPCWSTR, type_: UINT, cx: c_int, cy: c_int, fuLoad: UINT, ) -> HANDLE; pub fn CopyImage( h: HANDLE, type_: UINT, cx: c_int, cy: c_int, flags: UINT, ) -> HANDLE; } //10592 extern "system" { pub fn DrawIconEx( hdc: HDC, xLeft: c_int, yTop: c_int, hIcon: HICON, cxWidth: c_int, cyWidth: c_int, istepIfAniCur: UINT, hbrFlickerFreeDraw: HBRUSH, diFlags: UINT, ) -> BOOL; pub fn CreateIconIndirect( piconinfo: PICONINFO, ) -> HICON; pub fn CopyIcon( hIcon: HICON, ) -> HICON; pub fn GetIconInfo( hIcon: HICON, piconinfo: PICONINFO, ) -> BOOL; } //10781 pub const IDI_APPLICATION: LPCWSTR = 32512 as LPCWSTR; pub const IDI_HAND: LPCWSTR = 32513 as LPCWSTR; pub const IDI_QUESTION: LPCWSTR = 32514 as LPCWSTR; pub const IDI_EXCLAMATION: LPCWSTR = 32515 as LPCWSTR; pub const IDI_ASTERISK: LPCWSTR = 32516 as LPCWSTR; pub const IDI_WINLOGO: LPCWSTR = 32517 as LPCWSTR; pub const IDI_SHIELD: LPCWSTR = 32518 as LPCWSTR; pub const IDI_WARNING: LPCWSTR = IDI_EXCLAMATION; pub const IDI_ERROR: LPCWSTR = IDI_HAND; pub const IDI_INFORMATION: LPCWSTR = IDI_ASTERISK; //10853 pub const IDOK: c_int = 1; pub const IDCANCEL: c_int = 2; pub const IDABORT: c_int = 3; pub const IDRETRY: c_int = 4; pub const IDIGNORE: c_int = 5; pub const IDYES: c_int = 6; pub const IDNO: c_int = 7; pub const IDCLOSE: c_int = 8; pub const IDHELP: c_int = 9; pub const IDTRYAGAIN: c_int = 10; pub const IDCONTINUE: c_int = 11; pub const IDTIMEOUT: c_int = 32000; pub const ES_LEFT: DWORD = 0x0000; pub const ES_CENTER: DWORD = 0x0001; pub const ES_RIGHT: DWORD = 0x0002; pub const ES_MULTILINE: DWORD = 0x0004; pub const ES_UPPERCASE: DWORD = 0x0008; pub const ES_LOWERCASE: DWORD = 0x0010; pub const ES_PASSWORD: DWORD = 0x0020; pub const ES_AUTOVSCROLL: DWORD = 0x0040; pub const ES_AUTOHSCROLL: DWORD = 0x0080; pub const ES_NOHIDESEL: DWORD = 0x0100; pub const ES_OEMCONVERT: DWORD = 0x0400; pub const ES_READONLY: DWORD = 0x0800; pub const ES_WANTRETURN: DWORD = 0x1000; pub const ES_NUMBER: DWORD = 0x2000; pub const EN_SETFOCUS: WORD = 0x0100; pub const EN_KILLFOCUS: WORD = 0x0200; pub const EN_CHANGE: WORD = 0x0300; pub const EN_UPDATE: WORD = 0x0400; pub const EN_ERRSPACE: WORD = 0x0500; pub const EN_MAXTEXT: WORD = 0x0501; pub const EN_HSCROLL: WORD = 0x0601; pub const EN_VSCROLL: WORD = 0x0602; pub const EN_ALIGN_LTR_EC: WORD = 0x0700; pub const EN_ALIGN_RTL_EC: WORD = 0x0701; pub const EC_LEFTMARGIN: WORD = 0x0001; pub const EC_RIGHTMARGIN: WORD = 0x0002; pub const EC_USEFONTINFO: WORD = 0xffff; pub const EMSIS_COMPOSITIONSTRING: WORD = 0x0001; pub const EIMES_GETCOMPSTRATONCE: WORD = 0x0001; pub const EIMES_CANCELCOMPSTRINFOCUS: WORD = 0x0002; pub const EIMES_COMPLETECOMPSTRKILLFOCUS: WORD = 0x0004; pub const EM_GETSEL: WORD = 0x00B0; pub const EM_SETSEL: WORD = 0x00B1; pub const EM_GETRECT: WORD = 0x00B2; pub const EM_SETRECT: WORD = 0x00B3; pub const EM_SETRECTNP: WORD = 0x00B4; pub const EM_SCROLL: WORD = 0x00B5; pub const EM_LINESCROLL: WORD = 0x00B6; pub const EM_SCROLLCARET: WORD = 0x00B7; pub const EM_GETMODIFY: WORD = 0x00B8; pub const EM_SETMODIFY: WORD = 0x00B9; pub const EM_GETLINECOUNT: WORD = 0x00BA; pub const EM_LINEINDEX: WORD = 0x00BB; pub const EM_SETHANDLE: WORD = 0x00BC; pub const EM_GETHANDLE: WORD = 0x00BD; pub const EM_GETTHUMB: WORD = 0x00BE; pub const EM_LINELENGTH: WORD = 0x00C1; pub const EM_REPLACESEL: WORD = 0x00C2; pub const EM_GETLINE: WORD = 0x00C4; pub const EM_LIMITTEXT: WORD = 0x00C5; pub const EM_CANUNDO: WORD = 0x00C6; pub const EM_UNDO: WORD = 0x00C7; pub const EM_FMTLINES: WORD = 0x00C8; pub const EM_LINEFROMCHAR: WORD = 0x00C9; pub const EM_SETTABSTOPS: WORD = 0x00CB; pub const EM_SETPASSWORDCHAR: WORD = 0x00CC; pub const EM_EMPTYUNDOBUFFER: WORD = 0x00CD; pub const EM_GETFIRSTVISIBLELINE: WORD = 0x00CE; pub const EM_SETREADONLY: WORD = 0x00CF; pub const EM_SETWORDBREAKPROC: WORD = 0x00D0; pub const EM_GETWORDBREAKPROC: WORD = 0x00D1; pub const EM_GETPASSWORDCHAR: WORD = 0x00D2; pub const EM_SETMARGINS: WORD = 0x00D3; pub const EM_GETMARGINS: WORD = 0x00D4; pub const EM_SETLIMITTEXT: WORD = EM_LIMITTEXT; pub const EM_GETLIMITTEXT: WORD = 0x00D5; pub const EM_POSFROMCHAR: WORD = 0x00D6; pub const EM_CHARFROMPOS: WORD = 0x00D7; pub const EM_SETIMESTATUS: WORD = 0x00D8; pub const EM_GETIMESTATUS: WORD = 0x00D9; pub const WB_LEFT: WORD = 0; pub const WB_RIGHT: WORD = 1; pub const WB_ISDELIMITER: WORD = 2; pub const BN_CLICKED: WORD = 0; pub const BN_PAINT: WORD = 1; pub const BN_HILITE: WORD = 2; pub const BN_UNHILITE: WORD = 3; pub const BN_DISABLE: WORD = 4; pub const BN_DOUBLECLICKED: WORD = 5; pub const BN_PUSHED: WORD = BN_HILITE; pub const BN_UNPUSHED: WORD = BN_UNHILITE; pub const BN_DBLCLK: WORD = BN_DOUBLECLICKED; pub const BN_SETFOCUS: WORD = 6; pub const BN_KILLFOCUS: WORD = 7; pub const BS_PUSHBUTTON: DWORD = 0x00000000; pub const BS_DEFPUSHBUTTON: DWORD = 0x00000001; pub const BS_CHECKBOX: DWORD = 0x00000002; pub const BS_AUTOCHECKBOX: DWORD = 0x00000003; pub const BS_RADIOBUTTON: DWORD = 0x00000004; pub const BS_3STATE: DWORD = 0x00000005; pub const BS_AUTO3STATE: DWORD = 0x00000006; pub const BS_GROUPBOX: DWORD = 0x00000007; pub const BS_USERBUTTON: DWORD = 0x00000008; pub const BS_AUTORADIOBUTTON: DWORD = 0x00000009; pub const BS_PUSHBOX: DWORD = 0x0000000A; pub const BS_OWNERDRAW: DWORD = 0x0000000B; pub const BS_TYPEMASK: DWORD = 0x0000000F; pub const BS_LEFTTEXT: DWORD = 0x00000020; pub const BS_TEXT: DWORD = 0x00000000; pub const BS_ICON: DWORD = 0x00000040; pub const BS_BITMAP: DWORD = 0x00000080; pub const BS_LEFT: DWORD = 0x00000100; pub const BS_RIGHT: DWORD = 0x00000200; pub const BS_CENTER: DWORD = 0x00000300; pub const BS_TOP: DWORD = 0x00000400; pub const BS_BOTTOM: DWORD = 0x00000800; pub const BS_VCENTER: DWORD = 0x00000C00; pub const BS_PUSHLIKE: DWORD = 0x00001000; pub const BS_MULTILINE: DWORD = 0x00002000; pub const BS_NOTIFY: DWORD = 0x00004000; pub const BS_FLAT: DWORD = 0x00008000; pub const BS_RIGHTBUTTON: DWORD = BS_LEFTTEXT; pub const BM_GETCHECK: UINT = 0x00F0; pub const BM_SETCHECK: UINT = 0x00F1; pub const BM_GETSTATE: UINT = 0x00F2; pub const BM_SETSTATE: UINT = 0x00F3; pub const BM_SETSTYLE: UINT = 0x00F4; pub const BM_CLICK: UINT = 0x00F5; pub const BM_GETIMAGE: UINT = 0x00F6; pub const BM_SETIMAGE: UINT = 0x00F7; pub const BM_SETDONTCLICK: UINT = 0x00F8; pub const BST_UNCHECKED: WPARAM = 0x0000; pub const BST_CHECKED: WPARAM = 0x0001; pub const BST_INDETERMINATE: WPARAM = 0x0002; pub const BST_PUSHED: LRESULT = 0x0004; pub const BST_FOCUS: LRESULT = 0x0008; pub const SS_LEFT: DWORD = 0x00000000; pub const SS_CENTER: DWORD = 0x00000001; pub const SS_RIGHT: DWORD = 0x00000002; pub const SS_ICON: DWORD = 0x00000003; pub const SS_BLACKRECT: DWORD = 0x00000004; pub const SS_GRAYRECT: DWORD = 0x00000005; pub const SS_WHITERECT: DWORD = 0x00000006; pub const SS_BLACKFRAME: DWORD = 0x00000007; pub const SS_GRAYFRAME: DWORD = 0x00000008; pub const SS_WHITEFRAME: DWORD = 0x00000009; pub const SS_USERITEM: DWORD = 0x0000000A; pub const SS_SIMPLE: DWORD = 0x0000000B; pub const SS_LEFTNOWORDWRAP: DWORD = 0x0000000C; pub const SS_OWNERDRAW: DWORD = 0x0000000D; pub const SS_BITMAP: DWORD = 0x0000000E; pub const SS_ENHMETAFILE: DWORD = 0x0000000F; pub const SS_ETCHEDHORZ: DWORD = 0x00000010; pub const SS_ETCHEDVERT: DWORD = 0x00000011; pub const SS_ETCHEDFRAME: DWORD = 0x00000012; pub const SS_TYPEMASK: DWORD = 0x0000001F; pub const SS_REALSIZECONTROL: DWORD = 0x00000040; pub const SS_NOPREFIX: DWORD = 0x00000080; pub const SS_NOTIFY: DWORD = 0x00000100; pub const SS_CENTERIMAGE: DWORD = 0x00000200; pub const SS_RIGHTJUST: DWORD = 0x00000400; pub const SS_REALSIZEIMAGE: DWORD = 0x00000800; pub const SS_SUNKEN: DWORD = 0x00001000; pub const SS_EDITCONTROL: DWORD = 0x00002000; pub const SS_ENDELLIPSIS: DWORD = 0x00004000; pub const SS_PATHELLIPSIS: DWORD = 0x00008000; pub const SS_WORDELLIPSIS: DWORD = 0x0000C000; pub const SS_ELLIPSISMASK: DWORD = 0x0000C000; pub const STM_SETICON: UINT = 0x0170; pub const STM_GETICON: UINT = 0x0171; pub const STM_SETIMAGE: UINT = 0x0172; pub const STM_GETIMAGE: UINT = 0x0173; pub const STN_CLICKED: WORD = 0; pub const STN_DBLCLK: WORD = 1; pub const STN_ENABLE: WORD = 2; pub const STN_DISABLE: WORD = 3; pub const STM_MSGMAX: WORD = 0x0174; //11194 extern "system" { pub fn IsDialogMessageA( hDlg: HWND, lpMsg: LPMSG, ) -> BOOL; pub fn IsDialogMessageW( hDlg: HWND, lpMsg: LPMSG, ) -> BOOL; pub fn MapDialogRect( hDlg: HWND, lpRect: LPRECT, ) -> BOOL; pub fn DlgDirListA( hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: c_int, nIDStaticPath: c_int, uFileType: UINT, ) -> c_int; pub fn DlgDirListW( hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: c_int, nIDStaticPath: c_int, uFileType: UINT, ) -> c_int; } //11265 extern "system" { pub fn DlgDirSelectExA( hwndDlg: HWND, lpString: LPSTR, chCount: c_int, idListBox: c_int, ) -> BOOL; pub fn DlgDirSelectExW( hwndDlg: HWND, lpString: LPWSTR, chCount: c_int, idListBox: c_int, ) -> BOOL; pub fn DlgDirListComboBoxA( hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: c_int, nIDStaticPath: c_int, uFiletype: UINT, ) -> c_int; pub fn DlgDirListComboBoxW( hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: c_int, nIDStaticPath: c_int, uFiletype: UINT, ) -> c_int; pub fn DlgDirSelectComboBoxExA( hwndDlg: HWND, lpString: LPSTR, cchOut: c_int, idComboBox: c_int, ) -> BOOL; pub fn DlgDirSelectComboBoxExW( hwndDlg: HWND, lpString: LPWSTR, cchOut: c_int, idComboBox: c_int, ) -> BOOL; } pub const DS_ABSALIGN: DWORD = 0x01; pub const DS_SYSMODAL: DWORD = 0x02; pub const DS_LOCALEDIT: DWORD = 0x20; pub const DS_SETFONT: DWORD = 0x40; pub const DS_MODALFRAME: DWORD = 0x80; pub const DS_NOIDLEMSG: DWORD = 0x100; pub const DS_SETFOREGROUND: DWORD = 0x200; pub const DS_3DLOOK: DWORD = 0x0004; pub const DS_FIXEDSYS: DWORD = 0x0008; pub const DS_NOFAILCREATE: DWORD = 0x0010; pub const DS_CONTROL: DWORD = 0x0400; pub const DS_CENTER: DWORD = 0x0800; pub const DS_CENTERMOUSE: DWORD = 0x1000; pub const DS_CONTEXTHELP: DWORD = 0x2000; pub const DS_SHELLFONT: DWORD = DS_SETFONT | DS_FIXEDSYS; pub const DS_USEPIXELS: DWORD = 0x8000; pub const DM_GETDEFID: UINT = WM_USER + 0; pub const DM_SETDEFID: UINT = WM_USER + 1; pub const DM_REPOSITION: UINT = WM_USER + 2; pub const DC_HASDEFID: WORD = 0x534B; pub const DLGC_WANTARROWS: LRESULT = 0x0001; pub const DLGC_WANTTAB: LRESULT = 0x0002; pub const DLGC_WANTALLKEYS: LRESULT = 0x0004; pub const DLGC_WANTMESSAGE: LRESULT = 0x0004; pub const DLGC_HASSETSEL: LRESULT = 0x0008; pub const DLGC_DEFPUSHBUTTON: LRESULT = 0x0010; pub const DLGC_UNDEFPUSHBUTTON: LRESULT = 0x0020; pub const DLGC_RADIOBUTTON: LRESULT = 0x0040; pub const DLGC_WANTCHARS: LRESULT = 0x0080; pub const DLGC_STATIC: LRESULT = 0x0100; pub const DLGC_BUTTON: LRESULT = 0x2000; pub const LB_OKAY: LRESULT = 0; pub const LB_ERR: LRESULT = -1; pub const LB_ERRSPACE: LRESULT = -2; pub const LBN_ERRSPACE: WORD = -2i16 as u16; pub const LBN_SELCHANGE: WORD = 1; pub const LBN_DBLCLK: WORD = 2; pub const LBN_SELCANCEL: WORD = 3; pub const LBN_SETFOCUS: WORD = 4; pub const LBN_KILLFOCUS: WORD = 5; pub const LB_ADDSTRING: UINT = 0x0180; pub const LB_INSERTSTRING: UINT = 0x0181; pub const LB_DELETESTRING: UINT = 0x0182; pub const LB_SELITEMRANGEEX: UINT = 0x0183; pub const LB_RESETCONTENT: UINT = 0x0184; pub const LB_SETSEL: UINT = 0x0185; pub const LB_SETCURSEL: UINT = 0x0186; pub const LB_GETSEL: UINT = 0x0187; pub const LB_GETCURSEL: UINT = 0x0188; pub const LB_GETTEXT: UINT = 0x0189; pub const LB_GETTEXTLEN: UINT = 0x018A; pub const LB_GETCOUNT: UINT = 0x018B; pub const LB_SELECTSTRING: UINT = 0x018C; pub const LB_DIR: UINT = 0x018D; pub const LB_GETTOPINDEX: UINT = 0x018E; pub const LB_FINDSTRING: UINT = 0x018F; pub const LB_GETSELCOUNT: UINT = 0x0190; pub const LB_GETSELITEMS: UINT = 0x0191; pub const LB_SETTABSTOPS: UINT = 0x0192; pub const LB_GETHORIZONTALEXTENT: UINT = 0x0193; pub const LB_SETHORIZONTALEXTENT: UINT = 0x0194; pub const LB_SETCOLUMNWIDTH: UINT = 0x0195; pub const LB_ADDFILE: UINT = 0x0196; pub const LB_SETTOPINDEX: UINT = 0x0197; pub const LB_GETITEMRECT: UINT = 0x0198; pub const LB_GETITEMDATA: UINT = 0x0199; pub const LB_SETITEMDATA: UINT = 0x019A; pub const LB_SELITEMRANGE: UINT = 0x019B; pub const LB_SETANCHORINDEX: UINT = 0x019C; pub const LB_GETANCHORINDEX: UINT = 0x019D; pub const LB_SETCARETINDEX: UINT = 0x019E; pub const LB_GETCARETINDEX: UINT = 0x019F; pub const LB_SETITEMHEIGHT: UINT = 0x01A0; pub const LB_GETITEMHEIGHT: UINT = 0x01A1; pub const LB_FINDSTRINGEXACT: UINT = 0x01A2; pub const LB_SETLOCALE: UINT = 0x01A5; pub const LB_GETLOCALE: UINT = 0x01A6; pub const LB_SETCOUNT: UINT = 0x01A7; pub const LB_INITSTORAGE: UINT = 0x01A8; pub const LB_ITEMFROMPOINT: UINT = 0x01A9; pub const LB_MULTIPLEADDSTRING: UINT = 0x01B1; pub const LB_GETLISTBOXINFO: UINT = 0x01B2; pub const LB_MSGMAX: UINT = 0x01B3; pub const LBS_NOTIFY: DWORD = 0x0001; pub const LBS_SORT: DWORD = 0x0002; pub const LBS_NOREDRAW: DWORD = 0x0004; pub const LBS_MULTIPLESEL: DWORD = 0x0008; pub const LBS_OWNERDRAWFIXED: DWORD = 0x0010; pub const LBS_OWNERDRAWVARIABLE: DWORD = 0x0020; pub const LBS_HASSTRINGS: DWORD = 0x0040; pub const LBS_USETABSTOPS: DWORD = 0x0080; pub const LBS_NOINTEGRALHEIGHT: DWORD = 0x0100; pub const LBS_MULTICOLUMN: DWORD = 0x0200; pub const LBS_WANTKEYBOARDINPUT: DWORD = 0x0400; pub const LBS_EXTENDEDSEL: DWORD = 0x0800; pub const LBS_DISABLENOSCROLL: DWORD = 0x1000; pub const LBS_NODATA: DWORD = 0x2000; pub const LBS_NOSEL: DWORD = 0x4000; pub const LBS_COMBOBOX: DWORD = 0x8000; pub const LBS_STANDARD: DWORD = LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER; pub const CB_OKAY: LRESULT = 0; pub const CB_ERR: LRESULT = -1; pub const CB_ERRSPACE: LRESULT = -2; pub const CBN_ERRSPACE: WORD = -1i16 as u16; pub const CBN_SELCHANGE: WORD = 1; pub const CBN_DBLCLK: WORD = 2; pub const CBN_SETFOCUS: WORD = 3; pub const CBN_KILLFOCUS: WORD = 4; pub const CBN_EDITCHANGE: WORD = 5; pub const CBN_EDITUPDATE: WORD = 6; pub const CBN_DROPDOWN: WORD = 7; pub const CBN_CLOSEUP: WORD = 8; pub const CBN_SELENDOK: WORD = 9; pub const CBN_SELENDCANCEL: WORD = 10; pub const CBS_SIMPLE: DWORD = 0x0001; pub const CBS_DROPDOWN: DWORD = 0x0002; pub const CBS_DROPDOWNLIST: DWORD = 0x0003; pub const CBS_OWNERDRAWFIXED: DWORD = 0x0010; pub const CBS_OWNERDRAWVARIABLE: DWORD = 0x0020; pub const CBS_AUTOHSCROLL: DWORD = 0x0040; pub const CBS_OEMCONVERT: DWORD = 0x0080; pub const CBS_SORT: DWORD = 0x0100; pub const CBS_HASSTRINGS: DWORD = 0x0200; pub const CBS_NOINTEGRALHEIGHT: DWORD = 0x0400; pub const CBS_DISABLENOSCROLL: DWORD = 0x0800; pub const CBS_UPPERCASE: DWORD = 0x2000; pub const CBS_LOWERCASE: DWORD = 0x4000; //11571 pub const CB_GETEDITSEL: UINT = 0x0140; pub const CB_LIMITTEXT: UINT = 0x0141; pub const CB_SETEDITSEL: UINT = 0x0142; pub const CB_ADDSTRING: UINT = 0x0143; pub const CB_DELETESTRING: UINT = 0x0144; pub const CB_DIR: UINT = 0x0145; pub const CB_GETCOUNT: UINT = 0x0146; pub const CB_GETCURSEL: UINT = 0x0147; pub const CB_GETLBTEXT: UINT = 0x0148; pub const CB_GETLBTEXTLEN: UINT = 0x0149; pub const CB_INSERTSTRING: UINT = 0x014A; pub const CB_RESETCONTENT: UINT = 0x014B; pub const CB_FINDSTRING: UINT = 0x014C; pub const CB_SELECTSTRING: UINT = 0x014D; pub const CB_SETCURSEL: UINT = 0x014E; pub const CB_SHOWDROPDOWN: UINT = 0x014F; pub const CB_GETITEMDATA: UINT = 0x0150; pub const CB_SETITEMDATA: UINT = 0x0151; pub const CB_GETDROPPEDCONTROLRECT: UINT = 0x0152; pub const CB_SETITEMHEIGHT: UINT = 0x0153; pub const CB_GETITEMHEIGHT: UINT = 0x0154; pub const CB_SETEXTENDEDUI: UINT = 0x0155; pub const CB_GETEXTENDEDUI: UINT = 0x0156; pub const CB_GETDROPPEDSTATE: UINT = 0x0157; pub const CB_FINDSTRINGEXACT: UINT = 0x0158; pub const CB_SETLOCALE: UINT = 0x0159; pub const CB_GETLOCALE: UINT = 0x015A; pub const CB_GETTOPINDEX: UINT = 0x015b; pub const CB_SETTOPINDEX: UINT = 0x015c; pub const CB_GETHORIZONTALEXTENT: UINT = 0x015d; pub const CB_SETHORIZONTALEXTENT: UINT = 0x015e; pub const CB_GETDROPPEDWIDTH: UINT = 0x015f; pub const CB_SETDROPPEDWIDTH: UINT = 0x0160; pub const CB_INITSTORAGE: UINT = 0x0161; pub const CB_MULTIPLEADDSTRING: UINT = 0x0163; pub const CB_GETCOMBOBOXINFO: UINT = 0x0164; pub const CB_MSGMAX: UINT = 0x0165; pub const SBS_HORZ: DWORD = 0x0000; pub const SBS_VERT: DWORD = 0x0001; pub const SBS_TOPALIGN: DWORD = 0x0002; pub const SBS_LEFTALIGN: DWORD = 0x0002; pub const SBS_BOTTOMALIGN: DWORD = 0x0004; pub const SBS_RIGHTALIGN: DWORD = 0x0004; pub const SBS_SIZEBOXTOPLEFTALIGN: DWORD = 0x0002; pub const SBS_SIZEBOXBOTTOMRIGHTALIGN: DWORD = 0x0004; pub const SBS_SIZEBOX: DWORD = 0x0008; pub const SBS_SIZEGRIP: DWORD = 0x0010; pub const SBM_SETPOS: UINT = 0x00E0; pub const SBM_GETPOS: UINT = 0x00E1; pub const SBM_SETRANGE: UINT = 0x00E2; pub const SBM_SETRANGEREDRAW: UINT = 0x00E6; pub const SBM_GETRANGE: UINT = 0x00E3; pub const SBM_ENABLE_ARROWS: UINT = 0x00E4; pub const SBM_SETSCROLLINFO: UINT = 0x00E9; pub const SBM_GETSCROLLINFO: UINT = 0x00EA; pub const SBM_GETSCROLLBARINFO: UINT = 0x00EB; pub const SIF_RANGE: UINT = 0x0001; pub const SIF_PAGE: UINT = 0x0002; pub const SIF_POS: UINT = 0x0004; pub const SIF_DISABLENOSCROLL: UINT = 0x0008; pub const SIF_TRACKPOS: UINT = 0x0010; pub const SIF_ALL: UINT = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS; STRUCT!{struct SCROLLINFO { cbSize: UINT, fMask: UINT, nMin: c_int, nMax: c_int, nPage: UINT, nPos: c_int, nTrackPos: c_int, }} pub type LPSCROLLINFO = *mut SCROLLINFO; pub type LPCSCROLLINFO = *const SCROLLINFO; extern "system" { pub fn SetScrollInfo( hwnd: HWND, nBar: c_int, lpsi: *const SCROLLINFO, redraw: BOOL, ) -> c_int; pub fn GetScrollInfo( hwnd: HWND, nBar: c_int, lpsi: *mut SCROLLINFO, ) -> BOOL; } pub const MDITILE_VERTICAL: UINT = 0x0000; pub const MDITILE_HORIZONTAL: UINT = 0x0001; pub const MDITILE_SKIPDISABLED: UINT = 0x0002; pub const MDITILE_ZORDER: UINT = 0x0004; //11776 extern "system" { pub fn DefFrameProcA( hwnd: HWND, hwndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn DefFrameProcW( hwnd: HWND, hwndMDIClient: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn DefMDIChildProcA( hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn DefMDIChildProcW( hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM, ) -> LRESULT; pub fn ArrangeIconicWindows( hWnd: HWND, ) -> UINT; pub fn CreateMDIWindowA( lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM, ) -> HWND; pub fn CreateMDIWindowW( lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: c_int, Y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hInstance: HINSTANCE, lParam: LPARAM, ) -> HWND; pub fn CascadeWindows( hwndParent: HWND, wHow: UINT, lpRect: *const RECT, cKids: UINT, lpKids: *const HWND, ) -> WORD; } //12016 extern "system" { pub fn WinHelpA( hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: ULONG_PTR, ) -> BOOL; pub fn WinHelpW( hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: ULONG_PTR, ) -> BOOL; } //12083 pub const SPI_GETBEEP: UINT = 0x0001; pub const SPI_SETBEEP: UINT = 0x0002; pub const SPI_GETMOUSE: UINT = 0x0003; pub const SPI_SETMOUSE: UINT = 0x0004; pub const SPI_GETBORDER: UINT = 0x0005; pub const SPI_SETBORDER: UINT = 0x0006; pub const SPI_GETKEYBOARDSPEED: UINT = 0x000A; pub const SPI_SETKEYBOARDSPEED: UINT = 0x000B; pub const SPI_LANGDRIVER: UINT = 0x000C; pub const SPI_ICONHORIZONTALSPACING: UINT = 0x000D; pub const SPI_GETSCREENSAVETIMEOUT: UINT = 0x000E; pub const SPI_SETSCREENSAVETIMEOUT: UINT = 0x000F; pub const SPI_GETSCREENSAVEACTIVE: UINT = 0x0010; pub const SPI_SETSCREENSAVEACTIVE: UINT = 0x0011; pub const SPI_GETGRIDGRANULARITY: UINT = 0x0012; pub const SPI_SETGRIDGRANULARITY: UINT = 0x0013; pub const SPI_SETDESKWALLPAPER: UINT = 0x0014; pub const SPI_SETDESKPATTERN: UINT = 0x0015; pub const SPI_GETKEYBOARDDELAY: UINT = 0x0016; pub const SPI_SETKEYBOARDDELAY: UINT = 0x0017; pub const SPI_ICONVERTICALSPACING: UINT = 0x0018; pub const SPI_GETICONTITLEWRAP: UINT = 0x0019; pub const SPI_SETICONTITLEWRAP: UINT = 0x001A; pub const SPI_GETMENUDROPALIGNMENT: UINT = 0x001B; pub const SPI_SETMENUDROPALIGNMENT: UINT = 0x001C; pub const SPI_SETDOUBLECLKWIDTH: UINT = 0x001D; pub const SPI_SETDOUBLECLKHEIGHT: UINT = 0x001E; pub const SPI_GETICONTITLELOGFONT: UINT = 0x001F; pub const SPI_SETDOUBLECLICKTIME: UINT = 0x0020; pub const SPI_SETMOUSEBUTTONSWAP: UINT = 0x0021; pub const SPI_SETICONTITLELOGFONT: UINT = 0x0022; pub const SPI_GETFASTTASKSWITCH: UINT = 0x0023; pub const SPI_SETFASTTASKSWITCH: UINT = 0x0024; pub const SPI_SETDRAGFULLWINDOWS: UINT = 0x0025; pub const SPI_GETDRAGFULLWINDOWS: UINT = 0x0026; pub const SPI_GETNONCLIENTMETRICS: UINT = 0x0029; pub const SPI_SETNONCLIENTMETRICS: UINT = 0x002A; pub const SPI_GETMINIMIZEDMETRICS: UINT = 0x002B; pub const SPI_SETMINIMIZEDMETRICS: UINT = 0x002C; pub const SPI_GETICONMETRICS: UINT = 0x002D; pub const SPI_SETICONMETRICS: UINT = 0x002E; pub const SPI_SETWORKAREA: UINT = 0x002F; pub const SPI_GETWORKAREA: UINT = 0x0030; pub const SPI_SETPENWINDOWS: UINT = 0x0031; pub const SPI_GETHIGHCONTRAST: UINT = 0x0042; pub const SPI_SETHIGHCONTRAST: UINT = 0x0043; pub const SPI_GETKEYBOARDPREF: UINT = 0x0044; pub const SPI_SETKEYBOARDPREF: UINT = 0x0045; pub const SPI_GETSCREENREADER: UINT = 0x0046; pub const SPI_SETSCREENREADER: UINT = 0x0047; pub const SPI_GETANIMATION: UINT = 0x0048; pub const SPI_SETANIMATION: UINT = 0x0049; pub const SPI_GETFONTSMOOTHING: UINT = 0x004A; pub const SPI_SETFONTSMOOTHING: UINT = 0x004B; pub const SPI_SETDRAGWIDTH: UINT = 0x004C; pub const SPI_SETDRAGHEIGHT: UINT = 0x004D; pub const SPI_SETHANDHELD: UINT = 0x004E; pub const SPI_GETLOWPOWERTIMEOUT: UINT = 0x004F; pub const SPI_GETPOWEROFFTIMEOUT: UINT = 0x0050; pub const SPI_SETLOWPOWERTIMEOUT: UINT = 0x0051; pub const SPI_SETPOWEROFFTIMEOUT: UINT = 0x0052; pub const SPI_GETLOWPOWERACTIVE: UINT = 0x0053; pub const SPI_GETPOWEROFFACTIVE: UINT = 0x0054; pub const SPI_SETLOWPOWERACTIVE: UINT = 0x0055; pub const SPI_SETPOWEROFFACTIVE: UINT = 0x0056; pub const SPI_SETCURSORS: UINT = 0x0057; pub const SPI_SETICONS: UINT = 0x0058; pub const SPI_GETDEFAULTINPUTLANG: UINT = 0x0059; pub const SPI_SETDEFAULTINPUTLANG: UINT = 0x005A; pub const SPI_SETLANGTOGGLE: UINT = 0x005B; pub const SPI_GETWINDOWSEXTENSION: UINT = 0x005C; pub const SPI_SETMOUSETRAILS: UINT = 0x005D; pub const SPI_GETMOUSETRAILS: UINT = 0x005E; pub const SPI_SETSCREENSAVERRUNNING: UINT = 0x0061; pub const SPI_SCREENSAVERRUNNING: UINT = SPI_SETSCREENSAVERRUNNING; pub const SPI_GETFILTERKEYS: UINT = 0x0032; pub const SPI_SETFILTERKEYS: UINT = 0x0033; pub const SPI_GETTOGGLEKEYS: UINT = 0x0034; pub const SPI_SETTOGGLEKEYS: UINT = 0x0035; pub const SPI_GETMOUSEKEYS: UINT = 0x0036; pub const SPI_SETMOUSEKEYS: UINT = 0x0037; pub const SPI_GETSHOWSOUNDS: UINT = 0x0038; pub const SPI_SETSHOWSOUNDS: UINT = 0x0039; pub const SPI_GETSTICKYKEYS: UINT = 0x003A; pub const SPI_SETSTICKYKEYS: UINT = 0x003B; pub const SPI_GETACCESSTIMEOUT: UINT = 0x003C; pub const SPI_SETACCESSTIMEOUT: UINT = 0x003D; pub const SPI_GETSERIALKEYS: UINT = 0x003E; pub const SPI_SETSERIALKEYS: UINT = 0x003F; pub const SPI_GETSOUNDSENTRY: UINT = 0x0040; pub const SPI_SETSOUNDSENTRY: UINT = 0x0041; pub const SPI_GETSNAPTODEFBUTTON: UINT = 0x005F; pub const SPI_SETSNAPTODEFBUTTON: UINT = 0x0060; pub const SPI_GETMOUSEHOVERWIDTH: UINT = 0x0062; pub const SPI_SETMOUSEHOVERWIDTH: UINT = 0x0063; pub const SPI_GETMOUSEHOVERHEIGHT: UINT = 0x0064; pub const SPI_SETMOUSEHOVERHEIGHT: UINT = 0x0065; pub const SPI_GETMOUSEHOVERTIME: UINT = 0x0066; pub const SPI_SETMOUSEHOVERTIME: UINT = 0x0067; pub const SPI_GETWHEELSCROLLLINES: UINT = 0x0068; pub const SPI_SETWHEELSCROLLLINES: UINT = 0x0069; pub const SPI_GETMENUSHOWDELAY: UINT = 0x006A; pub const SPI_SETMENUSHOWDELAY: UINT = 0x006B; pub const SPI_GETWHEELSCROLLCHARS: UINT = 0x006C; pub const SPI_SETWHEELSCROLLCHARS: UINT = 0x006D; pub const SPI_GETSHOWIMEUI: UINT = 0x006E; pub const SPI_SETSHOWIMEUI: UINT = 0x006F; pub const SPI_GETMOUSESPEED: UINT = 0x0070; pub const SPI_SETMOUSESPEED: UINT = 0x0071; pub const SPI_GETSCREENSAVERRUNNING: UINT = 0x0072; pub const SPI_GETDESKWALLPAPER: UINT = 0x0073; pub const SPI_GETAUDIODESCRIPTION: UINT = 0x0074; pub const SPI_SETAUDIODESCRIPTION: UINT = 0x0075; pub const SPI_GETSCREENSAVESECURE: UINT = 0x0076; pub const SPI_SETSCREENSAVESECURE: UINT = 0x0077; pub const SPI_GETHUNGAPPTIMEOUT: UINT = 0x0078; pub const SPI_SETHUNGAPPTIMEOUT: UINT = 0x0079; pub const SPI_GETWAITTOKILLTIMEOUT: UINT = 0x007A; pub const SPI_SETWAITTOKILLTIMEOUT: UINT = 0x007B; pub const SPI_GETWAITTOKILLSERVICETIMEOUT: UINT = 0x007C; pub const SPI_SETWAITTOKILLSERVICETIMEOUT: UINT = 0x007D; pub const SPI_GETMOUSEDOCKTHRESHOLD: UINT = 0x007E; pub const SPI_SETMOUSEDOCKTHRESHOLD: UINT = 0x007F; pub const SPI_GETPENDOCKTHRESHOLD: UINT = 0x0080; pub const SPI_SETPENDOCKTHRESHOLD: UINT = 0x0081; pub const SPI_GETWINARRANGING: UINT = 0x0082; pub const SPI_SETWINARRANGING: UINT = 0x0083; pub const SPI_GETMOUSEDRAGOUTTHRESHOLD: UINT = 0x0084; pub const SPI_SETMOUSEDRAGOUTTHRESHOLD: UINT = 0x0085; pub const SPI_GETPENDRAGOUTTHRESHOLD: UINT = 0x0086; pub const SPI_SETPENDRAGOUTTHRESHOLD: UINT = 0x0087; pub const SPI_GETMOUSESIDEMOVETHRESHOLD: UINT = 0x0088; pub const SPI_SETMOUSESIDEMOVETHRESHOLD: UINT = 0x0089; pub const SPI_GETPENSIDEMOVETHRESHOLD: UINT = 0x008A; pub const SPI_SETPENSIDEMOVETHRESHOLD: UINT = 0x008B; pub const SPI_GETDRAGFROMMAXIMIZE: UINT = 0x008C; pub const SPI_SETDRAGFROMMAXIMIZE: UINT = 0x008D; pub const SPI_GETSNAPSIZING: UINT = 0x008E; pub const SPI_SETSNAPSIZING: UINT = 0x008F; pub const SPI_GETDOCKMOVING: UINT = 0x0090; pub const SPI_SETDOCKMOVING: UINT = 0x0091; pub const SPI_GETACTIVEWINDOWTRACKING: UINT = 0x1000; pub const SPI_SETACTIVEWINDOWTRACKING: UINT = 0x1001; pub const SPI_GETMENUANIMATION: UINT = 0x1002; pub const SPI_SETMENUANIMATION: UINT = 0x1003; pub const SPI_GETCOMBOBOXANIMATION: UINT = 0x1004; pub const SPI_SETCOMBOBOXANIMATION: UINT = 0x1005; pub const SPI_GETLISTBOXSMOOTHSCROLLING: UINT = 0x1006; pub const SPI_SETLISTBOXSMOOTHSCROLLING: UINT = 0x1007; pub const SPI_GETGRADIENTCAPTIONS: UINT = 0x1008; pub const SPI_SETGRADIENTCAPTIONS: UINT = 0x1009; pub const SPI_GETKEYBOARDCUES: UINT = 0x100A; pub const SPI_SETKEYBOARDCUES: UINT = 0x100B; pub const SPI_GETMENUUNDERLINES: UINT = SPI_GETKEYBOARDCUES; pub const SPI_SETMENUUNDERLINES: UINT = SPI_SETKEYBOARDCUES; pub const SPI_GETACTIVEWNDTRKZORDER: UINT = 0x100C; pub const SPI_SETACTIVEWNDTRKZORDER: UINT = 0x100D; pub const SPI_GETHOTTRACKING: UINT = 0x100E; pub const SPI_SETHOTTRACKING: UINT = 0x100F; pub const SPI_GETMENUFADE: UINT = 0x1012; pub const SPI_SETMENUFADE: UINT = 0x1013; pub const SPI_GETSELECTIONFADE: UINT = 0x1014; pub const SPI_SETSELECTIONFADE: UINT = 0x1015; pub const SPI_GETTOOLTIPANIMATION: UINT = 0x1016; pub const SPI_SETTOOLTIPANIMATION: UINT = 0x1017; pub const SPI_GETTOOLTIPFADE: UINT = 0x1018; pub const SPI_SETTOOLTIPFADE: UINT = 0x1019; pub const SPI_GETCURSORSHADOW: UINT = 0x101A; pub const SPI_SETCURSORSHADOW: UINT = 0x101B; pub const SPI_GETMOUSESONAR: UINT = 0x101C; pub const SPI_SETMOUSESONAR: UINT = 0x101D; pub const SPI_GETMOUSECLICKLOCK: UINT = 0x101E; pub const SPI_SETMOUSECLICKLOCK: UINT = 0x101F; pub const SPI_GETMOUSEVANISH: UINT = 0x1020; pub const SPI_SETMOUSEVANISH: UINT = 0x1021; pub const SPI_GETFLATMENU: UINT = 0x1022; pub const SPI_SETFLATMENU: UINT = 0x1023; pub const SPI_GETDROPSHADOW: UINT = 0x1024; pub const SPI_SETDROPSHADOW: UINT = 0x1025; pub const SPI_GETBLOCKSENDINPUTRESETS: UINT = 0x1026; pub const SPI_SETBLOCKSENDINPUTRESETS: UINT = 0x1027; pub const SPI_GETUIEFFECTS: UINT = 0x103E; pub const SPI_SETUIEFFECTS: UINT = 0x103F; pub const SPI_GETDISABLEOVERLAPPEDCONTENT: UINT = 0x1040; pub const SPI_SETDISABLEOVERLAPPEDCONTENT: UINT = 0x1041; pub const SPI_GETCLIENTAREAANIMATION: UINT = 0x1042; pub const SPI_SETCLIENTAREAANIMATION: UINT = 0x1043; pub const SPI_GETCLEARTYPE: UINT = 0x1048; pub const SPI_SETCLEARTYPE: UINT = 0x1049; pub const SPI_GETSPEECHRECOGNITION: UINT = 0x104A; pub const SPI_SETSPEECHRECOGNITION: UINT = 0x104B; pub const SPI_GETFOREGROUNDLOCKTIMEOUT: UINT = 0x2000; pub const SPI_SETFOREGROUNDLOCKTIMEOUT: UINT = 0x2001; pub const SPI_GETACTIVEWNDTRKTIMEOUT: UINT = 0x2002; pub const SPI_SETACTIVEWNDTRKTIMEOUT: UINT = 0x2003; pub const SPI_GETFOREGROUNDFLASHCOUNT: UINT = 0x2004; pub const SPI_SETFOREGROUNDFLASHCOUNT: UINT = 0x2005; pub const SPI_GETCARETWIDTH: UINT = 0x2006; pub const SPI_SETCARETWIDTH: UINT = 0x2007; pub const SPI_GETMOUSECLICKLOCKTIME: UINT = 0x2008; pub const SPI_SETMOUSECLICKLOCKTIME: UINT = 0x2009; pub const SPI_GETFONTSMOOTHINGTYPE: UINT = 0x200A; pub const SPI_SETFONTSMOOTHINGTYPE: UINT = 0x200B; pub const FE_FONTSMOOTHINGSTANDARD: UINT = 0x0001; pub const FE_FONTSMOOTHINGCLEARTYPE: UINT = 0x0002; pub const SPI_GETFONTSMOOTHINGCONTRAST: UINT = 0x200C; pub const SPI_SETFONTSMOOTHINGCONTRAST: UINT = 0x200D; pub const SPI_GETFOCUSBORDERWIDTH: UINT = 0x200E; pub const SPI_SETFOCUSBORDERWIDTH: UINT = 0x200F; pub const SPI_GETFOCUSBORDERHEIGHT: UINT = 0x2010; pub const SPI_SETFOCUSBORDERHEIGHT: UINT = 0x2011; pub const SPI_GETFONTSMOOTHINGORIENTATION: UINT = 0x2012; pub const SPI_SETFONTSMOOTHINGORIENTATION: UINT = 0x2013; pub const FE_FONTSMOOTHINGORIENTATIONBGR: UINT = 0x0000; pub const FE_FONTSMOOTHINGORIENTATIONRGB: UINT = 0x0001; pub const SPI_GETMINIMUMHITRADIUS: UINT = 0x2014; pub const SPI_SETMINIMUMHITRADIUS: UINT = 0x2015; pub const SPI_GETMESSAGEDURATION: UINT = 0x2016; pub const SPI_SETMESSAGEDURATION: UINT = 0x2017; //12472 pub const SPIF_UPDATEINIFILE: UINT = 0x0001; pub const SPIF_SENDWININICHANGE: UINT = 0x0002; pub const SPIF_SENDCHANGE: UINT = SPIF_SENDWININICHANGE; //12484 STRUCT!{struct NONCLIENTMETRICSA { cbSize: UINT, iBorderWidth: c_int, iScrollWidth: c_int, iScrollHeight: c_int, iCaptionWidth: c_int, iCaptionHeight: c_int, lfCaptionFont: LOGFONTA, iSmCaptionWidth: c_int, iSmCaptionHeight: c_int, lfSmCaptionFont: LOGFONTA, iMenuWidth: c_int, iMenuHeight: c_int, lfMenuFont: LOGFONTA, lfStatusFont: LOGFONTA, lfMessageFont: LOGFONTA, iPaddedBorderWidth: c_int, }} pub type LPNONCLIENTMETRICSA = *mut NONCLIENTMETRICSA; STRUCT!{struct NONCLIENTMETRICSW { cbSize: UINT, iBorderWidth: c_int, iScrollWidth: c_int, iScrollHeight: c_int, iCaptionWidth: c_int, iCaptionHeight: c_int, lfCaptionFont: LOGFONTW, iSmCaptionWidth: c_int, iSmCaptionHeight: c_int, lfSmCaptionFont: LOGFONTW, iMenuWidth: c_int, iMenuHeight: c_int, lfMenuFont: LOGFONTW, lfStatusFont: LOGFONTW, lfMessageFont: LOGFONTW, iPaddedBorderWidth: c_int, }} pub type LPNONCLIENTMETRICSW = *mut NONCLIENTMETRICSW; //12598 STRUCT!{struct ANIMATIONINFO { cbSize: UINT, iMinAnimate: c_int, }} pub type LPANIMATIONINFO = *mut ANIMATIONINFO; //12672 pub const CDS_UPDATEREGISTRY: DWORD = 0x00000001; pub const CDS_TEST: DWORD = 0x00000002; pub const CDS_FULLSCREEN: DWORD = 0x00000004; pub const CDS_GLOBAL: DWORD = 0x00000008; pub const CDS_SET_PRIMARY: DWORD = 0x00000010; pub const CDS_VIDEOPARAMETERS: DWORD = 0x00000020; pub const CDS_ENABLE_UNSAFE_MODES: DWORD = 0x00000100; pub const CDS_DISABLE_UNSAFE_MODES: DWORD = 0x00000200; pub const CDS_RESET: DWORD = 0x40000000; pub const CDS_RESET_EX: DWORD = 0x20000000; pub const CDS_NORESET: DWORD = 0x10000000; pub const DISP_CHANGE_SUCCESSFUL: LONG = 0; pub const DISP_CHANGE_RESTART: LONG = 1; pub const DISP_CHANGE_FAILED: LONG = -1; pub const DISP_CHANGE_BADMODE: LONG = -2; pub const DISP_CHANGE_NOTUPDATED: LONG = -3; pub const DISP_CHANGE_BADFLAGS: LONG = -4; pub const DISP_CHANGE_BADPARAM: LONG = -5; pub const DISP_CHANGE_BADDUALVIEW: LONG = -6; extern "system" { pub fn ChangeDisplaySettingsA( lpDevMode: *mut DEVMODEA, dwFlags: DWORD, ) -> LONG; pub fn ChangeDisplaySettingsW( lpDevMode: *mut DEVMODEW, dwFlags: DWORD, ) -> LONG; pub fn ChangeDisplaySettingsExA( lpszDeviceName: LPCSTR, lpDevMode: *mut DEVMODEA, hwnd: HWND, dwFlags: DWORD, lParam: LPVOID, ) -> LONG; pub fn ChangeDisplaySettingsExW( lpszDeviceName: LPCWSTR, lpDevMode: *mut DEVMODEW, hwnd: HWND, dwFlags: DWORD, lParam: LPVOID, ) -> LONG; } pub const ENUM_CURRENT_SETTINGS: DWORD = 0xFFFFFFFF; pub const ENUM_REGISTRY_SETTINGS: DWORD = 0xFFFFFFFE; extern "system" { pub fn EnumDisplaySettingsA( lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEA, ) -> BOOL; pub fn EnumDisplaySettingsW( lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEW, ) -> BOOL; pub fn EnumDisplaySettingsExA( lpszDeviceName: LPCSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEA, dwFlags: DWORD, ) -> BOOL; pub fn EnumDisplaySettingsExW( lpszDeviceName: LPCWSTR, iModeNum: DWORD, lpDevMode: *mut DEVMODEW, dwFlags: DWORD, ) -> BOOL; } pub const EDS_RAWMODE: DWORD = 0x00000002; pub const EDS_ROTATEDMODE: DWORD = 0x00000004; extern "system" { pub fn EnumDisplayDevicesA( lpDevice: LPCSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEA, dwFlags: DWORD, ) -> BOOL; pub fn EnumDisplayDevicesW( lpDevice: LPCWSTR, iDevNum: DWORD, lpDisplayDevice: PDISPLAY_DEVICEW, dwFlags: DWORD, ) -> BOOL; } pub const EDD_GET_DEVICE_INTERFACE_NAME: DWORD = 0x00000001; extern "system" { pub fn SystemParametersInfoA( uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT, ) -> BOOL; pub fn SystemParametersInfoW( uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT, ) -> BOOL; pub fn SystemParametersInfoForDpi( uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT, dpi: UINT, ) -> BOOL; } //13191 extern "system" { pub fn SetLastErrorEx( dwErrCode: DWORD, dwType: DWORD, ); pub fn InternalGetWindowText( hWnd: HWND, pString: LPWSTR, cchMaxCount: c_int, ) -> c_int; pub fn EndTask( hWnd: HWND, fShutDown: BOOL, fForce: BOOL, ) -> BOOL; pub fn CancelShutdown() -> BOOL; } pub const MONITOR_DEFAULTTONULL: DWORD = 0x00000000; pub const MONITOR_DEFAULTTOPRIMARY: DWORD = 0x00000001; pub const MONITOR_DEFAULTTONEAREST: DWORD = 0x00000002; extern "system" { pub fn MonitorFromPoint( pt: POINT, dwFlags: DWORD, ) -> HMONITOR; pub fn MonitorFromRect( lprc: LPCRECT, dwFlags: DWORD, ) -> HMONITOR; pub fn MonitorFromWindow( hwnd: HWND, dwFlags: DWORD, ) -> HMONITOR; } pub const MONITORINFOF_PRIMARY: DWORD = 1; pub const CCHDEVICENAME: usize = 32; STRUCT!{struct MONITORINFO { cbSize: DWORD, rcMonitor: RECT, rcWork: RECT, dwFlags: DWORD, }} pub type LPMONITORINFO = *mut MONITORINFO; STRUCT!{struct MONITORINFOEXA { cbSize: DWORD, rcMonitor: RECT, rcWork: RECT, dwFlags: DWORD, szDevice: [CHAR; CCHDEVICENAME], }} pub type LPMONITORINFOEXA = *mut MONITORINFOEXA; STRUCT!{struct MONITORINFOEXW { cbSize: DWORD, rcMonitor: RECT, rcWork: RECT, dwFlags: DWORD, szDevice: [WCHAR; CCHDEVICENAME], }} pub type LPMONITORINFOEXW = *mut MONITORINFOEXW; extern "system" { pub fn GetMonitorInfoA( hMonitor: HMONITOR, lpmi: LPMONITORINFO, ) -> BOOL; pub fn GetMonitorInfoW( hMonitor: HMONITOR, lpmi: LPMONITORINFO, ) -> BOOL; } FN!{stdcall MONITORENUMPROC( HMONITOR, HDC, LPRECT, LPARAM, ) -> BOOL} extern "system" { pub fn EnumDisplayMonitors( hdc: HDC, lprcClip: LPCRECT, lpfnEnum: MONITORENUMPROC, dwData: LPARAM, ) -> BOOL; pub fn NotifyWinEvent( event: DWORD, hwnd: HWND, idObject: LONG, idChild: LONG, ); } FN!{stdcall WINEVENTPROC( HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD, ) -> ()} extern "system" { pub fn SetWinEventHook( eventMin: DWORD, eventMax: DWORD, hmodWinEventProc: HMODULE, pfnWinEventProc: WINEVENTPROC, idProcess: DWORD, idThread: DWORD, dwFlags: DWORD, ) -> HWINEVENTHOOK; pub fn IsWinEventHookInstalled( event: DWORD, ) -> BOOL; } pub const WINEVENT_OUTOFCONTEXT: UINT = 0x0000; pub const WINEVENT_SKIPOWNTHREAD: UINT = 0x0001; pub const WINEVENT_SKIPOWNPROCESS: UINT = 0x0002; pub const WINEVENT_INCONTEXT: UINT = 0x0004; extern "system" { pub fn UnhookWinEvent( hWinEventHook: HWINEVENTHOOK, ) -> BOOL; } pub const CHILDID_SELF: LONG = 0; pub const INDEXID_OBJECT: LONG = 0; pub const INDEXID_CONTAINER: LONG = 0; pub const OBJID_WINDOW: LONG = 0x0000; pub const OBJID_SYSMENU: LONG = 0xFFFFFFFF; pub const OBJID_TITLEBAR: LONG = 0xFFFFFFFE; pub const OBJID_MENU: LONG = 0xFFFFFFFD; pub const OBJID_CLIENT: LONG = 0xFFFFFFFC; pub const OBJID_VSCROLL: LONG = 0xFFFFFFFB; pub const OBJID_HSCROLL: LONG = 0xFFFFFFFA; pub const OBJID_SIZEGRIP: LONG = 0xFFFFFFF9; pub const OBJID_CARET: LONG = 0xFFFFFFF8; pub const OBJID_CURSOR: LONG = 0xFFFFFFF7; pub const OBJID_ALERT: LONG = 0xFFFFFFF6; pub const OBJID_SOUND: LONG = 0xFFFFFFF5; pub const OBJID_QUERYCLASSNAMEIDX: LONG = 0xFFFFFFF4; pub const OBJID_NATIVEOM: LONG = 0xFFFFFFF0; pub const EVENT_MIN: UINT = 0x0001; pub const EVENT_MAX: UINT = 0x7FFFFFFF; pub const EVENT_SYSTEM_SOUND: UINT = 0x0001; pub const EVENT_SYSTEM_ALERT: UINT = 0x0002; pub const EVENT_SYSTEM_FOREGROUND: UINT = 0x0003; pub const EVENT_SYSTEM_MENUSTART: UINT = 0x0004; pub const EVENT_SYSTEM_MENUEND: UINT = 0x0005; pub const EVENT_SYSTEM_MENUPOPUPSTART: UINT = 0x0006; pub const EVENT_SYSTEM_MENUPOPUPEND: UINT = 0x0007; pub const EVENT_SYSTEM_CAPTURESTART: UINT = 0x0008; pub const EVENT_SYSTEM_CAPTUREEND: UINT = 0x0009; pub const EVENT_SYSTEM_MOVESIZESTART: UINT = 0x000A; pub const EVENT_SYSTEM_MOVESIZEEND: UINT = 0x000B; pub const EVENT_SYSTEM_CONTEXTHELPSTART: UINT = 0x000C; pub const EVENT_SYSTEM_CONTEXTHELPEND: UINT = 0x000D; pub const EVENT_SYSTEM_DRAGDROPSTART: UINT = 0x000E; pub const EVENT_SYSTEM_DRAGDROPEND: UINT = 0x000F; pub const EVENT_SYSTEM_DIALOGSTART: UINT = 0x0010; pub const EVENT_SYSTEM_DIALOGEND: UINT = 0x0011; pub const EVENT_SYSTEM_SCROLLINGSTART: UINT = 0x0012; pub const EVENT_SYSTEM_SCROLLINGEND: UINT = 0x0013; pub const EVENT_SYSTEM_SWITCHSTART: UINT = 0x0014; pub const EVENT_SYSTEM_SWITCHEND: UINT = 0x0015; pub const EVENT_SYSTEM_MINIMIZESTART: UINT = 0x0016; pub const EVENT_SYSTEM_MINIMIZEEND: UINT = 0x0017; pub const EVENT_SYSTEM_DESKTOPSWITCH: UINT = 0x0020; pub const EVENT_SYSTEM_SWITCHER_APPGRABBED: UINT = 0x0024; pub const EVENT_SYSTEM_SWITCHER_APPOVERTARGET: UINT = 0x0025; pub const EVENT_SYSTEM_SWITCHER_APPDROPPED: UINT = 0x0026; pub const EVENT_SYSTEM_SWITCHER_CANCELLED: UINT = 0x0027; pub const EVENT_SYSTEM_IME_KEY_NOTIFICATION: UINT = 0x0029; pub const EVENT_SYSTEM_END: UINT = 0x00FF; pub const EVENT_OEM_DEFINED_START: UINT = 0x0101; pub const EVENT_OEM_DEFINED_END: UINT = 0x01FF; pub const EVENT_UIA_EVENTID_START: UINT = 0x4E00; pub const EVENT_UIA_EVENTID_END: UINT = 0x4EFF; pub const EVENT_UIA_PROPID_START: UINT = 0x7500; pub const EVENT_UIA_PROPID_END: UINT = 0x75FF; pub const EVENT_CONSOLE_CARET: UINT = 0x4001; pub const EVENT_CONSOLE_UPDATE_REGION: UINT = 0x4002; pub const EVENT_CONSOLE_UPDATE_SIMPLE: UINT = 0x4003; pub const EVENT_CONSOLE_UPDATE_SCROLL: UINT = 0x4004; pub const EVENT_CONSOLE_LAYOUT: UINT = 0x4005; pub const EVENT_CONSOLE_START_APPLICATION: UINT = 0x4006; pub const EVENT_CONSOLE_END_APPLICATION: UINT = 0x4007; #[cfg(target_pointer_width = "64")] pub const CONSOLE_APPLICATION_16BIT: LONG = 0x0000; #[cfg(target_pointer_width = "32")] pub const CONSOLE_APPLICATION_16BIT: LONG = 0x0001; pub const CONSOLE_CARET_SELECTION: LONG = 0x0001; pub const CONSOLE_CARET_VISIBLE: LONG = 0x0002; pub const EVENT_CONSOLE_END: UINT = 0x40FF; pub const EVENT_OBJECT_CREATE: UINT = 0x8000; pub const EVENT_OBJECT_DESTROY: UINT = 0x8001; pub const EVENT_OBJECT_SHOW: UINT = 0x8002; pub const EVENT_OBJECT_HIDE: UINT = 0x8003; pub const EVENT_OBJECT_REORDER: UINT = 0x8004; pub const EVENT_OBJECT_FOCUS: UINT = 0x8005; pub const EVENT_OBJECT_SELECTION: UINT = 0x8006; pub const EVENT_OBJECT_SELECTIONADD: UINT = 0x8007; pub const EVENT_OBJECT_SELECTIONREMOVE: UINT = 0x8008; pub const EVENT_OBJECT_SELECTIONWITHIN: UINT = 0x8009; pub const EVENT_OBJECT_STATECHANGE: UINT = 0x800A; pub const EVENT_OBJECT_LOCATIONCHANGE: UINT = 0x800B; pub const EVENT_OBJECT_NAMECHANGE: UINT = 0x800C; pub const EVENT_OBJECT_DESCRIPTIONCHANGE: UINT = 0x800D; pub const EVENT_OBJECT_VALUECHANGE: UINT = 0x800E; pub const EVENT_OBJECT_PARENTCHANGE: UINT = 0x800F; pub const EVENT_OBJECT_HELPCHANGE: UINT = 0x8010; pub const EVENT_OBJECT_DEFACTIONCHANGE: UINT = 0x8011; pub const EVENT_OBJECT_ACCELERATORCHANGE: UINT = 0x8012; pub const EVENT_OBJECT_INVOKED: UINT = 0x8013; pub const EVENT_OBJECT_TEXTSELECTIONCHANGED: UINT = 0x8014; pub const EVENT_OBJECT_CONTENTSCROLLED: UINT = 0x8015; pub const EVENT_SYSTEM_ARRANGMENTPREVIEW: UINT = 0x8016; pub const EVENT_OBJECT_CLOAKED: UINT = 0x8017; pub const EVENT_OBJECT_UNCLOAKED: UINT = 0x8018; pub const EVENT_OBJECT_LIVEREGIONCHANGED: UINT = 0x8019; pub const EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED: UINT = 0x8020; pub const EVENT_OBJECT_DRAGSTART: UINT = 0x8021; pub const EVENT_OBJECT_DRAGCANCEL: UINT = 0x8022; pub const EVENT_OBJECT_DRAGCOMPLETE: UINT = 0x8023; pub const EVENT_OBJECT_DRAGENTER: UINT = 0x8024; pub const EVENT_OBJECT_DRAGLEAVE: UINT = 0x8025; pub const EVENT_OBJECT_DRAGDROPPED: UINT = 0x8026; pub const EVENT_OBJECT_IME_SHOW: UINT = 0x8027; pub const EVENT_OBJECT_IME_HIDE: UINT = 0x8028; pub const EVENT_OBJECT_IME_CHANGE: UINT = 0x8029; pub const EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED: UINT = 0x8030; pub const EVENT_OBJECT_END: UINT = 0x80FF; pub const EVENT_AIA_START: UINT = 0xA000; pub const EVENT_AIA_END: UINT = 0xAFFF; pub const ALERT_SYSTEM_INFORMATIONAL: LONG = 1; pub const ALERT_SYSTEM_WARNING: LONG = 2; pub const ALERT_SYSTEM_ERROR: LONG = 3; pub const ALERT_SYSTEM_QUERY: LONG = 4; pub const ALERT_SYSTEM_CRITICAL: LONG = 5; pub const CALERT_SYSTEM: LONG = 6; STRUCT!{struct GUITHREADINFO { cbSize: DWORD, flags: DWORD, hwndActive: HWND, hwndFocus: HWND, hwndCapture: HWND, hwndMenuOwner: HWND, hwndMoveSize: HWND, hwndCaret: HWND, rcCaret: RECT, }} pub type PGUITHREADINFO = *mut GUITHREADINFO; pub type LPGUITHREADINFO = *mut GUITHREADINFO; pub const GUI_CARETBLINKING: DWORD = 0x00000001; pub const GUI_INMOVESIZE: DWORD = 0x00000002; pub const GUI_INMENUMODE: DWORD = 0x00000004; pub const GUI_SYSTEMMENUMODE: DWORD = 0x00000008; pub const GUI_POPUPMENUMODE: DWORD = 0x00000010; #[cfg(target_arch = "x86_64")] pub const GUI_16BITTASK: DWORD = 0x00000000; #[cfg(target_arch = "x86")] pub const GUI_16BITTASK: DWORD = 0x00000020; extern "system" { pub fn GetGUIThreadInfo( idThread: DWORD, pgui: PGUITHREADINFO, ) -> BOOL; pub fn BlockInput( fBlockIt: BOOL, ) -> BOOL; } pub const USER_DEFAULT_SCREEN_DPI: LONG = 96; extern "system" { pub fn SetProcessDPIAware() -> BOOL; pub fn IsProcessDPIAware() -> BOOL; pub fn SetThreadDpiAwarenessContext( dpiContext: DPI_AWARENESS_CONTEXT, ) -> DPI_AWARENESS_CONTEXT; pub fn GetThreadDpiAwarenessContext() -> DPI_AWARENESS_CONTEXT; pub fn GetWindowDpiAwarenessContext( hwnd: HWND, ) -> DPI_AWARENESS_CONTEXT; pub fn GetAwarenessFromDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> DPI_AWARENESS; pub fn GetDpiFromDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> UINT; pub fn AreDpiAwarenessContextsEqual( dpiContextA: DPI_AWARENESS_CONTEXT, dpiContextB: DPI_AWARENESS_CONTEXT, ) -> BOOL; pub fn IsValidDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> BOOL; pub fn GetDpiForWindow( hwnd: HWND, ) -> UINT; pub fn GetDpiForSystem() -> UINT; pub fn GetSystemDpiForProcess( hProcess: HANDLE, ) -> UINT; pub fn EnableNonClientDpiScaling( hwnd: HWND, ) -> BOOL; pub fn SetProcessDpiAwarenessContext( value: DPI_AWARENESS_CONTEXT, ) -> BOOL; pub fn SetThreadDpiHostingBehavior( value: DPI_HOSTING_BEHAVIOR, ) -> DPI_HOSTING_BEHAVIOR; pub fn GetThreadDpiHostingBehavior() -> DPI_HOSTING_BEHAVIOR; pub fn GetWindowDpiHostingBehavior( hwnd: HWND, ) -> DPI_HOSTING_BEHAVIOR; pub fn GetWindowModuleFileNameA( hWnd: HWND, lpszFileName: LPCSTR, cchFileNameMax: UINT, ) -> UINT; pub fn GetWindowModuleFileNameW( hWnd: HWND, lpszFileName: LPWSTR, cchFileNameMax: UINT, ) -> UINT; } pub const STATE_SYSTEM_UNAVAILABLE: DWORD = 0x00000001; pub const STATE_SYSTEM_SELECTED: DWORD = 0x00000002; pub const STATE_SYSTEM_FOCUSED: DWORD = 0x00000004; pub const STATE_SYSTEM_PRESSED: DWORD = 0x00000008; pub const STATE_SYSTEM_CHECKED: DWORD = 0x00000010; pub const STATE_SYSTEM_MIXED: DWORD = 0x00000020; pub const STATE_SYSTEM_INDETERMINATE: DWORD = STATE_SYSTEM_MIXED; pub const STATE_SYSTEM_READONLY: DWORD = 0x00000040; pub const STATE_SYSTEM_HOTTRACKED: DWORD = 0x00000080; pub const STATE_SYSTEM_DEFAULT: DWORD = 0x00000100; pub const STATE_SYSTEM_EXPANDED: DWORD = 0x00000200; pub const STATE_SYSTEM_COLLAPSED: DWORD = 0x00000400; pub const STATE_SYSTEM_BUSY: DWORD = 0x00000800; pub const STATE_SYSTEM_FLOATING: DWORD = 0x00001000; pub const STATE_SYSTEM_MARQUEED: DWORD = 0x00002000; pub const STATE_SYSTEM_ANIMATED: DWORD = 0x00004000; pub const STATE_SYSTEM_INVISIBLE: DWORD = 0x00008000; pub const STATE_SYSTEM_OFFSCREEN: DWORD = 0x00010000; pub const STATE_SYSTEM_SIZEABLE: DWORD = 0x00020000; pub const STATE_SYSTEM_MOVEABLE: DWORD = 0x00040000; pub const STATE_SYSTEM_SELFVOICING: DWORD = 0x00080000; pub const STATE_SYSTEM_FOCUSABLE: DWORD = 0x00100000; pub const STATE_SYSTEM_SELECTABLE: DWORD = 0x00200000; pub const STATE_SYSTEM_LINKED: DWORD = 0x00400000; pub const STATE_SYSTEM_TRAVERSED: DWORD = 0x00800000; pub const STATE_SYSTEM_MULTISELECTABLE: DWORD = 0x01000000; pub const STATE_SYSTEM_EXTSELECTABLE: DWORD = 0x02000000; pub const STATE_SYSTEM_ALERT_LOW: DWORD = 0x04000000; pub const STATE_SYSTEM_ALERT_MEDIUM: DWORD = 0x08000000; pub const STATE_SYSTEM_ALERT_HIGH: DWORD = 0x10000000; pub const STATE_SYSTEM_PROTECTED: DWORD = 0x20000000; pub const STATE_SYSTEM_VALID: DWORD = 0x3fffffff; pub const CCHILDREN_TITLEBAR: usize = 5; pub const CCHILDREN_SCROLLBAR: usize = 5; STRUCT!{struct CURSORINFO { cbSize: DWORD, flags: DWORD, hCursor: HCURSOR, ptScreenPos: POINT, }} pub type PCURSORINFO = *mut CURSORINFO; pub type LPCURSORINFO = *mut CURSORINFO; pub const CURSOR_SHOWING: DWORD = 0x00000001; pub const CURSOR_SUPPRESSED: DWORD = 0x00000002; extern "system" { pub fn GetCursorInfo( pci: PCURSORINFO, ) -> BOOL; } STRUCT!{struct WINDOWINFO { cbSize: DWORD, rcWindow: RECT, rcClient: RECT, dwStyle: DWORD, dwExStyle: DWORD, dwWindowStatus: DWORD, cxWindowBorders: UINT, cyWindowBorders: UINT, atomWindowType: ATOM, wCreatorVersion: WORD, }} pub type PWINDOWINFO = *mut WINDOWINFO; pub type LPWINDOWINFO = *mut WINDOWINFO; pub const WS_ACTIVECAPTION: DWORD = 0x0001; extern "system" { pub fn GetWindowInfo( hwnd: HWND, pwi: PWINDOWINFO, ) -> BOOL; } STRUCT!{struct TITLEBARINFO { cbSize: DWORD, rcTitleBar: RECT, rgstate: [DWORD; CCHILDREN_TITLEBAR + 1], }} pub type PTITLEBARINFO = *mut TITLEBARINFO; pub type LPTITLEBARINFO = *mut TITLEBARINFO; extern "system" { pub fn GetTitleBarInfo( hwnd: HWND, pti: PTITLEBARINFO, ) -> BOOL; } STRUCT!{struct TITLEBARINFOEX { cbSize: DWORD, rcTitleBar: RECT, rgstate: [DWORD; CCHILDREN_TITLEBAR + 1], rgrect: [RECT; CCHILDREN_TITLEBAR + 1], }} pub type PTITLEBARINFOEX = *mut TITLEBARINFOEX; pub type LPTITLEBARINFOEX = *mut TITLEBARINFOEX; STRUCT!{struct MENUBARINFO { cbSize: DWORD, rcBar: RECT, hMenu: HMENU, hwndMenu: HWND, BitFields: BOOL, }} BITFIELD!{MENUBARINFO BitFields: BOOL [ fBarFocused set_fBarFocused[0..1], fFocused set_fFocused[1..2], ]} pub type PMENUBARINFO = *mut MENUBARINFO; pub type LPMENUBARINFO = *mut MENUBARINFO; extern "system" { pub fn GetMenuBarInfo( hwnd: HWND, idObject: LONG, idItem: LONG, pmbi: PMENUBARINFO, ) -> BOOL; } STRUCT!{struct SCROLLBARINFO { cbSize: DWORD, rcScrollBar: RECT, dxyLineButton: c_int, xyThumbTop: c_int, xyThumbBottom: c_int, reserved: c_int, rgstate: [DWORD; CCHILDREN_SCROLLBAR + 1], }} pub type PSCROLLBARINFO = *mut SCROLLBARINFO; pub type LPSCROLLBARINFO = *mut SCROLLBARINFO; extern "system" { pub fn GetScrollBarInfo( hwnd: HWND, idObject: LONG, psbi: PSCROLLBARINFO, ) -> BOOL; } STRUCT!{struct COMBOBOXINFO { cbSize: DWORD, rcItem: RECT, rcButton: RECT, stateButton: DWORD, hwndCombo: HWND, hwndItem: HWND, hwndList: HWND, }} pub type PCOMBOBOXINFO = *mut COMBOBOXINFO; pub type LPCOMBOBOXINFO = *mut COMBOBOXINFO; extern "system" { pub fn GetComboBoxInfo( hwndCombo: HWND, pcbi: PCOMBOBOXINFO, ) -> BOOL; } pub const GA_PARENT: UINT = 1; pub const GA_ROOT: UINT = 2; pub const GA_ROOTOWNER: UINT = 3; extern "system" { pub fn GetAncestor( hWnd: HWND, gaFlags: UINT, ) -> HWND; pub fn RealChildWindowFromPoint( hwndParent: HWND, ptParentClientCoords: POINT, ) -> HWND; pub fn RealGetWindowClassA( hwnd: HWND, ptszClassName: LPSTR, cchClassNameMax: UINT, ) -> UINT; pub fn RealGetWindowClassW( hwnd: HWND, ptszClassName: LPWSTR, cchClassNameMax: UINT, ) -> UINT; } STRUCT!{struct ALTTABINFO { cbSize: DWORD, cItems: c_int, cColumns: c_int, cRows: c_int, iColFocus: c_int, iRowFocus: c_int, cxItem: c_int, cyItem: c_int, ptStart: POINT, }} pub type PALTTABINFO = *mut ALTTABINFO; pub type LPALTTABINFO = *mut ALTTABINFO; extern "system" { pub fn GetAltTabInfoA( hwnd: HWND, iItem: c_int, pati: PALTTABINFO, pszItemText: LPSTR, cchItemText: UINT, ) -> BOOL; pub fn GetAltTabInfoW( hwnd: HWND, iItem: c_int, pati: PALTTABINFO, pszItemText: LPWSTR, cchItemText: UINT, ) -> BOOL; pub fn GetListBoxInfo( hwnd: HWND, ) -> DWORD; pub fn LockWorkStation() -> BOOL; pub fn UserHandleGrantAccess( hUserHandle: HANDLE, hJob: HANDLE, bGrant: BOOL, ) -> BOOL; } DECLARE_HANDLE!{HRAWINPUT, HRAWINPUT__} #[inline] pub fn GET_RAWINPUT_CODE_WPARAM(wParam: WPARAM) -> WPARAM { wParam & 0xff } pub const RIM_INPUT: WPARAM = 0; pub const RIM_INPUTSINK: WPARAM = 1; STRUCT!{struct RAWINPUTHEADER { dwType: DWORD, dwSize: DWORD, hDevice: HANDLE, wParam: WPARAM, }} pub type PRAWINPUTHEADER = *mut RAWINPUTHEADER; pub type LPRAWINPUTHEADER = *mut RAWINPUTHEADER; pub const RIM_TYPEMOUSE: DWORD = 0; pub const RIM_TYPEKEYBOARD: DWORD = 1; pub const RIM_TYPEHID: DWORD = 2; STRUCT!{struct RAWMOUSE { usFlags: USHORT, memory_padding: USHORT, // 16bit Padding for 32bit align in following union usButtonFlags: USHORT, usButtonData: USHORT, ulRawButtons: ULONG, lLastX: LONG, lLastY: LONG, ulExtraInformation: ULONG, }} pub type PRAWMOUSE = *mut RAWMOUSE; pub type LPRAWMOUSE = *mut RAWMOUSE; pub const RI_MOUSE_LEFT_BUTTON_DOWN: USHORT = 0x0001; pub const RI_MOUSE_LEFT_BUTTON_UP: USHORT = 0x0002; pub const RI_MOUSE_RIGHT_BUTTON_DOWN: USHORT = 0x0004; pub const RI_MOUSE_RIGHT_BUTTON_UP: USHORT = 0x0008; pub const RI_MOUSE_MIDDLE_BUTTON_DOWN: USHORT = 0x0010; pub const RI_MOUSE_MIDDLE_BUTTON_UP: USHORT = 0x0020; pub const RI_MOUSE_BUTTON_1_DOWN: USHORT = RI_MOUSE_LEFT_BUTTON_DOWN; pub const RI_MOUSE_BUTTON_1_UP: USHORT = RI_MOUSE_LEFT_BUTTON_UP; pub const RI_MOUSE_BUTTON_2_DOWN: USHORT = RI_MOUSE_RIGHT_BUTTON_DOWN; pub const RI_MOUSE_BUTTON_2_UP: USHORT = RI_MOUSE_RIGHT_BUTTON_UP; pub const RI_MOUSE_BUTTON_3_DOWN: USHORT = RI_MOUSE_MIDDLE_BUTTON_DOWN; pub const RI_MOUSE_BUTTON_3_UP: USHORT = RI_MOUSE_MIDDLE_BUTTON_UP; pub const RI_MOUSE_BUTTON_4_DOWN: USHORT = 0x0040; pub const RI_MOUSE_BUTTON_4_UP: USHORT = 0x0080; pub const RI_MOUSE_BUTTON_5_DOWN: USHORT = 0x0100; pub const RI_MOUSE_BUTTON_5_UP: USHORT = 0x0200; pub const RI_MOUSE_WHEEL: USHORT = 0x0400; pub const MOUSE_MOVE_RELATIVE: USHORT = 0; pub const MOUSE_MOVE_ABSOLUTE: USHORT = 1; pub const MOUSE_VIRTUAL_DESKTOP: USHORT = 0x02; pub const MOUSE_ATTRIBUTES_CHANGED: USHORT = 0x04; pub const MOUSE_MOVE_NOCOALESCE: USHORT = 0x08; STRUCT!{struct RAWKEYBOARD { MakeCode: USHORT, Flags: USHORT, Reserved: USHORT, VKey: USHORT, Message: UINT, ExtraInformation: ULONG, }} pub type PRAWKEYBOARD = *mut RAWKEYBOARD; pub type LPRAWKEYBOARD = *mut RAWKEYBOARD; pub const KEYBOARD_OVERRUN_MAKE_CODE: DWORD = 0xFF; pub const RI_KEY_MAKE: DWORD = 0; pub const RI_KEY_BREAK: DWORD = 1; pub const RI_KEY_E0: DWORD = 2; pub const RI_KEY_E1: DWORD = 4; pub const RI_KEY_TERMSRV_SET_LED: DWORD = 8; pub const RI_KEY_TERMSRV_SHADOW: DWORD = 0x10; STRUCT!{struct RAWHID { dwSizeHid: DWORD, dwCount: DWORD, bRawData: [BYTE; 1], }} pub type PRAWHID = *mut RAWHID; pub type LPRAWHID = *mut RAWHID; UNION!{union RAWINPUT_data { [u32; 6], mouse mouse_mut: RAWMOUSE, keyboard keyboard_mut: RAWKEYBOARD, hid hid_mut: RAWHID, }} STRUCT!{struct RAWINPUT { header: RAWINPUTHEADER, data: RAWINPUT_data, }} pub type PRAWINPUT = *mut RAWINPUT; pub type LPRAWINPUT = *mut RAWINPUT; pub const RID_INPUT: DWORD = 0x10000003; pub const RID_HEADER: DWORD = 0x10000005; extern "system" { pub fn GetRawInputData( hRawInput: HRAWINPUT, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT, cbSizeHeader: UINT, ) -> UINT; } pub const RIDI_PREPARSEDDATA: DWORD = 0x20000005; pub const RIDI_DEVICENAME: DWORD = 0x20000007; pub const RIDI_DEVICEINFO: DWORD = 0x2000000b; STRUCT!{struct RID_DEVICE_INFO_MOUSE { dwId: DWORD, dwNumberOfButtons: DWORD, dwSampleRate: DWORD, fHasHorizontalWheel: BOOL, }} pub type PRID_DEVICE_INFO_MOUSE = *mut RID_DEVICE_INFO_MOUSE; STRUCT!{struct RID_DEVICE_INFO_KEYBOARD { dwType: DWORD, dwSubType: DWORD, dwKeyboardMode: DWORD, dwNumberOfFunctionKeys: DWORD, dwNumberOfIndicators: DWORD, dwNumberOfKeysTotal: DWORD, }} pub type PRID_DEVICE_INFO_KEYBOARD = *mut RID_DEVICE_INFO_KEYBOARD; STRUCT!{struct RID_DEVICE_INFO_HID { dwVendorId: DWORD, dwProductId: DWORD, dwVersionNumber: DWORD, usUsagePage: USHORT, usUsage: USHORT, }} pub type PRID_DEVICE_INFO_HID = *mut RID_DEVICE_INFO_HID; UNION!{union RID_DEVICE_INFO_u { [u32; 6], mouse mouse_mut: RID_DEVICE_INFO_MOUSE, keyboard keyboard_mut: RID_DEVICE_INFO_KEYBOARD, hid hid_mut: RID_DEVICE_INFO_HID, }} STRUCT!{struct RID_DEVICE_INFO { cbSize: DWORD, dwType: DWORD, u: RID_DEVICE_INFO_u, }} pub type PRID_DEVICE_INFO = *mut RID_DEVICE_INFO; pub type LPRID_DEVICE_INFO = *mut RID_DEVICE_INFO; extern "system" { pub fn GetRawInputDeviceInfoA( hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT, ) -> UINT; pub fn GetRawInputDeviceInfoW( hDevice: HANDLE, uiCommand: UINT, pData: LPVOID, pcbSize: PUINT, ) -> UINT; pub fn GetRawInputBuffer( pData: PRAWINPUT, pcbSize: PUINT, cbSizeHeader: UINT, ) -> UINT; } STRUCT!{struct RAWINPUTDEVICE { usUsagePage: USHORT, usUsage: USHORT, dwFlags: DWORD, hwndTarget: HWND, }} pub type PRAWINPUTDEVICE = *mut RAWINPUTDEVICE; pub type LPRAWINPUTDEVICE = *mut RAWINPUTDEVICE; pub type PCRAWINPUTDEVICE = *const RAWINPUTDEVICE; pub const RIDEV_REMOVE: DWORD = 0x00000001; pub const RIDEV_EXCLUDE: DWORD = 0x00000010; pub const RIDEV_PAGEONLY: DWORD = 0x00000020; pub const RIDEV_NOLEGACY: DWORD = 0x00000030; pub const RIDEV_INPUTSINK: DWORD = 0x00000100; pub const RIDEV_CAPTUREMOUSE: DWORD = 0x00000200; pub const RIDEV_NOHOTKEYS: DWORD = 0x00000200; pub const RIDEV_APPKEYS: DWORD = 0x00000400; pub const RIDEV_EXINPUTSINK: DWORD = 0x00001000; pub const RIDEV_DEVNOTIFY: DWORD = 0x00002000; pub const RIDEV_EXMODEMASK: DWORD = 0x000000F0; pub const GIDC_ARRIVAL: DWORD = 1; pub const GIDC_REMOVAL: DWORD = 2; extern "system" { pub fn RegisterRawInputDevices( pRawInputDevices: PCRAWINPUTDEVICE, uiNumDevices: UINT, cbSize: UINT, ) -> BOOL; pub fn GetRegisteredRawInputDevices( pRawInputDevices: PRAWINPUTDEVICE, puiNumDevices: PUINT, cbSize: UINT, ) -> UINT; } STRUCT!{struct RAWINPUTDEVICELIST { hDevice: HANDLE, dwType: DWORD, }} pub type PRAWINPUTDEVICELIST = *mut RAWINPUTDEVICELIST; extern "system" { pub fn GetRawInputDeviceList( pRawInputDeviceList: PRAWINPUTDEVICELIST, puiNumDevices: PUINT, cbSize: UINT, ) -> UINT; pub fn DefRawInputProc( paRawInput: *mut PRAWINPUT, nInput: INT, cbSizeHeader: UINT, ) -> LRESULT; pub fn ChangeWindowMessageFilter( message: UINT, dwFlag: DWORD, ) -> BOOL; } //15165 STRUCT!{struct CHANGEFILTERSTRUCT { cbSize: DWORD, ExtStatus: DWORD, }} extern "system" { pub fn ChangeWindowMessageFilterEx( hwnd: HWND, message: UINT, action: DWORD, pChangeFilterStruct: PCHANGEFILTERSTRUCT, ) -> BOOL; } pub type PCHANGEFILTERSTRUCT = *mut CHANGEFILTERSTRUCT; //15427 pub const NID_INTEGRATED_TOUCH: UINT = 0x00000001; pub const NID_EXTERNAL_TOUCH: UINT = 0x00000002; pub const NID_INTEGRATED_PEN: UINT = 0x00000004; pub const NID_EXTERNAL_PEN: UINT = 0x00000008; pub const NID_MULTI_INPUT: UINT = 0x00000040; pub const NID_READY: UINT = 0x00000080; pub const MAX_STR_BLOCKREASON: usize = 256; extern "system" { pub fn ShutdownBlockReasonCreate( hWnd: HWND, pwszReason: LPCWSTR, ) -> BOOL; pub fn ShutdownBlockReasonQuery( hWnd: HWND, pwszBuff: LPWSTR, pcchBuff: *mut DWORD, ) -> BOOL; pub fn ShutdownBlockReasonDestroy( hWnd: HWND, ) -> BOOL; } //15615 extern "system" { pub fn IsImmersiveProcess( hProcess: HANDLE, ) -> BOOL; }