1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 //! USER procedure declarations, constant definitions and macros 7 use ctypes::{c_int, c_long, c_short, c_uint}; 8 use shared::basetsd::{ 9 DWORD_PTR, INT32, INT_PTR, PDWORD_PTR, UINT16, UINT32, UINT64, UINT_PTR, ULONG_PTR, 10 }; 11 #[cfg(target_pointer_width = "64")] 12 use shared::basetsd::LONG_PTR; 13 use shared::guiddef::{GUID, LPCGUID}; 14 use shared::minwindef::{ 15 ATOM, BOOL, BYTE, DWORD, HINSTANCE, HIWORD, HKL, HMODULE, HRGN, HWINSTA, INT, LOWORD, LPARAM, 16 LPBYTE, LPDWORD, LPINT, LPVOID, LPWORD, LRESULT, PBYTE, PUINT, PULONG, TRUE, UCHAR, UINT, 17 ULONG, USHORT, WORD, WPARAM, 18 }; 19 use shared::windef::{ 20 COLORREF, DPI_AWARENESS, DPI_AWARENESS_CONTEXT, DPI_HOSTING_BEHAVIOR, HACCEL, HBITMAP, HBRUSH, 21 HCURSOR, HDC, HDESK, HHOOK, HICON, HMENU, HMONITOR, HWINEVENTHOOK, HWND, LPCRECT, LPPOINT, 22 LPRECT, POINT, RECT, SIZE, 23 }; 24 use um::minwinbase::LPSECURITY_ATTRIBUTES; 25 use um::wingdi::{ 26 BLENDFUNCTION, DEVMODEA, DEVMODEW, LOGFONTA, LOGFONTW, PDISPLAY_DEVICEA, PDISPLAY_DEVICEW 27 }; 28 use um::winnt::{ 29 ACCESS_MASK, BOOLEAN, CHAR, HANDLE, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR, LUID, 30 PSECURITY_DESCRIPTOR, PSECURITY_INFORMATION, PVOID, SHORT, VOID, WCHAR, 31 }; 32 use vc::limits::UINT_MAX; 33 use vc::vadefs::va_list; 34 pub type HDWP = HANDLE; 35 pub type MENUTEMPLATEA = VOID; 36 pub type MENUTEMPLATEW = VOID; 37 pub type LPMENUTEMPLATEA = PVOID; 38 pub type LPMENUTEMPLATEW = PVOID; 39 FN!{stdcall WNDPROC( 40 HWND, 41 UINT, 42 WPARAM, 43 LPARAM, 44 ) -> LRESULT} 45 FN!{stdcall DLGPROC( 46 HWND, 47 UINT, 48 WPARAM, 49 LPARAM, 50 ) -> INT_PTR} 51 FN!{stdcall TIMERPROC( 52 HWND, 53 UINT, 54 UINT_PTR, 55 DWORD, 56 ) -> ()} 57 FN!{stdcall GRAYSTRINGPROC( 58 HDC, 59 LPARAM, 60 c_int, 61 ) -> BOOL} 62 FN!{stdcall WNDENUMPROC( 63 HWND, 64 LPARAM, 65 ) -> BOOL} 66 FN!{stdcall HOOKPROC( 67 code: c_int, 68 wParam: WPARAM, 69 lParam: LPARAM, 70 ) -> LRESULT} 71 FN!{stdcall SENDASYNCPROC( 72 HWND, 73 UINT, 74 ULONG_PTR, 75 LRESULT, 76 ) -> ()} 77 FN!{stdcall PROPENUMPROCA( 78 HWND, 79 LPCSTR, 80 HANDLE, 81 ) -> BOOL} 82 FN!{stdcall PROPENUMPROCW( 83 HWND, 84 LPCWSTR, 85 HANDLE, 86 ) -> BOOL} 87 FN!{stdcall PROPENUMPROCEXA( 88 HWND, 89 LPSTR, 90 HANDLE, 91 ULONG_PTR, 92 ) -> BOOL} 93 FN!{stdcall PROPENUMPROCEXW( 94 HWND, 95 LPWSTR, 96 HANDLE, 97 ULONG_PTR, 98 ) -> BOOL} 99 FN!{stdcall EDITWORDBREAKPROCA( 100 lpch: LPSTR, 101 ichCurrent: c_int, 102 cch: c_int, 103 code: c_int, 104 ) -> c_int} 105 FN!{stdcall EDITWORDBREAKPROCW( 106 lpch: LPWSTR, 107 ichCurrent: c_int, 108 cch: c_int, 109 code: c_int, 110 ) -> c_int} 111 FN!{stdcall DRAWSTATEPROC( 112 hdc: HDC, 113 lData: LPARAM, 114 wData: WPARAM, 115 cx: c_int, 116 cy: c_int, 117 ) -> BOOL} 118 FN!{stdcall NAMEENUMPROCA( 119 LPSTR, 120 LPARAM, 121 ) -> BOOL} 122 FN!{stdcall NAMEENUMPROCW( 123 LPWSTR, 124 LPARAM, 125 ) -> BOOL} 126 pub type WINSTAENUMPROCA = NAMEENUMPROCA; 127 pub type DESKTOPENUMPROCA = NAMEENUMPROCA; 128 pub type WINSTAENUMPROCW = NAMEENUMPROCW; 129 pub type DESKTOPENUMPROCW = NAMEENUMPROCW; 130 #[inline] 131 pub fn IS_INTRESOURCE(r: ULONG_PTR) -> bool { 132 (r >> 16) == 0 133 } 134 #[inline] 135 pub fn MAKEINTRESOURCEA(i: WORD) -> LPSTR { 136 i as ULONG_PTR as LPSTR 137 } 138 #[inline] 139 pub fn MAKEINTRESOURCEW(i: WORD) -> LPWSTR { 140 i as ULONG_PTR as LPWSTR 141 } 142 pub const RT_CURSOR: LPWSTR = MAKEINTRESOURCE!(1); 143 pub const RT_BITMAP: LPWSTR = MAKEINTRESOURCE!(2); 144 pub const RT_ICON: LPWSTR = MAKEINTRESOURCE!(3); 145 pub const RT_MENU: LPWSTR = MAKEINTRESOURCE!(4); 146 pub const RT_DIALOG: LPWSTR = MAKEINTRESOURCE!(5); 147 pub const RT_STRING: LPWSTR = MAKEINTRESOURCE!(6); 148 pub const RT_FONTDIR: LPWSTR = MAKEINTRESOURCE!(7); 149 pub const RT_FONT: LPWSTR = MAKEINTRESOURCE!(8); 150 pub const RT_ACCELERATOR: LPWSTR = MAKEINTRESOURCE!(9); 151 pub const RT_RCDATA: LPWSTR = MAKEINTRESOURCE!(10); 152 pub const RT_MESSAGETABLE: LPWSTR = MAKEINTRESOURCE!(11); 153 pub const DIFFERENCE: WORD = 11; 154 pub const RT_GROUP_CURSOR: LPWSTR = MAKEINTRESOURCE!(1 + DIFFERENCE); 155 pub const RT_GROUP_ICON: LPWSTR = MAKEINTRESOURCE!(3 + DIFFERENCE); 156 pub const RT_VERSION: LPWSTR = MAKEINTRESOURCE!(16); 157 pub const RT_DLGINCLUDE: LPWSTR = MAKEINTRESOURCE!(17); 158 pub const RT_PLUGPLAY: LPWSTR = MAKEINTRESOURCE!(19); 159 pub const RT_VXD: LPWSTR = MAKEINTRESOURCE!(20); 160 pub const RT_ANICURSOR: LPWSTR = MAKEINTRESOURCE!(21); 161 pub const RT_ANIICON: LPWSTR = MAKEINTRESOURCE!(22); 162 pub const RT_HTML: LPWSTR = MAKEINTRESOURCE!(23); 163 pub const RT_MANIFEST: LPWSTR = MAKEINTRESOURCE!(24); 164 pub const CREATEPROCESS_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(1); 165 pub const ISOLATIONAWARE_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(2); 166 pub const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID: LPWSTR 167 = MAKEINTRESOURCE!(3); 168 pub const MINIMUM_RESERVED_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(1); 169 pub const MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID: LPWSTR = MAKEINTRESOURCE!(16); 170 extern "system" { 171 pub fn wvsprintfA( 172 _: LPSTR, 173 _: LPCSTR, 174 arglist: va_list, 175 ) -> c_int; 176 pub fn wvsprintfW( 177 _: LPWSTR, 178 _: LPCWSTR, 179 arglist: va_list, 180 ) -> c_int; 181 } 182 extern "C" { 183 pub fn wsprintfA( 184 _: LPSTR, 185 _: LPCSTR, 186 ... 187 ) -> c_int; 188 pub fn wsprintfW( 189 _: LPWSTR, 190 _: LPCWSTR, 191 ... 192 ) -> c_int; 193 } 194 pub const SETWALLPAPER_DEFAULT: LPWSTR = -1isize as LPWSTR; 195 pub const SB_HORZ: UINT = 0; 196 pub const SB_VERT: UINT = 1; 197 pub const SB_CTL: UINT = 2; 198 pub const SB_BOTH: UINT = 3; 199 pub const SB_LINEUP: LPARAM = 0; 200 pub const SB_LINELEFT: LPARAM = 0; 201 pub const SB_LINEDOWN: LPARAM = 1; 202 pub const SB_LINERIGHT: LPARAM = 1; 203 pub const SB_PAGEUP: LPARAM = 2; 204 pub const SB_PAGELEFT: LPARAM = 2; 205 pub const SB_PAGEDOWN: LPARAM = 3; 206 pub const SB_PAGERIGHT: LPARAM = 3; 207 pub const SB_THUMBPOSITION: LPARAM = 4; 208 pub const SB_THUMBTRACK: LPARAM = 5; 209 pub const SB_TOP: LPARAM = 6; 210 pub const SB_LEFT: LPARAM = 6; 211 pub const SB_BOTTOM: LPARAM = 7; 212 pub const SB_RIGHT: LPARAM = 7; 213 pub const SB_ENDSCROLL: LPARAM = 8; 214 pub const SW_HIDE: c_int = 0; 215 pub const SW_SHOWNORMAL: c_int = 1; 216 pub const SW_NORMAL: c_int = 1; 217 pub const SW_SHOWMINIMIZED: c_int = 2; 218 pub const SW_SHOWMAXIMIZED: c_int = 3; 219 pub const SW_MAXIMIZE: c_int = 3; 220 pub const SW_SHOWNOACTIVATE: c_int = 4; 221 pub const SW_SHOW: c_int = 5; 222 pub const SW_MINIMIZE: c_int = 6; 223 pub const SW_SHOWMINNOACTIVE: c_int = 7; 224 pub const SW_SHOWNA: c_int = 8; 225 pub const SW_RESTORE: c_int = 9; 226 pub const SW_SHOWDEFAULT: c_int = 10; 227 pub const SW_FORCEMINIMIZE: c_int = 11; 228 pub const SW_MAX: c_int = 11; 229 pub const HIDE_WINDOW: c_int = 0; 230 pub const SHOW_OPENWINDOW: c_int = 1; 231 pub const SHOW_ICONWINDOW: c_int = 2; 232 pub const SHOW_FULLSCREEN: c_int = 3; 233 pub const SHOW_OPENNOACTIVATE: c_int = 4; 234 pub const SW_PARENTCLOSING: LPARAM = 1; 235 pub const SW_OTHERZOOM: LPARAM = 2; 236 pub const SW_PARENTOPENING: LPARAM = 3; 237 pub const SW_OTHERUNZOOM: LPARAM = 4; 238 pub const AW_HOR_POSITIVE: DWORD = 0x00000001; 239 pub const AW_HOR_NEGATIVE: DWORD = 0x00000002; 240 pub const AW_VER_POSITIVE: DWORD = 0x00000004; 241 pub const AW_VER_NEGATIVE: DWORD = 0x00000008; 242 pub const AW_CENTER: DWORD = 0x00000010; 243 pub const AW_HIDE: DWORD = 0x00010000; 244 pub const AW_ACTIVATE: DWORD = 0x00020000; 245 pub const AW_SLIDE: DWORD = 0x00040000; 246 pub const AW_BLEND: DWORD = 0x00080000; 247 pub const KF_EXTENDED: WORD = 0x0100; 248 pub const KF_DLGMODE: WORD = 0x0800; 249 pub const KF_MENUMODE: WORD = 0x1000; 250 pub const KF_ALTDOWN: WORD = 0x2000; 251 pub const KF_REPEAT: WORD = 0x4000; 252 pub const KF_UP: WORD = 0x8000; 253 pub const VK_LBUTTON: c_int = 0x01; 254 pub const VK_RBUTTON: c_int = 0x02; 255 pub const VK_CANCEL: c_int = 0x03; 256 pub const VK_MBUTTON: c_int = 0x04; 257 pub const VK_XBUTTON1: c_int = 0x05; 258 pub const VK_XBUTTON2: c_int = 0x06; 259 pub const VK_BACK: c_int = 0x08; 260 pub const VK_TAB: c_int = 0x09; 261 pub const VK_CLEAR: c_int = 0x0C; 262 pub const VK_RETURN: c_int = 0x0D; 263 pub const VK_SHIFT: c_int = 0x10; 264 pub const VK_CONTROL: c_int = 0x11; 265 pub const VK_MENU: c_int = 0x12; 266 pub const VK_PAUSE: c_int = 0x13; 267 pub const VK_CAPITAL: c_int = 0x14; 268 pub const VK_KANA: c_int = 0x15; 269 pub const VK_HANGEUL: c_int = 0x15; 270 pub const VK_HANGUL: c_int = 0x15; 271 pub const VK_JUNJA: c_int = 0x17; 272 pub const VK_FINAL: c_int = 0x18; 273 pub const VK_HANJA: c_int = 0x19; 274 pub const VK_KANJI: c_int = 0x19; 275 pub const VK_ESCAPE: c_int = 0x1B; 276 pub const VK_CONVERT: c_int = 0x1C; 277 pub const VK_NONCONVERT: c_int = 0x1D; 278 pub const VK_ACCEPT: c_int = 0x1E; 279 pub const VK_MODECHANGE: c_int = 0x1F; 280 pub const VK_SPACE: c_int = 0x20; 281 pub const VK_PRIOR: c_int = 0x21; 282 pub const VK_NEXT: c_int = 0x22; 283 pub const VK_END: c_int = 0x23; 284 pub const VK_HOME: c_int = 0x24; 285 pub const VK_LEFT: c_int = 0x25; 286 pub const VK_UP: c_int = 0x26; 287 pub const VK_RIGHT: c_int = 0x27; 288 pub const VK_DOWN: c_int = 0x28; 289 pub const VK_SELECT: c_int = 0x29; 290 pub const VK_PRINT: c_int = 0x2A; 291 pub const VK_EXECUTE: c_int = 0x2B; 292 pub const VK_SNAPSHOT: c_int = 0x2C; 293 pub const VK_INSERT: c_int = 0x2D; 294 pub const VK_DELETE: c_int = 0x2E; 295 pub const VK_HELP: c_int = 0x2F; 296 pub const VK_LWIN: c_int = 0x5B; 297 pub const VK_RWIN: c_int = 0x5C; 298 pub const VK_APPS: c_int = 0x5D; 299 pub const VK_SLEEP: c_int = 0x5F; 300 pub const VK_NUMPAD0: c_int = 0x60; 301 pub const VK_NUMPAD1: c_int = 0x61; 302 pub const VK_NUMPAD2: c_int = 0x62; 303 pub const VK_NUMPAD3: c_int = 0x63; 304 pub const VK_NUMPAD4: c_int = 0x64; 305 pub const VK_NUMPAD5: c_int = 0x65; 306 pub const VK_NUMPAD6: c_int = 0x66; 307 pub const VK_NUMPAD7: c_int = 0x67; 308 pub const VK_NUMPAD8: c_int = 0x68; 309 pub const VK_NUMPAD9: c_int = 0x69; 310 pub const VK_MULTIPLY: c_int = 0x6A; 311 pub const VK_ADD: c_int = 0x6B; 312 pub const VK_SEPARATOR: c_int = 0x6C; 313 pub const VK_SUBTRACT: c_int = 0x6D; 314 pub const VK_DECIMAL: c_int = 0x6E; 315 pub const VK_DIVIDE: c_int = 0x6F; 316 pub const VK_F1: c_int = 0x70; 317 pub const VK_F2: c_int = 0x71; 318 pub const VK_F3: c_int = 0x72; 319 pub const VK_F4: c_int = 0x73; 320 pub const VK_F5: c_int = 0x74; 321 pub const VK_F6: c_int = 0x75; 322 pub const VK_F7: c_int = 0x76; 323 pub const VK_F8: c_int = 0x77; 324 pub const VK_F9: c_int = 0x78; 325 pub const VK_F10: c_int = 0x79; 326 pub const VK_F11: c_int = 0x7A; 327 pub const VK_F12: c_int = 0x7B; 328 pub const VK_F13: c_int = 0x7C; 329 pub const VK_F14: c_int = 0x7D; 330 pub const VK_F15: c_int = 0x7E; 331 pub const VK_F16: c_int = 0x7F; 332 pub const VK_F17: c_int = 0x80; 333 pub const VK_F18: c_int = 0x81; 334 pub const VK_F19: c_int = 0x82; 335 pub const VK_F20: c_int = 0x83; 336 pub const VK_F21: c_int = 0x84; 337 pub const VK_F22: c_int = 0x85; 338 pub const VK_F23: c_int = 0x86; 339 pub const VK_F24: c_int = 0x87; 340 pub const VK_NAVIGATION_VIEW: c_int = 0x88; 341 pub const VK_NAVIGATION_MENU: c_int = 0x89; 342 pub const VK_NAVIGATION_UP: c_int = 0x8A; 343 pub const VK_NAVIGATION_DOWN: c_int = 0x8B; 344 pub const VK_NAVIGATION_LEFT: c_int = 0x8C; 345 pub const VK_NAVIGATION_RIGHT: c_int = 0x8D; 346 pub const VK_NAVIGATION_ACCEPT: c_int = 0x8E; 347 pub const VK_NAVIGATION_CANCEL: c_int = 0x8F; 348 pub const VK_NUMLOCK: c_int = 0x90; 349 pub const VK_SCROLL: c_int = 0x91; 350 pub const VK_OEM_NEC_EQUAL: c_int = 0x92; 351 pub const VK_OEM_FJ_JISHO: c_int = 0x92; 352 pub const VK_OEM_FJ_MASSHOU: c_int = 0x93; 353 pub const VK_OEM_FJ_TOUROKU: c_int = 0x94; 354 pub const VK_OEM_FJ_LOYA: c_int = 0x95; 355 pub const VK_OEM_FJ_ROYA: c_int = 0x96; 356 pub const VK_LSHIFT: c_int = 0xA0; 357 pub const VK_RSHIFT: c_int = 0xA1; 358 pub const VK_LCONTROL: c_int = 0xA2; 359 pub const VK_RCONTROL: c_int = 0xA3; 360 pub const VK_LMENU: c_int = 0xA4; 361 pub const VK_RMENU: c_int = 0xA5; 362 pub const VK_BROWSER_BACK: c_int = 0xA6; 363 pub const VK_BROWSER_FORWARD: c_int = 0xA7; 364 pub const VK_BROWSER_REFRESH: c_int = 0xA8; 365 pub const VK_BROWSER_STOP: c_int = 0xA9; 366 pub const VK_BROWSER_SEARCH: c_int = 0xAA; 367 pub const VK_BROWSER_FAVORITES: c_int = 0xAB; 368 pub const VK_BROWSER_HOME: c_int = 0xAC; 369 pub const VK_VOLUME_MUTE: c_int = 0xAD; 370 pub const VK_VOLUME_DOWN: c_int = 0xAE; 371 pub const VK_VOLUME_UP: c_int = 0xAF; 372 pub const VK_MEDIA_NEXT_TRACK: c_int = 0xB0; 373 pub const VK_MEDIA_PREV_TRACK: c_int = 0xB1; 374 pub const VK_MEDIA_STOP: c_int = 0xB2; 375 pub const VK_MEDIA_PLAY_PAUSE: c_int = 0xB3; 376 pub const VK_LAUNCH_MAIL: c_int = 0xB4; 377 pub const VK_LAUNCH_MEDIA_SELECT: c_int = 0xB5; 378 pub const VK_LAUNCH_APP1: c_int = 0xB6; 379 pub const VK_LAUNCH_APP2: c_int = 0xB7; 380 pub const VK_OEM_1: c_int = 0xBA; 381 pub const VK_OEM_PLUS: c_int = 0xBB; 382 pub const VK_OEM_COMMA: c_int = 0xBC; 383 pub const VK_OEM_MINUS: c_int = 0xBD; 384 pub const VK_OEM_PERIOD: c_int = 0xBE; 385 pub const VK_OEM_2: c_int = 0xBF; 386 pub const VK_OEM_3: c_int = 0xC0; 387 pub const VK_GAMEPAD_A: c_int = 0xC3; 388 pub const VK_GAMEPAD_B: c_int = 0xC4; 389 pub const VK_GAMEPAD_X: c_int = 0xC5; 390 pub const VK_GAMEPAD_Y: c_int = 0xC6; 391 pub const VK_GAMEPAD_RIGHT_SHOULDER: c_int = 0xC7; 392 pub const VK_GAMEPAD_LEFT_SHOULDER: c_int = 0xC8; 393 pub const VK_GAMEPAD_LEFT_TRIGGER: c_int = 0xC9; 394 pub const VK_GAMEPAD_RIGHT_TRIGGER: c_int = 0xCA; 395 pub const VK_GAMEPAD_DPAD_UP: c_int = 0xCB; 396 pub const VK_GAMEPAD_DPAD_DOWN: c_int = 0xCC; 397 pub const VK_GAMEPAD_DPAD_LEFT: c_int = 0xCD; 398 pub const VK_GAMEPAD_DPAD_RIGHT: c_int = 0xCE; 399 pub const VK_GAMEPAD_MENU: c_int = 0xCF; 400 pub const VK_GAMEPAD_VIEW: c_int = 0xD0; 401 pub const VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON: c_int = 0xD1; 402 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON: c_int = 0xD2; 403 pub const VK_GAMEPAD_LEFT_THUMBSTICK_UP: c_int = 0xD3; 404 pub const VK_GAMEPAD_LEFT_THUMBSTICK_DOWN: c_int = 0xD4; 405 pub const VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT: c_int = 0xD5; 406 pub const VK_GAMEPAD_LEFT_THUMBSTICK_LEFT: c_int = 0xD6; 407 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_UP: c_int = 0xD7; 408 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN: c_int = 0xD8; 409 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT: c_int = 0xD9; 410 pub const VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT: c_int = 0xDA; 411 pub const VK_OEM_4: c_int = 0xDB; 412 pub const VK_OEM_5: c_int = 0xDC; 413 pub const VK_OEM_6: c_int = 0xDD; 414 pub const VK_OEM_7: c_int = 0xDE; 415 pub const VK_OEM_8: c_int = 0xDF; 416 pub const VK_OEM_AX: c_int = 0xE1; 417 pub const VK_OEM_102: c_int = 0xE2; 418 pub const VK_ICO_HELP: c_int = 0xE3; 419 pub const VK_ICO_00: c_int = 0xE4; 420 pub const VK_PROCESSKEY: c_int = 0xE5; 421 pub const VK_ICO_CLEAR: c_int = 0xE6; 422 pub const VK_PACKET: c_int = 0xE7; 423 pub const VK_OEM_RESET: c_int = 0xE9; 424 pub const VK_OEM_JUMP: c_int = 0xEA; 425 pub const VK_OEM_PA1: c_int = 0xEB; 426 pub const VK_OEM_PA2: c_int = 0xEC; 427 pub const VK_OEM_PA3: c_int = 0xED; 428 pub const VK_OEM_WSCTRL: c_int = 0xEE; 429 pub const VK_OEM_CUSEL: c_int = 0xEF; 430 pub const VK_OEM_ATTN: c_int = 0xF0; 431 pub const VK_OEM_FINISH: c_int = 0xF1; 432 pub const VK_OEM_COPY: c_int = 0xF2; 433 pub const VK_OEM_AUTO: c_int = 0xF3; 434 pub const VK_OEM_ENLW: c_int = 0xF4; 435 pub const VK_OEM_BACKTAB: c_int = 0xF5; 436 pub const VK_ATTN: c_int = 0xF6; 437 pub const VK_CRSEL: c_int = 0xF7; 438 pub const VK_EXSEL: c_int = 0xF8; 439 pub const VK_EREOF: c_int = 0xF9; 440 pub const VK_PLAY: c_int = 0xFA; 441 pub const VK_ZOOM: c_int = 0xFB; 442 pub const VK_NONAME: c_int = 0xFC; 443 pub const VK_PA1: c_int = 0xFD; 444 pub const VK_OEM_CLEAR: c_int = 0xFE; 445 pub const WH_MIN: c_int = -1; 446 pub const WH_MSGFILTER: c_int = -1; 447 pub const WH_JOURNALRECORD: c_int = 0; 448 pub const WH_JOURNALPLAYBACK: c_int = 1; 449 pub const WH_KEYBOARD: c_int = 2; 450 pub const WH_GETMESSAGE: c_int = 3; 451 pub const WH_CALLWNDPROC: c_int = 4; 452 pub const WH_CBT: c_int = 5; 453 pub const WH_SYSMSGFILTER: c_int = 6; 454 pub const WH_MOUSE: c_int = 7; 455 pub const WH_HARDWARE: c_int = 8; 456 pub const WH_DEBUG: c_int = 9; 457 pub const WH_SHELL: c_int = 10; 458 pub const WH_FOREGROUNDIDLE: c_int = 11; 459 pub const WH_CALLWNDPROCRET: c_int = 12; 460 pub const WH_KEYBOARD_LL: c_int = 13; 461 pub const WH_MOUSE_LL: c_int = 14; 462 pub const WH_MAX: c_int = 14; 463 pub const WH_MINHOOK: c_int = WH_MIN; 464 pub const WH_MAXHOOK: c_int = WH_MAX; 465 pub const HC_ACTION: c_int = 0; 466 pub const HC_GETNEXT: c_int = 1; 467 pub const HC_SKIP: c_int = 2; 468 pub const HC_NOREMOVE: c_int = 3; 469 pub const HC_NOREM: c_int = HC_NOREMOVE; 470 pub const HC_SYSMODALON: c_int = 4; 471 pub const HC_SYSMODALOFF: c_int = 5; 472 pub const HCBT_MOVESIZE: c_int = 0; 473 pub const HCBT_MINMAX: c_int = 1; 474 pub const HCBT_QS: c_int = 2; 475 pub const HCBT_CREATEWND: c_int = 3; 476 pub const HCBT_DESTROYWND: c_int = 4; 477 pub const HCBT_ACTIVATE: c_int = 5; 478 pub const HCBT_CLICKSKIPPED: c_int = 6; 479 pub const HCBT_KEYSKIPPED: c_int = 7; 480 pub const HCBT_SYSCOMMAND: c_int = 8; 481 pub const HCBT_SETFOCUS: c_int = 9; 482 STRUCT!{struct CBT_CREATEWNDA { 483 lpcs: *mut CREATESTRUCTA, 484 hwndInsertAfter: HWND, 485 }} 486 pub type LPCBT_CREATEWNDA = *mut CBT_CREATEWNDA; 487 STRUCT!{struct CBT_CREATEWNDW { 488 lpcs: *mut CREATESTRUCTW, 489 hwndInsertAfter: HWND, 490 }} 491 pub type LPCBT_CREATEWNDW = *mut CBT_CREATEWNDW; 492 STRUCT!{struct CBTACTIVATESTRUCT { 493 fMouse: BOOL, 494 hWndActive: HWND, 495 }} 496 pub type LPCBTACTIVATESTRUCT = *mut CBTACTIVATESTRUCT; 497 STRUCT!{struct WTSSESSION_NOTIFICATION { 498 cbSize: DWORD, 499 dwSessionId: DWORD, 500 }} 501 pub type PWTSSESSION_NOTIFICATION = *mut WTSSESSION_NOTIFICATION; 502 pub const WTS_CONSOLE_CONNECT: WPARAM = 0x1; 503 pub const WTS_CONSOLE_DISCONNECT: WPARAM = 0x2; 504 pub const WTS_REMOTE_CONNECT: WPARAM = 0x3; 505 pub const WTS_REMOTE_DISCONNECT: WPARAM = 0x4; 506 pub const WTS_SESSION_LOGON: WPARAM = 0x5; 507 pub const WTS_SESSION_LOGOFF: WPARAM = 0x6; 508 pub const WTS_SESSION_LOCK: WPARAM = 0x7; 509 pub const WTS_SESSION_UNLOCK: WPARAM = 0x8; 510 pub const WTS_SESSION_REMOTE_CONTROL: WPARAM = 0x9; 511 pub const WTS_SESSION_CREATE: WPARAM = 0xa; 512 pub const WTS_SESSION_TERMINATE: WPARAM = 0xb; 513 pub const MSGF_DIALOGBOX: c_int = 0; 514 pub const MSGF_MESSAGEBOX: c_int = 1; 515 pub const MSGF_MENU: c_int = 2; 516 pub const MSGF_SCROLLBAR: c_int = 5; 517 pub const MSGF_NEXTWINDOW: c_int = 6; 518 pub const MSGF_MAX: c_int = 8; 519 pub const MSGF_USER: c_int = 4096; 520 pub const HSHELL_WINDOWCREATED: c_int = 1; 521 pub const HSHELL_WINDOWDESTROYED: c_int = 2; 522 pub const HSHELL_ACTIVATESHELLWINDOW: c_int = 3; 523 pub const HSHELL_WINDOWACTIVATED: c_int = 4; 524 pub const HSHELL_GETMINRECT: c_int = 5; 525 pub const HSHELL_REDRAW: c_int = 6; 526 pub const HSHELL_TASKMAN: c_int = 7; 527 pub const HSHELL_LANGUAGE: c_int = 8; 528 pub const HSHELL_SYSMENU: c_int = 9; 529 pub const HSHELL_ENDTASK: c_int = 10; 530 pub const HSHELL_ACCESSIBILITYSTATE: c_int = 11; 531 pub const HSHELL_APPCOMMAND: c_int = 12; 532 pub const HSHELL_WINDOWREPLACED: c_int = 13; 533 pub const HSHELL_WINDOWREPLACING: c_int = 14; 534 pub const HSHELL_MONITORCHANGED: c_int = 16; 535 pub const HSHELL_HIGHBIT: c_int = 0x8000; 536 pub const HSHELL_FLASH: c_int = HSHELL_REDRAW | HSHELL_HIGHBIT; 537 pub const HSHELL_RUDEAPPACTIVATED: c_int = HSHELL_WINDOWACTIVATED | HSHELL_HIGHBIT; 538 pub const APPCOMMAND_BROWSER_BACKWARD: c_short = 1; 539 pub const APPCOMMAND_BROWSER_FORWARD: c_short = 2; 540 pub const APPCOMMAND_BROWSER_REFRESH: c_short = 3; 541 pub const APPCOMMAND_BROWSER_STOP: c_short = 4; 542 pub const APPCOMMAND_BROWSER_SEARCH: c_short = 5; 543 pub const APPCOMMAND_BROWSER_FAVORITES: c_short = 6; 544 pub const APPCOMMAND_BROWSER_HOME: c_short = 7; 545 pub const APPCOMMAND_VOLUME_MUTE: c_short = 8; 546 pub const APPCOMMAND_VOLUME_DOWN: c_short = 9; 547 pub const APPCOMMAND_VOLUME_UP: c_short = 10; 548 pub const APPCOMMAND_MEDIA_NEXTTRACK: c_short = 11; 549 pub const APPCOMMAND_MEDIA_PREVIOUSTRACK: c_short = 12; 550 pub const APPCOMMAND_MEDIA_STOP: c_short = 13; 551 pub const APPCOMMAND_MEDIA_PLAY_PAUSE: c_short = 14; 552 pub const APPCOMMAND_LAUNCH_MAIL: c_short = 15; 553 pub const APPCOMMAND_LAUNCH_MEDIA_SELECT: c_short = 16; 554 pub const APPCOMMAND_LAUNCH_APP1: c_short = 17; 555 pub const APPCOMMAND_LAUNCH_APP2: c_short = 18; 556 pub const APPCOMMAND_BASS_DOWN: c_short = 19; 557 pub const APPCOMMAND_BASS_BOOST: c_short = 20; 558 pub const APPCOMMAND_BASS_UP: c_short = 21; 559 pub const APPCOMMAND_TREBLE_DOWN: c_short = 22; 560 pub const APPCOMMAND_TREBLE_UP: c_short = 23; 561 pub const APPCOMMAND_MICROPHONE_VOLUME_MUTE: c_short = 24; 562 pub const APPCOMMAND_MICROPHONE_VOLUME_DOWN: c_short = 25; 563 pub const APPCOMMAND_MICROPHONE_VOLUME_UP: c_short = 26; 564 pub const APPCOMMAND_HELP: c_short = 27; 565 pub const APPCOMMAND_FIND: c_short = 28; 566 pub const APPCOMMAND_NEW: c_short = 29; 567 pub const APPCOMMAND_OPEN: c_short = 30; 568 pub const APPCOMMAND_CLOSE: c_short = 31; 569 pub const APPCOMMAND_SAVE: c_short = 32; 570 pub const APPCOMMAND_PRINT: c_short = 33; 571 pub const APPCOMMAND_UNDO: c_short = 34; 572 pub const APPCOMMAND_REDO: c_short = 35; 573 pub const APPCOMMAND_COPY: c_short = 36; 574 pub const APPCOMMAND_CUT: c_short = 37; 575 pub const APPCOMMAND_PASTE: c_short = 38; 576 pub const APPCOMMAND_REPLY_TO_MAIL: c_short = 39; 577 pub const APPCOMMAND_FORWARD_MAIL: c_short = 40; 578 pub const APPCOMMAND_SEND_MAIL: c_short = 41; 579 pub const APPCOMMAND_SPELL_CHECK: c_short = 42; 580 pub const APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE: c_short = 43; 581 pub const APPCOMMAND_MIC_ON_OFF_TOGGLE: c_short = 44; 582 pub const APPCOMMAND_CORRECTION_LIST: c_short = 45; 583 pub const APPCOMMAND_MEDIA_PLAY: c_short = 46; 584 pub const APPCOMMAND_MEDIA_PAUSE: c_short = 47; 585 pub const APPCOMMAND_MEDIA_RECORD: c_short = 48; 586 pub const APPCOMMAND_MEDIA_FAST_FORWARD: c_short = 49; 587 pub const APPCOMMAND_MEDIA_REWIND: c_short = 50; 588 pub const APPCOMMAND_MEDIA_CHANNEL_UP: c_short = 51; 589 pub const APPCOMMAND_MEDIA_CHANNEL_DOWN: c_short = 52; 590 pub const APPCOMMAND_DELETE: c_short = 53; 591 pub const APPCOMMAND_DWM_FLIP3D: c_short = 54; 592 pub const FAPPCOMMAND_MOUSE: WORD = 0x8000; 593 pub const FAPPCOMMAND_KEY: WORD = 0; 594 pub const FAPPCOMMAND_OEM: WORD = 0x1000; 595 pub const FAPPCOMMAND_MASK: WORD = 0xF000; 596 #[inline] 597 pub fn GET_APPCOMMAND_LPARAM(lParam: LPARAM) -> c_short { 598 (HIWORD(lParam as DWORD) & !FAPPCOMMAND_MASK) as c_short 599 } 600 #[inline] 601 pub fn GET_DEVICE_LPARAM(lParam: LPARAM) -> WORD { 602 HIWORD(lParam as DWORD) & FAPPCOMMAND_MASK 603 } 604 pub use self::GET_DEVICE_LPARAM as GET_MOUSEORKEY_LPARAM; 605 pub use shared::minwindef::LOWORD as GET_FLAGS_LPARAM; 606 pub use self::GET_FLAGS_LPARAM as GET_KEYSTATE_LPARAM; 607 STRUCT!{struct SHELLHOOKINFO { 608 hwnd: HWND, 609 rc: RECT, 610 }} 611 pub type LPSHELLHOOKINFO = *mut SHELLHOOKINFO; 612 STRUCT!{struct EVENTMSG { 613 message: UINT, 614 paramL: UINT, 615 paramH: UINT, 616 time: DWORD, 617 hwnd: HWND, 618 }} 619 pub type PEVENTMSGMSG = *mut EVENTMSG; 620 pub type NPEVENTMSGMSG = *mut EVENTMSG; 621 pub type LPEVENTMSGMSG = *mut EVENTMSG; 622 pub type PEVENTMSG = *mut EVENTMSG; 623 pub type NPEVENTMSG = *mut EVENTMSG; 624 pub type LPEVENTMSG = *mut EVENTMSG; 625 STRUCT!{struct CWPSTRUCT { 626 lParam: LPARAM, 627 wParam: WPARAM, 628 message: UINT, 629 hwnd: HWND, 630 }} 631 pub type PCWPSTRUCT = *mut CWPSTRUCT; 632 pub type NPCWPSTRUCT = *mut CWPSTRUCT; 633 pub type LPCWPSTRUCT = *mut CWPSTRUCT; 634 STRUCT!{struct CWPRETSTRUCT { 635 lResult: LRESULT, 636 lParam: LPARAM, 637 wParam: WPARAM, 638 message: UINT, 639 hwnd: HWND, 640 }} 641 pub type PCWPRETSTRUCT = *mut CWPRETSTRUCT; 642 pub type NPCWPRETSTRUCT = *mut CWPRETSTRUCT; 643 pub type LPCWPRETSTRUCT = *mut CWPRETSTRUCT; 644 pub const LLKHF_EXTENDED: DWORD = (KF_EXTENDED >> 8) as u32; 645 pub const LLKHF_INJECTED: DWORD = 0x00000010; 646 pub const LLKHF_ALTDOWN: DWORD = (KF_ALTDOWN >> 8) as u32; 647 pub const LLKHF_UP: DWORD = (KF_UP >> 8) as u32; 648 pub const LLKHF_LOWER_IL_INJECTED: DWORD = 0x00000002; 649 pub const LLMHF_INJECTED: DWORD = 0x00000001; 650 pub const LLMHF_LOWER_IL_INJECTED: DWORD = 0x00000002; 651 STRUCT!{struct KBDLLHOOKSTRUCT { 652 vkCode: DWORD, 653 scanCode: DWORD, 654 flags: DWORD, 655 time: DWORD, 656 dwExtraInfo: ULONG_PTR, 657 }} 658 pub type LPKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT; 659 pub type PKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT; 660 STRUCT!{struct MSLLHOOKSTRUCT { 661 pt: POINT, 662 mouseData: DWORD, 663 flags: DWORD, 664 time: DWORD, 665 dwExtraInfo: ULONG_PTR, 666 }} 667 pub type LPMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT; 668 pub type PMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT; 669 STRUCT!{struct DEBUGHOOKINFO { 670 idThread: DWORD, 671 idThreadInstaller: DWORD, 672 lParam: LPARAM, 673 wParam: WPARAM, 674 code: c_int, 675 }} 676 pub type PDEBUGHOOKINFO = *mut DEBUGHOOKINFO; 677 pub type NPDEBUGHOOKINFO = *mut DEBUGHOOKINFO; 678 pub type LPDEBUGHOOKINFO = *mut DEBUGHOOKINFO; 679 STRUCT!{struct MOUSEHOOKSTRUCT { 680 pt: POINT, 681 hwnd: HWND, 682 wHitTestCode: UINT, 683 dwExtraInfo: ULONG_PTR, 684 }} 685 pub type LPMOUSEHOOKSTRUCT = *mut MOUSEHOOKSTRUCT; 686 pub type PMOUSEHOOKSTRUCT = *mut MOUSEHOOKSTRUCT; 687 STRUCT!{struct MOUSEHOOKSTRUCTEX { 688 parent: MOUSEHOOKSTRUCT, 689 mouseData: DWORD, 690 }} 691 pub type LPMOUSEHOOKSTRUCTEX = *mut MOUSEHOOKSTRUCTEX; 692 pub type PMOUSEHOOKSTRUCTEX = *mut MOUSEHOOKSTRUCTEX; 693 STRUCT!{struct HARDWAREHOOKSTRUCT { 694 hwnd: HWND, 695 message: UINT, 696 wParam: WPARAM, 697 lParam: LPARAM, 698 }} 699 pub type LPHARDWAREHOOKSTRUCT = *mut HARDWAREHOOKSTRUCT; 700 pub type PHARDWAREHOOKSTRUCT = *mut HARDWAREHOOKSTRUCT; 701 pub const HKL_PREV: HKL = 0 as HKL; 702 pub const HKL_NEXT: HKL = 1 as HKL; 703 pub const KLF_ACTIVATE: UINT = 0x00000001; 704 pub const KLF_SUBSTITUTE_OK: UINT = 0x00000002; 705 pub const KLF_REORDER: UINT = 0x00000008; 706 pub const KLF_REPLACELANG: UINT = 0x00000010; 707 pub const KLF_NOTELLSHELL: UINT = 0x00000080; 708 pub const KLF_SETFORPROCESS: UINT = 0x00000100; 709 pub const KLF_SHIFTLOCK: UINT = 0x00010000; 710 pub const KLF_RESET: UINT = 0x40000000; 711 pub const INPUTLANGCHANGE_SYSCHARSET: WPARAM = 0x0001; 712 pub const INPUTLANGCHANGE_FORWARD: WPARAM = 0x0002; 713 pub const INPUTLANGCHANGE_BACKWARD: WPARAM = 0x0004; 714 pub const KL_NAMELENGTH: usize = 9; 715 extern "system" { 716 pub fn LoadKeyboardLayoutA( 717 pwszKLID: LPCSTR, 718 Flags: DWORD, 719 ) -> HKL; 720 pub fn LoadKeyboardLayoutW( 721 pwszKLID: LPCWSTR, 722 Flags: DWORD, 723 ) -> HKL; 724 pub fn ActivateKeyboardLayout( 725 hkl: HKL, 726 Flags: UINT, 727 ) -> HKL; 728 pub fn ToUnicodeEx( 729 wVirtKey: UINT, 730 wScanCode: UINT, 731 lpKeyState: *const BYTE, 732 pwszBuff: LPWSTR, 733 cchBuff: c_int, 734 wFlags: UINT, 735 dwhkl: HKL, 736 ) -> c_int; 737 pub fn UnloadKeyboardLayout( 738 hkl: HKL, 739 ) -> BOOL; 740 pub fn GetKeyboardLayoutNameA( 741 pwszKLID: LPSTR, 742 ) -> BOOL; 743 pub fn GetKeyboardLayoutNameW( 744 pwszKLID: LPWSTR, 745 ) -> BOOL; 746 pub fn GetKeyboardLayoutList( 747 nBuff: c_int, 748 lpList: *mut HKL, 749 ) -> c_int; 750 pub fn GetKeyboardLayout( 751 idThread: DWORD, 752 ) -> HKL; 753 } 754 STRUCT!{struct MOUSEMOVEPOINT { 755 x: c_int, 756 y: c_int, 757 time: DWORD, 758 dwExtraInfo: ULONG_PTR, 759 }} 760 pub type PMOUSEMOVEPOINT = *mut MOUSEMOVEPOINT; 761 pub type LPMOUSEMOVEPOINT = *mut MOUSEMOVEPOINT; 762 pub const GMMP_USE_DISPLAY_POINTS: DWORD = 1; 763 pub const GMMP_USE_HIGH_RESOLUTION_POINTS: DWORD = 2; 764 extern "system" { 765 pub fn GetMouseMovePointsEx( 766 cbSize: UINT, 767 lppt: LPMOUSEMOVEPOINT, 768 lpptBuf: LPMOUSEMOVEPOINT, 769 nBufPoints: c_int, 770 resolution: DWORD, 771 ) -> c_int; 772 } 773 pub const DESKTOP_READOBJECTS: DWORD = 0x0001; 774 pub const DESKTOP_CREATEWINDOW: DWORD = 0x0002; 775 pub const DESKTOP_CREATEMENU: DWORD = 0x0004; 776 pub const DESKTOP_HOOKCONTROL: DWORD = 0x0008; 777 pub const DESKTOP_JOURNALRECORD: DWORD = 0x0010; 778 pub const DESKTOP_JOURNALPLAYBACK: DWORD = 0x0020; 779 pub const DESKTOP_ENUMERATE: DWORD = 0x0040; 780 pub const DESKTOP_WRITEOBJECTS: DWORD = 0x0080; 781 pub const DESKTOP_SWITCHDESKTOP: DWORD = 0x0100; 782 pub const DF_ALLOWOTHERACCOUNTHOOK: DWORD = 0x0001; 783 extern "system" { 784 pub fn CreateDesktopA( 785 lpszDesktop: LPCSTR, 786 lpszDevice: LPCSTR, 787 pDevmode: *mut DEVMODEA, 788 dwFlags: DWORD, 789 dwDesiredAccess: ACCESS_MASK, 790 lpsa: LPSECURITY_ATTRIBUTES, 791 ) -> HDESK; 792 pub fn CreateDesktopW( 793 lpszDesktop: LPCWSTR, 794 lpszDevice: LPCWSTR, 795 pDevmode: *mut DEVMODEW, 796 dwFlags: DWORD, 797 dwDesiredAccess: ACCESS_MASK, 798 lpsa: LPSECURITY_ATTRIBUTES, 799 ) -> HDESK; 800 pub fn CreateDesktopExA( 801 lpszDesktop: LPCSTR, 802 lpszDevice: LPCSTR, 803 pDevmode: *mut DEVMODEA, 804 dwFlags: DWORD, 805 dwDesiredAccess: ACCESS_MASK, 806 lpsa: LPSECURITY_ATTRIBUTES, 807 ulHeapSize: ULONG, 808 pvoid: PVOID, 809 ) -> HDESK; 810 pub fn CreateDesktopExW( 811 lpszDesktop: LPCWSTR, 812 lpszDevice: LPCWSTR, 813 pDevmode: *mut DEVMODEW, 814 dwFlags: DWORD, 815 dwDesiredAccess: ACCESS_MASK, 816 lpsa: LPSECURITY_ATTRIBUTES, 817 ulHeapSize: ULONG, 818 pvoid: PVOID, 819 ) -> HDESK; 820 pub fn OpenDesktopA( 821 lpszDesktop: LPCSTR, 822 dwFlags: DWORD, 823 fInherit: BOOL, 824 dwDesiredAccess: ACCESS_MASK, 825 ) -> HDESK; 826 pub fn OpenDesktopW( 827 lpszDesktop: LPCWSTR, 828 dwFlags: DWORD, 829 fInherit: BOOL, 830 dwDesiredAccess: ACCESS_MASK, 831 ) -> HDESK; 832 pub fn OpenInputDesktop( 833 dwFlags: DWORD, 834 fInherit: BOOL, 835 dwDesiredAccess: ACCESS_MASK, 836 ) -> HDESK; 837 pub fn EnumDesktopsA( 838 hwinsta: HWINSTA, 839 lpEnumFunc: DESKTOPENUMPROCA, 840 lParam: LPARAM, 841 ) -> BOOL; 842 pub fn EnumDesktopsW( 843 hwinsta: HWINSTA, 844 lpEnumFunc: DESKTOPENUMPROCW, 845 lParam: LPARAM, 846 ) -> BOOL; 847 pub fn EnumDesktopWindows( 848 hDesktop: HDESK, 849 lpfn: WNDENUMPROC, 850 lParam: LPARAM, 851 ) -> BOOL; 852 pub fn SwitchDesktop( 853 hDesktop: HDESK, 854 ) -> BOOL; 855 pub fn SetThreadDesktop( 856 hDesktop: HDESK, 857 ) -> BOOL; 858 pub fn CloseDesktop( 859 hDesktop: HDESK, 860 ) -> BOOL; 861 pub fn GetThreadDesktop( 862 dwThreadId: DWORD, 863 ) -> HDESK; 864 } 865 pub const WINSTA_ENUMDESKTOPS: DWORD = 0x0001; 866 pub const WINSTA_READATTRIBUTES: DWORD = 0x0002; 867 pub const WINSTA_ACCESSCLIPBOARD: DWORD = 0x0004; 868 pub const WINSTA_CREATEDESKTOP: DWORD = 0x0008; 869 pub const WINSTA_WRITEATTRIBUTES: DWORD = 0x0010; 870 pub const WINSTA_ACCESSGLOBALATOMS: DWORD = 0x0020; 871 pub const WINSTA_EXITWINDOWS: DWORD = 0x0040; 872 pub const WINSTA_ENUMERATE: DWORD = 0x0100; 873 pub const WINSTA_READSCREEN: DWORD = 0x0200; 874 pub const WINSTA_ALL_ACCESS: DWORD = WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES 875 | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES 876 | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN; 877 pub const CWF_CREATE_ONLY: DWORD = 0x00000001; 878 pub const WSF_VISIBLE: DWORD = 0x0001; 879 extern "system" { 880 pub fn CreateWindowStationA( 881 lpwinsta: LPCSTR, 882 dwFlags: DWORD, 883 dwDesiredAccess: ACCESS_MASK, 884 lpsa: LPSECURITY_ATTRIBUTES, 885 ) -> HWINSTA; 886 pub fn CreateWindowStationW( 887 lpwinsta: LPCWSTR, 888 dwFlags: DWORD, 889 dwDesiredAccess: ACCESS_MASK, 890 lpsa: LPSECURITY_ATTRIBUTES, 891 ) -> HWINSTA; 892 pub fn OpenWindowStationA( 893 lpszWinSta: LPCSTR, 894 fInherit: BOOL, 895 dwDesiredAccess: ACCESS_MASK, 896 ) -> HWINSTA; 897 pub fn OpenWindowStationW( 898 lpszWinSta: LPCWSTR, 899 fInherit: BOOL, 900 dwDesiredAccess: ACCESS_MASK, 901 ) -> HWINSTA; 902 pub fn EnumWindowStationsA( 903 lpEnumFunc: WINSTAENUMPROCA, 904 lParam: LPARAM, 905 ) -> BOOL; 906 pub fn EnumWindowStationsW( 907 lpEnumFunc: WINSTAENUMPROCW, 908 lParam: LPARAM, 909 ) -> BOOL; 910 pub fn CloseWindowStation( 911 hWinSta: HWINSTA, 912 ) -> BOOL; 913 pub fn SetProcessWindowStation( 914 hWinSta: HWINSTA, 915 ) -> BOOL; 916 pub fn GetProcessWindowStation() -> HWINSTA; 917 pub fn SetUserObjectSecurity( 918 hObj: HANDLE, 919 pSIRequested: PSECURITY_INFORMATION, 920 pSID: PSECURITY_DESCRIPTOR, 921 ) -> BOOL; 922 pub fn GetUserObjectSecurity( 923 hObj: HANDLE, 924 pSIRequested: PSECURITY_INFORMATION, 925 pSID: PSECURITY_DESCRIPTOR, 926 nLength: DWORD, 927 lpnLengthNeeded: LPDWORD, 928 ) -> BOOL; 929 } 930 pub const UOI_FLAGS: DWORD = 1; 931 pub const UOI_NAME: DWORD = 2; 932 pub const UOI_TYPE: DWORD = 3; 933 pub const UOI_USER_SID: DWORD = 4; 934 pub const UOI_HEAPSIZE: DWORD = 5; 935 pub const UOI_IO: DWORD = 6; 936 pub const UOI_TIMERPROC_EXCEPTION_SUPPRESSION: DWORD = 7; 937 STRUCT!{struct USEROBJECTFLAGS { 938 fInherit: BOOL, 939 fReserved: BOOL, 940 dwFlags: DWORD, 941 }} 942 pub type PUSEROBJECTFLAGS = *mut USEROBJECTFLAGS; 943 extern "system" { 944 pub fn GetUserObjectInformationA( 945 hObj: HANDLE, 946 nIndex: c_int, 947 pvInfo: PVOID, 948 nLength: DWORD, 949 lpnLengthNeeded: LPDWORD, 950 ) -> BOOL; 951 pub fn GetUserObjectInformationW( 952 hObj: HANDLE, 953 nIndex: c_int, 954 pvInfo: PVOID, 955 nLength: DWORD, 956 lpnLengthNeeded: LPDWORD, 957 ) -> BOOL; 958 pub fn SetUserObjectInformationA( 959 hObj: HANDLE, 960 nIndex: c_int, 961 pvInfo: PVOID, 962 nLength: DWORD, 963 ) -> BOOL; 964 pub fn SetUserObjectInformationW( 965 hObj: HANDLE, 966 nIndex: c_int, 967 pvInfo: PVOID, 968 nLength: DWORD, 969 ) -> BOOL; 970 } 971 STRUCT!{struct WNDCLASSEXA { 972 cbSize: UINT, 973 style: UINT, 974 lpfnWndProc: WNDPROC, 975 cbClsExtra: c_int, 976 cbWndExtra: c_int, 977 hInstance: HINSTANCE, 978 hIcon: HICON, 979 hCursor: HCURSOR, 980 hbrBackground: HBRUSH, 981 lpszMenuName: LPCSTR, 982 lpszClassName: LPCSTR, 983 hIconSm: HICON, 984 }} 985 pub type PWNDCLASSEXA = *mut WNDCLASSEXA; 986 pub type NPWNDCLASSEXA = *mut WNDCLASSEXA; 987 pub type LPWNDCLASSEXA = *mut WNDCLASSEXA; 988 STRUCT!{struct WNDCLASSEXW { 989 cbSize: UINT, 990 style: UINT, 991 lpfnWndProc: WNDPROC, 992 cbClsExtra: c_int, 993 cbWndExtra: c_int, 994 hInstance: HINSTANCE, 995 hIcon: HICON, 996 hCursor: HCURSOR, 997 hbrBackground: HBRUSH, 998 lpszMenuName: LPCWSTR, 999 lpszClassName: LPCWSTR, 1000 hIconSm: HICON, 1001 }} 1002 pub type PWNDCLASSEXW = *mut WNDCLASSEXW; 1003 pub type NPWNDCLASSEXW = *mut WNDCLASSEXW; 1004 pub type LPWNDCLASSEXW = *mut WNDCLASSEXW; 1005 STRUCT!{struct WNDCLASSA { 1006 style: UINT, 1007 lpfnWndProc: WNDPROC, 1008 cbClsExtra: c_int, 1009 cbWndExtra: c_int, 1010 hInstance: HINSTANCE, 1011 hIcon: HICON, 1012 hCursor: HCURSOR, 1013 hbrBackground: HBRUSH, 1014 lpszMenuName: LPCSTR, 1015 lpszClassName: LPCSTR, 1016 }} 1017 pub type PWNDCLASSA = *mut WNDCLASSA; 1018 pub type NPWNDCLASSA = *mut WNDCLASSA; 1019 pub type LPWNDCLASSA = *mut WNDCLASSA; 1020 STRUCT!{struct WNDCLASSW { 1021 style: UINT, 1022 lpfnWndProc: WNDPROC, 1023 cbClsExtra: c_int, 1024 cbWndExtra: c_int, 1025 hInstance: HINSTANCE, 1026 hIcon: HICON, 1027 hCursor: HCURSOR, 1028 hbrBackground: HBRUSH, 1029 lpszMenuName: LPCWSTR, 1030 lpszClassName: LPCWSTR, 1031 }} 1032 pub type PWNDCLASSW = *mut WNDCLASSW; 1033 pub type NPWNDCLASSW = *mut WNDCLASSW; 1034 pub type LPWNDCLASSW = *mut WNDCLASSW; 1035 extern "system" { 1036 pub fn IsHungAppWindow( 1037 hwnd: HWND, 1038 ) -> BOOL; 1039 pub fn DisableProcessWindowsGhosting(); 1040 } 1041 STRUCT!{struct MSG { 1042 hwnd: HWND, 1043 message: UINT, 1044 wParam: WPARAM, 1045 lParam: LPARAM, 1046 time: DWORD, 1047 pt: POINT, 1048 }} 1049 pub type PMSG = *mut MSG; 1050 pub type NPMSG = *mut MSG; 1051 pub type LPMSG = *mut MSG; 1052 //POINTSTOPOINT 1053 //POINTTOPOINTS 1054 //MAKEWPARAM 1055 //MAKELPARAM 1056 //MAKELRESULT 1057 pub const GWL_WNDPROC: c_int = -4; 1058 pub const GWL_HINSTANCE: c_int = -6; 1059 pub const GWL_HWNDPARENT: c_int = -8; 1060 pub const GWL_STYLE: c_int = -16; 1061 pub const GWL_EXSTYLE: c_int = -20; 1062 pub const GWL_USERDATA: c_int = -21; 1063 pub const GWL_ID: c_int = -12; 1064 pub const GWLP_WNDPROC: c_int = -4; 1065 pub const GWLP_HINSTANCE: c_int = -6; 1066 pub const GWLP_HWNDPARENT: c_int = -8; 1067 pub const GWLP_USERDATA: c_int = -21; 1068 pub const GWLP_ID: c_int = -12; 1069 pub const GCL_MENUNAME: c_int = -8; 1070 pub const GCL_HBRBACKGROUND: c_int = -10; 1071 pub const GCL_HCURSOR: c_int = -12; 1072 pub const GCL_HICON: c_int = -14; 1073 pub const GCL_HMODULE: c_int = -16; 1074 pub const GCL_CBWNDEXTRA: c_int = -18; 1075 pub const GCL_CBCLSEXTRA: c_int = -20; 1076 pub const GCL_WNDPROC: c_int = -24; 1077 pub const GCL_STYLE: c_int = -26; 1078 pub const GCW_ATOM: c_int = -32; 1079 pub const GCL_HICONSM: c_int = -34; 1080 pub const GCLP_MENUNAME: c_int = -8; 1081 pub const GCLP_HBRBACKGROUND: c_int = -10; 1082 pub const GCLP_HCURSOR: c_int = -12; 1083 pub const GCLP_HICON: c_int = -14; 1084 pub const GCLP_HMODULE: c_int = -16; 1085 pub const GCLP_WNDPROC: c_int = -24; 1086 pub const GCLP_HICONSM: c_int = -34; 1087 pub const WM_NULL: UINT = 0x0000; 1088 pub const WM_CREATE: UINT = 0x0001; 1089 pub const WM_DESTROY: UINT = 0x0002; 1090 pub const WM_MOVE: UINT = 0x0003; 1091 pub const WM_SIZE: UINT = 0x0005; 1092 pub const WM_ACTIVATE: UINT = 0x0006; 1093 pub const WA_INACTIVE: WORD = 0; 1094 pub const WA_ACTIVE: WORD = 1; 1095 pub const WA_CLICKACTIVE: WORD = 2; 1096 pub const WM_SETFOCUS: UINT = 0x0007; 1097 pub const WM_KILLFOCUS: UINT = 0x0008; 1098 pub const WM_ENABLE: UINT = 0x000A; 1099 pub const WM_SETREDRAW: UINT = 0x000B; 1100 pub const WM_SETTEXT: UINT = 0x000C; 1101 pub const WM_GETTEXT: UINT = 0x000D; 1102 pub const WM_GETTEXTLENGTH: UINT = 0x000E; 1103 pub const WM_PAINT: UINT = 0x000F; 1104 pub const WM_CLOSE: UINT = 0x0010; 1105 pub const WM_QUERYENDSESSION: UINT = 0x0011; 1106 pub const WM_QUERYOPEN: UINT = 0x0013; 1107 pub const WM_ENDSESSION: UINT = 0x0016; 1108 pub const WM_QUIT: UINT = 0x0012; 1109 pub const WM_ERASEBKGND: UINT = 0x0014; 1110 pub const WM_SYSCOLORCHANGE: UINT = 0x0015; 1111 pub const WM_SHOWWINDOW: UINT = 0x0018; 1112 pub const WM_WININICHANGE: UINT = 0x001A; 1113 pub const WM_SETTINGCHANGE: UINT = WM_WININICHANGE; 1114 pub const WM_DEVMODECHANGE: UINT = 0x001B; 1115 pub const WM_ACTIVATEAPP: UINT = 0x001C; 1116 pub const WM_FONTCHANGE: UINT = 0x001D; 1117 pub const WM_TIMECHANGE: UINT = 0x001E; 1118 pub const WM_CANCELMODE: UINT = 0x001F; 1119 pub const WM_SETCURSOR: UINT = 0x0020; 1120 pub const WM_MOUSEACTIVATE: UINT = 0x0021; 1121 pub const WM_CHILDACTIVATE: UINT = 0x0022; 1122 pub const WM_QUEUESYNC: UINT = 0x0023; 1123 pub const WM_GETMINMAXINFO: UINT = 0x0024; 1124 STRUCT!{struct MINMAXINFO { 1125 ptReserved: POINT, 1126 ptMaxSize: POINT, 1127 ptMaxPosition: POINT, 1128 ptMinTrackSize: POINT, 1129 ptMaxTrackSize: POINT, 1130 }} 1131 pub type PMINMAXINFO = *mut MINMAXINFO; 1132 pub type LPMINMAXINFO = *mut MINMAXINFO; 1133 pub const WM_PAINTICON: UINT = 0x0026; 1134 pub const WM_ICONERASEBKGND: UINT = 0x0027; 1135 pub const WM_NEXTDLGCTL: UINT = 0x0028; 1136 pub const WM_SPOOLERSTATUS: UINT = 0x002A; 1137 pub const WM_DRAWITEM: UINT = 0x002B; 1138 pub const WM_MEASUREITEM: UINT = 0x002C; 1139 pub const WM_DELETEITEM: UINT = 0x002D; 1140 pub const WM_VKEYTOITEM: UINT = 0x002E; 1141 pub const WM_CHARTOITEM: UINT = 0x002F; 1142 pub const WM_SETFONT: UINT = 0x0030; 1143 pub const WM_GETFONT: UINT = 0x0031; 1144 pub const WM_SETHOTKEY: UINT = 0x0032; 1145 pub const WM_GETHOTKEY: UINT = 0x0033; 1146 pub const WM_QUERYDRAGICON: UINT = 0x0037; 1147 pub const WM_COMPAREITEM: UINT = 0x0039; 1148 pub const WM_GETOBJECT: UINT = 0x003D; 1149 pub const WM_COMPACTING: UINT = 0x0041; 1150 pub const WM_COMMNOTIFY: UINT = 0x0044; 1151 pub const WM_WINDOWPOSCHANGING: UINT = 0x0046; 1152 pub const WM_WINDOWPOSCHANGED: UINT = 0x0047; 1153 pub const WM_POWER: UINT = 0x0048; 1154 pub const PWR_OK: WPARAM = 1; 1155 pub const PWR_FAIL: WPARAM = -1isize as usize; 1156 pub const PWR_SUSPENDREQUEST: WPARAM = 1; 1157 pub const PWR_SUSPENDRESUME: WPARAM = 2; 1158 pub const PWR_CRITICALRESUME: WPARAM = 3; 1159 pub const WM_COPYDATA: UINT = 0x004A; 1160 pub const WM_CANCELJOURNAL: UINT = 0x004B; 1161 STRUCT!{struct COPYDATASTRUCT { 1162 dwData: ULONG_PTR, 1163 cbData: DWORD, 1164 lpData: PVOID, 1165 }} 1166 pub type PCOPYDATASTRUCT = *mut COPYDATASTRUCT; 1167 STRUCT!{struct MDINEXTMENU { 1168 hmenuIn: HMENU, 1169 hmenuNext: HMENU, 1170 hwndNext: HWND, 1171 }} 1172 pub type PMDINEXTMENU = *mut MDINEXTMENU; 1173 pub type LPMDINEXTMENU = *mut MDINEXTMENU; 1174 pub const WM_NOTIFY: UINT = 0x004E; 1175 pub const WM_INPUTLANGCHANGEREQUEST: UINT = 0x0050; 1176 pub const WM_INPUTLANGCHANGE: UINT = 0x0051; 1177 pub const WM_TCARD: UINT = 0x0052; 1178 pub const WM_HELP: UINT = 0x0053; 1179 pub const WM_USERCHANGED: UINT = 0x0054; 1180 pub const WM_NOTIFYFORMAT: UINT = 0x0055; 1181 pub const NFR_ANSI: LRESULT = 1; 1182 pub const NFR_UNICODE: LRESULT = 2; 1183 pub const NF_QUERY: LPARAM = 3; 1184 pub const NF_REQUERY: LPARAM = 4; 1185 pub const WM_CONTEXTMENU: UINT = 0x007B; 1186 pub const WM_STYLECHANGING: UINT = 0x007C; 1187 pub const WM_STYLECHANGED: UINT = 0x007D; 1188 pub const WM_DISPLAYCHANGE: UINT = 0x007E; 1189 pub const WM_GETICON: UINT = 0x007F; 1190 pub const WM_SETICON: UINT = 0x0080; 1191 pub const WM_NCCREATE: UINT = 0x0081; 1192 pub const WM_NCDESTROY: UINT = 0x0082; 1193 pub const WM_NCCALCSIZE: UINT = 0x0083; 1194 pub const WM_NCHITTEST: UINT = 0x0084; 1195 pub const WM_NCPAINT: UINT = 0x0085; 1196 pub const WM_NCACTIVATE: UINT = 0x0086; 1197 pub const WM_GETDLGCODE: UINT = 0x0087; 1198 pub const WM_SYNCPAINT: UINT = 0x0088; 1199 pub const WM_NCMOUSEMOVE: UINT = 0x00A0; 1200 pub const WM_NCLBUTTONDOWN: UINT = 0x00A1; 1201 pub const WM_NCLBUTTONUP: UINT = 0x00A2; 1202 pub const WM_NCLBUTTONDBLCLK: UINT = 0x00A3; 1203 pub const WM_NCRBUTTONDOWN: UINT = 0x00A4; 1204 pub const WM_NCRBUTTONUP: UINT = 0x00A5; 1205 pub const WM_NCRBUTTONDBLCLK: UINT = 0x00A6; 1206 pub const WM_NCMBUTTONDOWN: UINT = 0x00A7; 1207 pub const WM_NCMBUTTONUP: UINT = 0x00A8; 1208 pub const WM_NCMBUTTONDBLCLK: UINT = 0x00A9; 1209 pub const WM_NCXBUTTONDOWN: UINT = 0x00AB; 1210 pub const WM_NCXBUTTONUP: UINT = 0x00AC; 1211 pub const WM_NCXBUTTONDBLCLK: UINT = 0x00AD; 1212 pub const WM_INPUT_DEVICE_CHANGE: UINT = 0x00FE; 1213 pub const WM_INPUT: UINT = 0x00FF; 1214 pub const WM_KEYFIRST: UINT = 0x0100; 1215 pub const WM_KEYDOWN: UINT = 0x0100; 1216 pub const WM_KEYUP: UINT = 0x0101; 1217 pub const WM_CHAR: UINT = 0x0102; 1218 pub const WM_DEADCHAR: UINT = 0x0103; 1219 pub const WM_SYSKEYDOWN: UINT = 0x0104; 1220 pub const WM_SYSKEYUP: UINT = 0x0105; 1221 pub const WM_SYSCHAR: UINT = 0x0106; 1222 pub const WM_SYSDEADCHAR: UINT = 0x0107; 1223 pub const WM_UNICHAR: UINT = 0x0109; 1224 pub const WM_KEYLAST: UINT = 0x0109; 1225 pub const UNICODE_NOCHAR: WPARAM = 0xFFFF; 1226 pub const WM_IME_STARTCOMPOSITION: UINT = 0x010D; 1227 pub const WM_IME_ENDCOMPOSITION: UINT = 0x010E; 1228 pub const WM_IME_COMPOSITION: UINT = 0x010F; 1229 pub const WM_IME_KEYLAST: UINT = 0x010F; 1230 pub const WM_INITDIALOG: UINT = 0x0110; 1231 pub const WM_COMMAND: UINT = 0x0111; 1232 pub const WM_SYSCOMMAND: UINT = 0x0112; 1233 pub const WM_TIMER: UINT = 0x0113; 1234 pub const WM_HSCROLL: UINT = 0x0114; 1235 pub const WM_VSCROLL: UINT = 0x0115; 1236 pub const WM_INITMENU: UINT = 0x0116; 1237 pub const WM_INITMENUPOPUP: UINT = 0x0117; 1238 pub const WM_GESTURE: UINT = 0x0119; 1239 pub const WM_GESTURENOTIFY: UINT = 0x011A; 1240 pub const WM_MENUSELECT: UINT = 0x011F; 1241 pub const WM_MENUCHAR: UINT = 0x0120; 1242 pub const WM_ENTERIDLE: UINT = 0x0121; 1243 pub const WM_MENURBUTTONUP: UINT = 0x0122; 1244 pub const WM_MENUDRAG: UINT = 0x0123; 1245 pub const WM_MENUGETOBJECT: UINT = 0x0124; 1246 pub const WM_UNINITMENUPOPUP: UINT = 0x0125; 1247 pub const WM_MENUCOMMAND: UINT = 0x0126; 1248 pub const WM_CHANGEUISTATE: UINT = 0x0127; 1249 pub const WM_UPDATEUISTATE: UINT = 0x0128; 1250 pub const WM_QUERYUISTATE: UINT = 0x0129; 1251 pub const UIS_SET: WORD = 1; 1252 pub const UIS_CLEAR: WORD = 2; 1253 pub const UIS_INITIALIZE: WORD = 3; 1254 pub const UISF_HIDEFOCUS: WORD = 0x1; 1255 pub const UISF_HIDEACCEL: WORD = 0x2; 1256 pub const UISF_ACTIVE: WORD = 0x4; 1257 pub const WM_CTLCOLORMSGBOX: UINT = 0x0132; 1258 pub const WM_CTLCOLOREDIT: UINT = 0x0133; 1259 pub const WM_CTLCOLORLISTBOX: UINT = 0x0134; 1260 pub const WM_CTLCOLORBTN: UINT = 0x0135; 1261 pub const WM_CTLCOLORDLG: UINT = 0x0136; 1262 pub const WM_CTLCOLORSCROLLBAR: UINT = 0x0137; 1263 pub const WM_CTLCOLORSTATIC: UINT = 0x0138; 1264 pub const MN_GETHMENU: UINT = 0x01E1; 1265 pub const WM_MOUSEFIRST: UINT = 0x0200; 1266 pub const WM_MOUSEMOVE: UINT = 0x0200; 1267 pub const WM_LBUTTONDOWN: UINT = 0x0201; 1268 pub const WM_LBUTTONUP: UINT = 0x0202; 1269 pub const WM_LBUTTONDBLCLK: UINT = 0x0203; 1270 pub const WM_RBUTTONDOWN: UINT = 0x0204; 1271 pub const WM_RBUTTONUP: UINT = 0x0205; 1272 pub const WM_RBUTTONDBLCLK: UINT = 0x0206; 1273 pub const WM_MBUTTONDOWN: UINT = 0x0207; 1274 pub const WM_MBUTTONUP: UINT = 0x0208; 1275 pub const WM_MBUTTONDBLCLK: UINT = 0x0209; 1276 pub const WM_MOUSEWHEEL: UINT = 0x020A; 1277 pub const WM_XBUTTONDOWN: UINT = 0x020B; 1278 pub const WM_XBUTTONUP: UINT = 0x020C; 1279 pub const WM_XBUTTONDBLCLK: UINT = 0x020D; 1280 pub const WM_MOUSEHWHEEL: UINT = 0x020E; 1281 pub const WM_MOUSELAST: UINT = 0x020E; 1282 pub const WHEEL_DELTA: c_short = 120; 1283 #[inline] 1284 pub fn GET_WHEEL_DELTA_WPARAM(wParam: WPARAM) -> c_short { 1285 HIWORD(wParam as DWORD) as c_short 1286 } 1287 pub const WHEEL_PAGESCROLL: UINT = UINT_MAX; 1288 #[inline] 1289 pub fn GET_KEYSTATE_WPARAM(wParam: WPARAM) -> WORD { 1290 LOWORD(wParam as DWORD) 1291 } 1292 #[inline] 1293 pub fn GET_NCHITTEST_WPARAM(wParam: WPARAM) -> c_short { 1294 LOWORD(wParam as DWORD) as c_short 1295 } 1296 #[inline] 1297 pub fn GET_XBUTTON_WPARAM(wParam: WPARAM) -> WORD { 1298 HIWORD(wParam as DWORD) 1299 } 1300 pub const XBUTTON1: WORD = 0x0001; 1301 pub const XBUTTON2: WORD = 0x0002; 1302 pub const WM_PARENTNOTIFY: UINT = 0x0210; 1303 pub const WM_ENTERMENULOOP: UINT = 0x0211; 1304 pub const WM_EXITMENULOOP: UINT = 0x0212; 1305 pub const WM_NEXTMENU: UINT = 0x0213; 1306 pub const WM_SIZING: UINT = 0x0214; 1307 pub const WM_CAPTURECHANGED: UINT = 0x0215; 1308 pub const WM_MOVING: UINT = 0x0216; 1309 pub const WM_POWERBROADCAST: UINT = 0x0218; 1310 pub const PBT_APMQUERYSUSPEND: WPARAM = 0x0000; 1311 pub const PBT_APMQUERYSTANDBY: WPARAM = 0x0001; 1312 pub const PBT_APMQUERYSUSPENDFAILED: WPARAM = 0x0002; 1313 pub const PBT_APMQUERYSTANDBYFAILED: WPARAM = 0x0003; 1314 pub const PBT_APMSUSPEND: WPARAM = 0x0004; 1315 pub const PBT_APMSTANDBY: WPARAM = 0x0005; 1316 pub const PBT_APMRESUMECRITICAL: WPARAM = 0x0006; 1317 pub const PBT_APMRESUMESUSPEND: WPARAM = 0x0007; 1318 pub const PBT_APMRESUMESTANDBY: WPARAM = 0x0008; 1319 pub const PBTF_APMRESUMEFROMFAILURE: LPARAM = 0x00000001; 1320 pub const PBT_APMBATTERYLOW: WPARAM = 0x0009; 1321 pub const PBT_APMPOWERSTATUSCHANGE: WPARAM = 0x000A; 1322 pub const PBT_APMOEMEVENT: WPARAM = 0x000B; 1323 pub const PBT_APMRESUMEAUTOMATIC: WPARAM = 0x0012; 1324 pub const PBT_POWERSETTINGCHANGE: WPARAM = 0x8013; 1325 STRUCT!{struct POWERBROADCAST_SETTING { 1326 PowerSetting: GUID, 1327 DataLength: DWORD, 1328 Data: [UCHAR; 1], 1329 }} 1330 pub type PPOWERBROADCAST_SETTING = *mut POWERBROADCAST_SETTING; 1331 pub const WM_DEVICECHANGE: UINT = 0x0219; 1332 pub const WM_MDICREATE: UINT = 0x0220; 1333 pub const WM_MDIDESTROY: UINT = 0x0221; 1334 pub const WM_MDIACTIVATE: UINT = 0x0222; 1335 pub const WM_MDIRESTORE: UINT = 0x0223; 1336 pub const WM_MDINEXT: UINT = 0x0224; 1337 pub const WM_MDIMAXIMIZE: UINT = 0x0225; 1338 pub const WM_MDITILE: UINT = 0x0226; 1339 pub const WM_MDICASCADE: UINT = 0x0227; 1340 pub const WM_MDIICONARRANGE: UINT = 0x0228; 1341 pub const WM_MDIGETACTIVE: UINT = 0x0229; 1342 pub const WM_MDISETMENU: UINT = 0x0230; 1343 pub const WM_ENTERSIZEMOVE: UINT = 0x0231; 1344 pub const WM_EXITSIZEMOVE: UINT = 0x0232; 1345 pub const WM_DROPFILES: UINT = 0x0233; 1346 pub const WM_MDIREFRESHMENU: UINT = 0x0234; 1347 pub const WM_POINTERDEVICECHANGE: UINT = 0x238; 1348 pub const WM_POINTERDEVICEINRANGE: UINT = 0x239; 1349 pub const WM_POINTERDEVICEOUTOFRANGE: UINT = 0x23A; 1350 pub const WM_TOUCH: UINT = 0x0240; 1351 pub const WM_NCPOINTERUPDATE: UINT = 0x0241; 1352 pub const WM_NCPOINTERDOWN: UINT = 0x0242; 1353 pub const WM_NCPOINTERUP: UINT = 0x0243; 1354 pub const WM_POINTERUPDATE: UINT = 0x0245; 1355 pub const WM_POINTERDOWN: UINT = 0x0246; 1356 pub const WM_POINTERUP: UINT = 0x0247; 1357 pub const WM_POINTERENTER: UINT = 0x0249; 1358 pub const WM_POINTERLEAVE: UINT = 0x024A; 1359 pub const WM_POINTERACTIVATE: UINT = 0x024B; 1360 pub const WM_POINTERCAPTURECHANGED: UINT = 0x024C; 1361 pub const WM_TOUCHHITTESTING: UINT = 0x024D; 1362 pub const WM_POINTERWHEEL: UINT = 0x024E; 1363 pub const WM_POINTERHWHEEL: UINT = 0x024F; 1364 pub const DM_POINTERHITTEST: UINT = 0x0250; 1365 pub const WM_POINTERROUTEDTO: UINT = 0x0251; 1366 pub const WM_POINTERROUTEDAWAY: UINT = 0x0252; 1367 pub const WM_POINTERROUTEDRELEASED: UINT = 0x0253; 1368 pub const WM_IME_SETCONTEXT: UINT = 0x0281; 1369 pub const WM_IME_NOTIFY: UINT = 0x0282; 1370 pub const WM_IME_CONTROL: UINT = 0x0283; 1371 pub const WM_IME_COMPOSITIONFULL: UINT = 0x0284; 1372 pub const WM_IME_SELECT: UINT = 0x0285; 1373 pub const WM_IME_CHAR: UINT = 0x0286; 1374 pub const WM_IME_REQUEST: UINT = 0x0288; 1375 pub const WM_IME_KEYDOWN: UINT = 0x0290; 1376 pub const WM_IME_KEYUP: UINT = 0x0291; 1377 pub const WM_MOUSEHOVER: UINT = 0x02A1; 1378 pub const WM_MOUSELEAVE: UINT = 0x02A3; 1379 pub const WM_NCMOUSEHOVER: UINT = 0x02A0; 1380 pub const WM_NCMOUSELEAVE: UINT = 0x02A2; 1381 pub const WM_WTSSESSION_CHANGE: UINT = 0x02B1; 1382 pub const WM_TABLET_FIRST: UINT = 0x02c0; 1383 pub const WM_TABLET_LAST: UINT = 0x02df; 1384 pub const WM_DPICHANGED: UINT = 0x02E0; 1385 pub const WM_DPICHANGED_BEFOREPARENT: UINT = 0x02E2; 1386 pub const WM_DPICHANGED_AFTERPARENT: UINT = 0x02E3; 1387 pub const WM_GETDPISCALEDSIZE: UINT = 0x02E4; 1388 pub const WM_CUT: UINT = 0x0300; 1389 pub const WM_COPY: UINT = 0x0301; 1390 pub const WM_PASTE: UINT = 0x0302; 1391 pub const WM_CLEAR: UINT = 0x0303; 1392 pub const WM_UNDO: UINT = 0x0304; 1393 pub const WM_RENDERFORMAT: UINT = 0x0305; 1394 pub const WM_RENDERALLFORMATS: UINT = 0x0306; 1395 pub const WM_DESTROYCLIPBOARD: UINT = 0x0307; 1396 pub const WM_DRAWCLIPBOARD: UINT = 0x0308; 1397 pub const WM_PAINTCLIPBOARD: UINT = 0x0309; 1398 pub const WM_VSCROLLCLIPBOARD: UINT = 0x030A; 1399 pub const WM_SIZECLIPBOARD: UINT = 0x030B; 1400 pub const WM_ASKCBFORMATNAME: UINT = 0x030C; 1401 pub const WM_CHANGECBCHAIN: UINT = 0x030D; 1402 pub const WM_HSCROLLCLIPBOARD: UINT = 0x030E; 1403 pub const WM_QUERYNEWPALETTE: UINT = 0x030F; 1404 pub const WM_PALETTEISCHANGING: UINT = 0x0310; 1405 pub const WM_PALETTECHANGED: UINT = 0x0311; 1406 pub const WM_HOTKEY: UINT = 0x0312; 1407 pub const WM_PRINT: UINT = 0x0317; 1408 pub const WM_PRINTCLIENT: UINT = 0x0318; 1409 pub const WM_APPCOMMAND: UINT = 0x0319; 1410 pub const WM_THEMECHANGED: UINT = 0x031A; 1411 pub const WM_CLIPBOARDUPDATE: UINT = 0x031D; 1412 pub const WM_DWMCOMPOSITIONCHANGED: UINT = 0x031E; 1413 pub const WM_DWMNCRENDERINGCHANGED: UINT = 0x031F; 1414 pub const WM_DWMCOLORIZATIONCOLORCHANGED: UINT = 0x0320; 1415 pub const WM_DWMWINDOWMAXIMIZEDCHANGE: UINT = 0x0321; 1416 pub const WM_DWMSENDICONICTHUMBNAIL: UINT = 0x0323; 1417 pub const WM_DWMSENDICONICLIVEPREVIEWBITMAP: UINT = 0x0326; 1418 pub const WM_GETTITLEBARINFOEX: UINT = 0x033F; 1419 pub const WM_HANDHELDFIRST: UINT = 0x0358; 1420 pub const WM_HANDHELDLAST: UINT = 0x035F; 1421 pub const WM_AFXFIRST: UINT = 0x0360; 1422 pub const WM_AFXLAST: UINT = 0x037F; 1423 pub const WM_PENWINFIRST: UINT = 0x0380; 1424 pub const WM_PENWINLAST: UINT = 0x038F; 1425 pub const WM_APP: UINT = 0x8000; 1426 pub const WM_USER: UINT = 0x0400; 1427 pub const WMSZ_LEFT: UINT = 1; 1428 pub const WMSZ_RIGHT: UINT = 2; 1429 pub const WMSZ_TOP: UINT = 3; 1430 pub const WMSZ_TOPLEFT: UINT = 4; 1431 pub const WMSZ_TOPRIGHT: UINT = 5; 1432 pub const WMSZ_BOTTOM: UINT = 6; 1433 pub const WMSZ_BOTTOMLEFT: UINT = 7; 1434 pub const WMSZ_BOTTOMRIGHT: UINT = 8; 1435 pub const HTERROR: LRESULT = -2; 1436 pub const HTTRANSPARENT: LRESULT = -1; 1437 pub const HTNOWHERE: LRESULT = 0; 1438 pub const HTCLIENT: LRESULT = 1; 1439 pub const HTCAPTION: LRESULT = 2; 1440 pub const HTSYSMENU: LRESULT = 3; 1441 pub const HTGROWBOX: LRESULT = 4; 1442 pub const HTSIZE: LRESULT = HTGROWBOX; 1443 pub const HTMENU: LRESULT = 5; 1444 pub const HTHSCROLL: LRESULT = 6; 1445 pub const HTVSCROLL: LRESULT = 7; 1446 pub const HTMINBUTTON: LRESULT = 8; 1447 pub const HTMAXBUTTON: LRESULT = 9; 1448 pub const HTLEFT: LRESULT = 10; 1449 pub const HTRIGHT: LRESULT = 11; 1450 pub const HTTOP: LRESULT = 12; 1451 pub const HTTOPLEFT: LRESULT = 13; 1452 pub const HTTOPRIGHT: LRESULT = 14; 1453 pub const HTBOTTOM: LRESULT = 15; 1454 pub const HTBOTTOMLEFT: LRESULT = 16; 1455 pub const HTBOTTOMRIGHT: LRESULT = 17; 1456 pub const HTBORDER: LRESULT = 18; 1457 pub const HTREDUCE: LRESULT = HTMINBUTTON; 1458 pub const HTZOOM: LRESULT = HTMAXBUTTON; 1459 pub const HTSIZEFIRST: LRESULT = HTLEFT; 1460 pub const HTSIZELAST: LRESULT = HTBOTTOMRIGHT; 1461 pub const HTOBJECT: LRESULT = 19; 1462 pub const HTCLOSE: LRESULT = 20; 1463 pub const HTHELP: LRESULT = 21; 1464 pub const SMTO_NORMAL: UINT = 0x0000; 1465 pub const SMTO_BLOCK: UINT = 0x0001; 1466 pub const SMTO_ABORTIFHUNG: UINT = 0x0002; 1467 pub const SMTO_NOTIMEOUTIFNOTHUNG: UINT = 0x0008; 1468 pub const SMTO_ERRORONEXIT: UINT = 0x0020; 1469 pub const MA_ACTIVATE: UINT = 1; 1470 pub const MA_ACTIVATEANDEAT: UINT = 2; 1471 pub const MA_NOACTIVATE: UINT = 3; 1472 pub const MA_NOACTIVATEANDEAT: UINT = 4; 1473 pub const ICON_SMALL: UINT = 0; 1474 pub const ICON_BIG: UINT = 1; 1475 pub const ICON_SMALL2: UINT = 2; 1476 extern "system" { 1477 pub fn RegisterWindowMessageA( 1478 lpString: LPCSTR, 1479 ) -> UINT; 1480 pub fn RegisterWindowMessageW( 1481 lpString: LPCWSTR, 1482 ) -> UINT; 1483 } 1484 pub const SIZE_RESTORED: WPARAM = 0; 1485 pub const SIZE_MINIMIZED: WPARAM = 1; 1486 pub const SIZE_MAXIMIZED: WPARAM = 2; 1487 pub const SIZE_MAXSHOW: WPARAM = 3; 1488 pub const SIZE_MAXHIDE: WPARAM = 4; 1489 pub const SIZENORMAL: WPARAM = SIZE_RESTORED; 1490 pub const SIZEICONIC: WPARAM = SIZE_MINIMIZED; 1491 pub const SIZEFULLSCREEN: WPARAM = SIZE_MAXIMIZED; 1492 pub const SIZEZOOMSHOW: WPARAM = SIZE_MAXSHOW; 1493 pub const SIZEZOOMHIDE: WPARAM = SIZE_MAXHIDE; 1494 STRUCT!{struct WINDOWPOS { 1495 hwnd: HWND, 1496 hwndInsertAfter: HWND, 1497 x: c_int, 1498 y: c_int, 1499 cx: c_int, 1500 cy: c_int, 1501 flags: UINT, 1502 }} 1503 pub type LPWINDOWPOS = *mut WINDOWPOS; 1504 pub type PWINDOWPOS = *mut WINDOWPOS; 1505 STRUCT!{struct NCCALCSIZE_PARAMS { 1506 rgrc: [RECT; 3], 1507 lppos: PWINDOWPOS, 1508 }} 1509 pub type LPNCCALCSIZE_PARAMS = *mut NCCALCSIZE_PARAMS; 1510 pub const WVR_ALIGNTOP: LRESULT = 0x0010; 1511 pub const WVR_ALIGNLEFT: LRESULT = 0x0020; 1512 pub const WVR_ALIGNBOTTOM: LRESULT = 0x0040; 1513 pub const WVR_ALIGNRIGHT: LRESULT = 0x0080; 1514 pub const WVR_HREDRAW: LRESULT = 0x0100; 1515 pub const WVR_VREDRAW: LRESULT = 0x0200; 1516 pub const WVR_REDRAW: LRESULT = WVR_HREDRAW | WVR_VREDRAW; 1517 pub const WVR_VALIDRECTS: LRESULT = 0x0400; 1518 pub const MK_LBUTTON: WPARAM = 0x0001; 1519 pub const MK_RBUTTON: WPARAM = 0x0002; 1520 pub const MK_SHIFT: WPARAM = 0x0004; 1521 pub const MK_CONTROL: WPARAM = 0x0008; 1522 pub const MK_MBUTTON: WPARAM = 0x0010; 1523 pub const MK_XBUTTON1: WPARAM = 0x0020; 1524 pub const MK_XBUTTON2: WPARAM = 0x0040; 1525 pub const TME_HOVER: DWORD = 0x00000001; 1526 pub const TME_LEAVE: DWORD = 0x00000002; 1527 pub const TME_NONCLIENT: DWORD = 0x00000010; 1528 pub const TME_QUERY: DWORD = 0x40000000; 1529 pub const TME_CANCEL: DWORD = 0x80000000; 1530 pub const HOVER_DEFAULT: DWORD = 0xFFFFFFFF; 1531 STRUCT!{struct TRACKMOUSEEVENT { 1532 cbSize: DWORD, 1533 dwFlags: DWORD, 1534 hwndTrack: HWND, 1535 dwHoverTime: DWORD, 1536 }} 1537 pub type LPTRACKMOUSEEVENT = *mut TRACKMOUSEEVENT; 1538 extern "system" { 1539 pub fn TrackMouseEvent( 1540 lpEventTrack: LPTRACKMOUSEEVENT, 1541 ) -> BOOL; 1542 } 1543 pub const WS_OVERLAPPED: DWORD = 0x00000000; 1544 pub const WS_POPUP: DWORD = 0x80000000; 1545 pub const WS_CHILD: DWORD = 0x40000000; 1546 pub const WS_MINIMIZE: DWORD = 0x20000000; 1547 pub const WS_VISIBLE: DWORD = 0x10000000; 1548 pub const WS_DISABLED: DWORD = 0x08000000; 1549 pub const WS_CLIPSIBLINGS: DWORD = 0x04000000; 1550 pub const WS_CLIPCHILDREN: DWORD = 0x02000000; 1551 pub const WS_MAXIMIZE: DWORD = 0x01000000; 1552 pub const WS_CAPTION: DWORD = 0x00C00000; 1553 pub const WS_BORDER: DWORD = 0x00800000; 1554 pub const WS_DLGFRAME: DWORD = 0x00400000; 1555 pub const WS_VSCROLL: DWORD = 0x00200000; 1556 pub const WS_HSCROLL: DWORD = 0x00100000; 1557 pub const WS_SYSMENU: DWORD = 0x00080000; 1558 pub const WS_THICKFRAME: DWORD = 0x00040000; 1559 pub const WS_GROUP: DWORD = 0x00020000; 1560 pub const WS_TABSTOP: DWORD = 0x00010000; 1561 pub const WS_MINIMIZEBOX: DWORD = 0x00020000; 1562 pub const WS_MAXIMIZEBOX: DWORD = 0x00010000; 1563 pub const WS_TILED: DWORD = WS_OVERLAPPED; 1564 pub const WS_ICONIC: DWORD = WS_MINIMIZE; 1565 pub const WS_SIZEBOX: DWORD = WS_THICKFRAME; 1566 pub const WS_TILEDWINDOW: DWORD = WS_OVERLAPPEDWINDOW; 1567 pub const WS_OVERLAPPEDWINDOW: DWORD = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME 1568 | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; 1569 pub const WS_POPUPWINDOW: DWORD = WS_POPUP | WS_BORDER | WS_SYSMENU; 1570 pub const WS_CHILDWINDOW: DWORD = WS_CHILD; 1571 pub const WS_EX_DLGMODALFRAME: DWORD = 0x00000001; 1572 pub const WS_EX_NOPARENTNOTIFY: DWORD = 0x00000004; 1573 pub const WS_EX_TOPMOST: DWORD = 0x00000008; 1574 pub const WS_EX_ACCEPTFILES: DWORD = 0x00000010; 1575 pub const WS_EX_TRANSPARENT: DWORD = 0x00000020; 1576 pub const WS_EX_MDICHILD: DWORD = 0x00000040; 1577 pub const WS_EX_TOOLWINDOW: DWORD = 0x00000080; 1578 pub const WS_EX_WINDOWEDGE: DWORD = 0x00000100; 1579 pub const WS_EX_CLIENTEDGE: DWORD = 0x00000200; 1580 pub const WS_EX_CONTEXTHELP: DWORD = 0x00000400; 1581 pub const WS_EX_RIGHT: DWORD = 0x00001000; 1582 pub const WS_EX_LEFT: DWORD = 0x00000000; 1583 pub const WS_EX_RTLREADING: DWORD = 0x00002000; 1584 pub const WS_EX_LTRREADING: DWORD = 0x00000000; 1585 pub const WS_EX_LEFTSCROLLBAR: DWORD = 0x00004000; 1586 pub const WS_EX_RIGHTSCROLLBAR: DWORD = 0x00000000; 1587 pub const WS_EX_CONTROLPARENT: DWORD = 0x00010000; 1588 pub const WS_EX_STATICEDGE: DWORD = 0x00020000; 1589 pub const WS_EX_APPWINDOW: DWORD = 0x00040000; 1590 pub const WS_EX_OVERLAPPEDWINDOW: DWORD = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE; 1591 pub const WS_EX_PALETTEWINDOW: DWORD = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST; 1592 pub const WS_EX_LAYERED: DWORD = 0x00080000; 1593 pub const WS_EX_NOINHERITLAYOUT: DWORD = 0x00100000; 1594 pub const WS_EX_NOREDIRECTIONBITMAP: DWORD = 0x00200000; 1595 pub const WS_EX_LAYOUTRTL: DWORD = 0x00400000; 1596 pub const WS_EX_COMPOSITED: DWORD = 0x02000000; 1597 pub const WS_EX_NOACTIVATE: DWORD = 0x08000000; 1598 pub const CS_VREDRAW: UINT = 0x0001; 1599 pub const CS_HREDRAW: UINT = 0x0002; 1600 pub const CS_DBLCLKS: UINT = 0x0008; 1601 pub const CS_OWNDC: UINT = 0x0020; 1602 pub const CS_CLASSDC: UINT = 0x0040; 1603 pub const CS_PARENTDC: UINT = 0x0080; 1604 pub const CS_NOCLOSE: UINT = 0x0200; 1605 pub const CS_SAVEBITS: UINT = 0x0800; 1606 pub const CS_BYTEALIGNCLIENT: UINT = 0x1000; 1607 pub const CS_BYTEALIGNWINDOW: UINT = 0x2000; 1608 pub const CS_GLOBALCLASS: UINT = 0x4000; 1609 pub const CS_IME: UINT = 0x00010000; 1610 pub const CS_DROPSHADOW: UINT = 0x00020000; 1611 pub const PRF_CHECKVISIBLE: UINT = 0x00000001; 1612 pub const PRF_NONCLIENT: UINT = 0x00000002; 1613 pub const PRF_CLIENT: UINT = 0x00000004; 1614 pub const PRF_ERASEBKGND: UINT = 0x00000008; 1615 pub const PRF_CHILDREN: UINT = 0x00000010; 1616 pub const PRF_OWNED: UINT = 0x00000020; 1617 pub const BDR_RAISEDOUTER: UINT = 0x0001; 1618 pub const BDR_SUNKENOUTER: UINT = 0x0002; 1619 pub const BDR_RAISEDINNER: UINT = 0x0004; 1620 pub const BDR_SUNKENINNER: UINT = 0x0008; 1621 pub const BDR_OUTER: UINT = BDR_RAISEDOUTER | BDR_SUNKENOUTER; 1622 pub const BDR_INNER: UINT = BDR_RAISEDINNER | BDR_SUNKENINNER; 1623 pub const BDR_RAISED: UINT = BDR_RAISEDOUTER | BDR_RAISEDINNER; 1624 pub const BDR_SUNKEN: UINT = BDR_SUNKENOUTER | BDR_SUNKENINNER; 1625 pub const EDGE_RAISED: UINT = BDR_RAISEDOUTER | BDR_RAISEDINNER; 1626 pub const EDGE_SUNKEN: UINT = BDR_SUNKENOUTER | BDR_SUNKENINNER; 1627 pub const EDGE_ETCHED: UINT = BDR_SUNKENOUTER | BDR_RAISEDINNER; 1628 pub const EDGE_BUMP: UINT = BDR_RAISEDOUTER | BDR_SUNKENINNER; 1629 pub const BF_LEFT: UINT = 0x0001; 1630 pub const BF_TOP: UINT = 0x0002; 1631 pub const BF_RIGHT: UINT = 0x0004; 1632 pub const BF_BOTTOM: UINT = 0x0008; 1633 pub const BF_TOPLEFT: UINT = BF_TOP | BF_LEFT; 1634 pub const BF_TOPRIGHT: UINT = BF_TOP | BF_RIGHT; 1635 pub const BF_BOTTOMLEFT: UINT = BF_BOTTOM | BF_LEFT; 1636 pub const BF_BOTTOMRIGHT: UINT = BF_BOTTOM | BF_RIGHT; 1637 pub const BF_RECT: UINT = BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM; 1638 pub const BF_DIAGONAL: UINT = 0x0010; 1639 pub const BF_DIAGONAL_ENDTOPRIGHT: UINT = BF_DIAGONAL | BF_TOP | BF_RIGHT; 1640 pub const BF_DIAGONAL_ENDTOPLEFT: UINT = BF_DIAGONAL | BF_TOP | BF_LEFT; 1641 pub const BF_DIAGONAL_ENDBOTTOMLEFT: UINT = BF_DIAGONAL | BF_BOTTOM | BF_LEFT; 1642 pub const BF_DIAGONAL_ENDBOTTOMRIGHT: UINT = BF_DIAGONAL | BF_BOTTOM | BF_RIGHT; 1643 pub const BF_MIDDLE: UINT = 0x0800; 1644 pub const BF_SOFT: UINT = 0x1000; 1645 pub const BF_ADJUST: UINT = 0x2000; 1646 pub const BF_FLAT: UINT = 0x4000; 1647 pub const BF_MONO: UINT = 0x8000; 1648 extern "system" { 1649 pub fn DrawEdge( 1650 hdc: HDC, 1651 qrc: LPRECT, 1652 edge: UINT, 1653 grfFlags: UINT, 1654 ) -> BOOL; 1655 } 1656 pub const DFC_CAPTION: UINT = 1; 1657 pub const DFC_MENU: UINT = 2; 1658 pub const DFC_SCROLL: UINT = 3; 1659 pub const DFC_BUTTON: UINT = 4; 1660 pub const DFC_POPUPMENU: UINT = 5; 1661 pub const DFCS_CAPTIONCLOSE: UINT = 0x0000; 1662 pub const DFCS_CAPTIONMIN: UINT = 0x0001; 1663 pub const DFCS_CAPTIONMAX: UINT = 0x0002; 1664 pub const DFCS_CAPTIONRESTORE: UINT = 0x0003; 1665 pub const DFCS_CAPTIONHELP: UINT = 0x0004; 1666 pub const DFCS_MENUARROW: UINT = 0x0000; 1667 pub const DFCS_MENUCHECK: UINT = 0x0001; 1668 pub const DFCS_MENUBULLET: UINT = 0x0002; 1669 pub const DFCS_MENUARROWRIGHT: UINT = 0x0004; 1670 pub const DFCS_SCROLLUP: UINT = 0x0000; 1671 pub const DFCS_SCROLLDOWN: UINT = 0x0001; 1672 pub const DFCS_SCROLLLEFT: UINT = 0x0002; 1673 pub const DFCS_SCROLLRIGHT: UINT = 0x0003; 1674 pub const DFCS_SCROLLCOMBOBOX: UINT = 0x0005; 1675 pub const DFCS_SCROLLSIZEGRIP: UINT = 0x0008; 1676 pub const DFCS_SCROLLSIZEGRIPRIGHT: UINT = 0x0010; 1677 pub const DFCS_BUTTONCHECK: UINT = 0x0000; 1678 pub const DFCS_BUTTONRADIOIMAGE: UINT = 0x0001; 1679 pub const DFCS_BUTTONRADIOMASK: UINT = 0x0002; 1680 pub const DFCS_BUTTONRADIO: UINT = 0x0004; 1681 pub const DFCS_BUTTON3STATE: UINT = 0x0008; 1682 pub const DFCS_BUTTONPUSH: UINT = 0x0010; 1683 pub const DFCS_INACTIVE: UINT = 0x0100; 1684 pub const DFCS_PUSHED: UINT = 0x0200; 1685 pub const DFCS_CHECKED: UINT = 0x0400; 1686 pub const DFCS_TRANSPARENT: UINT = 0x0800; 1687 pub const DFCS_HOT: UINT = 0x1000; 1688 pub const DFCS_ADJUSTRECT: UINT = 0x2000; 1689 pub const DFCS_FLAT: UINT = 0x4000; 1690 pub const DFCS_MONO: UINT = 0x8000; 1691 extern "system" { 1692 pub fn DrawFrameControl( 1693 hdc: HDC, 1694 lprc: LPRECT, 1695 uType: UINT, 1696 uState: UINT, 1697 ) -> BOOL; 1698 } 1699 pub const DC_ACTIVE: UINT = 0x0001; 1700 pub const DC_SMALLCAP: UINT = 0x0002; 1701 pub const DC_ICON: UINT = 0x0004; 1702 pub const DC_TEXT: UINT = 0x0008; 1703 pub const DC_INBUTTON: UINT = 0x0010; 1704 pub const DC_GRADIENT: UINT = 0x0020; 1705 pub const DC_BUTTONS: UINT = 0x1000; 1706 extern "system" { 1707 pub fn DrawCaption( 1708 hwnd: HWND, 1709 hdc: HDC, 1710 lprect: *const RECT, 1711 flags: UINT, 1712 ) -> BOOL; 1713 } 1714 pub const IDANI_OPEN: c_int = 1; 1715 pub const IDANI_CAPTION: c_int = 3; 1716 extern "system" { 1717 pub fn DrawAnimatedRects( 1718 hwnd: HWND, 1719 idAni: c_int, 1720 lprcFrom: *const RECT, 1721 lprcTo: *const RECT, 1722 ) -> BOOL; 1723 } 1724 pub const CF_TEXT: UINT = 1; 1725 pub const CF_BITMAP: UINT = 2; 1726 pub const CF_METAFILEPICT: UINT = 3; 1727 pub const CF_SYLK: UINT = 4; 1728 pub const CF_DIF: UINT = 5; 1729 pub const CF_TIFF: UINT = 6; 1730 pub const CF_OEMTEXT: UINT = 7; 1731 pub const CF_DIB: UINT = 8; 1732 pub const CF_PALETTE: UINT = 9; 1733 pub const CF_PENDATA: UINT = 10; 1734 pub const CF_RIFF: UINT = 11; 1735 pub const CF_WAVE: UINT = 12; 1736 pub const CF_UNICODETEXT: UINT = 13; 1737 pub const CF_ENHMETAFILE: UINT = 14; 1738 pub const CF_HDROP: UINT = 15; 1739 pub const CF_LOCALE: UINT = 16; 1740 pub const CF_DIBV5: UINT = 17; 1741 pub const CF_MAX: UINT = 18; 1742 pub const CF_OWNERDISPLAY: UINT = 0x0080; 1743 pub const CF_DSPTEXT: UINT = 0x0081; 1744 pub const CF_DSPBITMAP: UINT = 0x0082; 1745 pub const CF_DSPMETAFILEPICT: UINT = 0x0083; 1746 pub const CF_DSPENHMETAFILE: UINT = 0x008E; 1747 pub const CF_PRIVATEFIRST: UINT = 0x0200; 1748 pub const CF_PRIVATELAST: UINT = 0x02FF; 1749 pub const CF_GDIOBJFIRST: UINT = 0x0300; 1750 pub const CF_GDIOBJLAST: UINT = 0x03FF; 1751 pub const FVIRTKEY: BYTE = TRUE as u8; 1752 pub const FNOINVERT: BYTE = 0x02; 1753 pub const FSHIFT: BYTE = 0x04; 1754 pub const FCONTROL: BYTE = 0x08; 1755 pub const FALT: BYTE = 0x10; 1756 STRUCT!{struct ACCEL { 1757 fVirt: BYTE, 1758 key: WORD, 1759 cmd: WORD, 1760 }} 1761 pub type LPACCEL = *mut ACCEL; 1762 STRUCT!{struct PAINTSTRUCT { 1763 hdc: HDC, 1764 fErase: BOOL, 1765 rcPaint: RECT, 1766 fRestore: BOOL, 1767 fIncUpdate: BOOL, 1768 rgbReserved: [BYTE; 32], 1769 }} 1770 pub type PPAINTSTRUCT = *mut PAINTSTRUCT; 1771 pub type NPPAINTSTRUCT = *mut PAINTSTRUCT; 1772 pub type LPPAINTSTRUCT = *mut PAINTSTRUCT; 1773 STRUCT!{struct CREATESTRUCTA { 1774 lpCreateParams: LPVOID, 1775 hInstance: HINSTANCE, 1776 hMenu: HMENU, 1777 hwndParent: HWND, 1778 cy: c_int, 1779 cx: c_int, 1780 y: c_int, 1781 x: c_int, 1782 style: LONG, 1783 lpszName: LPCSTR, 1784 lpszClass: LPCSTR, 1785 dwExStyle: DWORD, 1786 }} 1787 pub type LPCREATESTRUCTA = *mut CREATESTRUCTA; 1788 STRUCT!{struct CREATESTRUCTW { 1789 lpCreateParams: LPVOID, 1790 hInstance: HINSTANCE, 1791 hMenu: HMENU, 1792 hwndParent: HWND, 1793 cy: c_int, 1794 cx: c_int, 1795 y: c_int, 1796 x: c_int, 1797 style: LONG, 1798 lpszName: LPCWSTR, 1799 lpszClass: LPCWSTR, 1800 dwExStyle: DWORD, 1801 }} 1802 pub type LPCREATESTRUCTW = *mut CREATESTRUCTW; 1803 STRUCT!{struct WINDOWPLACEMENT { 1804 length: UINT, 1805 flags: UINT, 1806 showCmd: UINT, 1807 ptMinPosition: POINT, 1808 ptMaxPosition: POINT, 1809 rcNormalPosition: RECT, 1810 }} 1811 pub type PWINDOWPLACEMENT = *mut WINDOWPLACEMENT; 1812 pub type LPWINDOWPLACEMENT = *mut WINDOWPLACEMENT; 1813 pub const WPF_SETMINPOSITION: UINT = 0x0001; 1814 pub const WPF_RESTORETOMAXIMIZED: UINT = 0x0002; 1815 pub const WPF_ASYNCWINDOWPLACEMENT: UINT = 0x0004; 1816 STRUCT!{struct NMHDR { 1817 hwndFrom: HWND, 1818 idFrom: UINT_PTR, 1819 code: UINT, 1820 }} 1821 pub type LPNMHDR = *mut NMHDR; 1822 STRUCT!{struct STYLESTRUCT { 1823 styleOld: DWORD, 1824 styleNew: DWORD, 1825 }} 1826 pub type LPSTYLESTRUCT = *mut STYLESTRUCT; 1827 pub const ODT_MENU: UINT = 1; 1828 pub const ODT_LISTBOX: UINT = 2; 1829 pub const ODT_COMBOBOX: UINT = 3; 1830 pub const ODT_BUTTON: UINT = 4; 1831 pub const ODT_STATIC: UINT = 5; 1832 pub const ODA_DRAWENTIRE: UINT = 0x0001; 1833 pub const ODA_SELECT: UINT = 0x0002; 1834 pub const ODA_FOCUS: UINT = 0x0004; 1835 pub const ODS_SELECTED: UINT = 0x0001; 1836 pub const ODS_GRAYED: UINT = 0x0002; 1837 pub const ODS_DISABLED: UINT = 0x0004; 1838 pub const ODS_CHECKED: UINT = 0x0008; 1839 pub const ODS_FOCUS: UINT = 0x0010; 1840 pub const ODS_DEFAULT: UINT = 0x0020; 1841 pub const ODS_COMBOBOXEDIT: UINT = 0x1000; 1842 pub const ODS_HOTLIGHT: UINT = 0x0040; 1843 pub const ODS_INACTIVE: UINT = 0x0080; 1844 pub const ODS_NOACCEL: UINT = 0x0100; 1845 pub const ODS_NOFOCUSRECT: UINT = 0x0200; 1846 STRUCT!{struct MEASUREITEMSTRUCT { 1847 CtlType: UINT, 1848 CtlID: UINT, 1849 itemID: UINT, 1850 itemWidth: UINT, 1851 itemHeight: UINT, 1852 itemData: ULONG_PTR, 1853 }} 1854 pub type PMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT; 1855 pub type LPMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT; 1856 STRUCT!{struct DRAWITEMSTRUCT { 1857 CtlType: UINT, 1858 CtlID: UINT, 1859 itemID: UINT, 1860 itemAction: UINT, 1861 itemState: UINT, 1862 hwndItem: HWND, 1863 hDC: HDC, 1864 rcItem: RECT, 1865 itemData: ULONG_PTR, 1866 }} 1867 pub type PDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT; 1868 pub type LPDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT; 1869 STRUCT!{struct DELETEITEMSTRUCT { 1870 CtlType: UINT, 1871 CtlID: UINT, 1872 itemID: UINT, 1873 hwndItem: HWND, 1874 itemData: ULONG_PTR, 1875 }} 1876 pub type PDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT; 1877 pub type LPDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT; 1878 STRUCT!{struct COMPAREITEMSTRUCT { 1879 CtlType: UINT, 1880 CtlID: UINT, 1881 hwndItem: HWND, 1882 itemID1: UINT, 1883 itemData1: ULONG_PTR, 1884 itemID2: UINT, 1885 itemData2: ULONG_PTR, 1886 dwLocaleId: DWORD, 1887 }} 1888 pub type PCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT; 1889 pub type LPCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT; 1890 extern "system" { 1891 pub fn GetMessageA( 1892 lpMsg: LPMSG, 1893 hWnd: HWND, 1894 wMsgFilterMin: UINT, 1895 wMsgFilterMax: UINT, 1896 ) -> BOOL; 1897 pub fn GetMessageW( 1898 lpMsg: LPMSG, 1899 hWnd: HWND, 1900 wMsgFilterMin: UINT, 1901 wMsgFilterMax: UINT, 1902 ) -> BOOL; 1903 pub fn TranslateMessage( 1904 lpmsg: *const MSG, 1905 ) -> BOOL; 1906 pub fn DispatchMessageA( 1907 lpmsg: *const MSG, 1908 ) -> LRESULT; 1909 pub fn DispatchMessageW( 1910 lpmsg: *const MSG, 1911 ) -> LRESULT; 1912 pub fn SetMessageQueue( 1913 cMessagesMax: c_int, 1914 ) -> BOOL; 1915 pub fn PeekMessageA( 1916 lpMsg: LPMSG, 1917 hWnd: HWND, 1918 wMsgFilterMin: UINT, 1919 wMsgFilterMax: UINT, 1920 wRemoveMsg: UINT, 1921 ) -> BOOL; 1922 pub fn PeekMessageW( 1923 lpMsg: LPMSG, 1924 hWnd: HWND, 1925 wMsgFilterMin: UINT, 1926 wMsgFilterMax: UINT, 1927 wRemoveMsg: UINT, 1928 ) -> BOOL; 1929 } 1930 pub const PM_NOREMOVE: UINT = 0x0000; 1931 pub const PM_REMOVE: UINT = 0x0001; 1932 pub const PM_NOYIELD: UINT = 0x0002; 1933 pub const PM_QS_INPUT: UINT = QS_INPUT << 16; 1934 pub const PM_QS_POSTMESSAGE: UINT = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16; 1935 pub const PM_QS_PAINT: UINT = QS_PAINT << 16; 1936 pub const PM_QS_SENDMESSAGE: UINT = QS_SENDMESSAGE << 16; 1937 extern "system" { 1938 pub fn RegisterHotKey( 1939 hwnd: HWND, 1940 id: c_int, 1941 fsModifiers: UINT, 1942 vk: UINT, 1943 ) -> BOOL; 1944 pub fn UnregisterHotKey( 1945 hWnd: HWND, 1946 id: c_int, 1947 ) -> BOOL; 1948 } 1949 pub const MOD_ALT: LPARAM = 0x0001; 1950 pub const MOD_CONTROL: LPARAM = 0x0002; 1951 pub const MOD_SHIFT: LPARAM = 0x0004; 1952 pub const MOD_WIN: LPARAM = 0x0008; 1953 pub const MOD_NOREPEAT: LPARAM = 0x4000; 1954 pub const IDHOT_SNAPWINDOW: WPARAM = -1isize as usize; 1955 pub const IDHOT_SNAPDESKTOP: WPARAM = -2isize as usize; 1956 pub const ENDSESSION_CLOSEAPP: UINT = 0x00000001; 1957 pub const ENDSESSION_CRITICAL: UINT = 0x40000000; 1958 pub const ENDSESSION_LOGOFF: UINT = 0x80000000; 1959 pub const EWX_LOGOFF: UINT = 0x00000000; 1960 pub const EWX_SHUTDOWN: UINT = 0x00000001; 1961 pub const EWX_REBOOT: UINT = 0x00000002; 1962 pub const EWX_FORCE: UINT = 0x00000004; 1963 pub const EWX_POWEROFF: UINT = 0x00000008; 1964 pub const EWX_FORCEIFHUNG: UINT = 0x00000010; 1965 pub const EWX_QUICKRESOLVE: UINT = 0x00000020; 1966 pub const EWX_RESTARTAPPS: UINT = 0x00000040; 1967 pub const EWX_HYBRID_SHUTDOWN: UINT = 0x00400000; 1968 pub const EWX_BOOTOPTIONS: UINT = 0x01000000; 1969 // ExitWindows 1970 extern "system" { 1971 pub fn ExitWindowsEx( 1972 uFlags: UINT, 1973 dwReason: DWORD, 1974 ) -> BOOL; 1975 pub fn SwapMouseButton( 1976 fSwap: BOOL, 1977 ) -> BOOL; 1978 pub fn GetMessagePos() -> DWORD; 1979 pub fn GetMessageTime() -> LONG; 1980 pub fn GetMessageExtraInfo() -> LPARAM; 1981 pub fn GetUnpredictedMessagePos() -> DWORD; 1982 pub fn IsWow64Message() -> BOOL; 1983 pub fn SetMessageExtraInfo( 1984 lParam: LPARAM, 1985 ) -> LPARAM; 1986 pub fn SendMessageA( 1987 hWnd: HWND, 1988 Msg: UINT, 1989 wParam: WPARAM, 1990 lParam: LPARAM, 1991 ) -> LRESULT; 1992 pub fn SendMessageW( 1993 hWnd: HWND, 1994 Msg: UINT, 1995 wParam: WPARAM, 1996 lParam: LPARAM, 1997 ) -> LRESULT; 1998 pub fn SendMessageTimeoutA( 1999 hWnd: HWND, 2000 Msg: UINT, 2001 wParam: WPARAM, 2002 lParam: LPARAM, 2003 fuFlags: UINT, 2004 uTimeout: UINT, 2005 lpdwResult: PDWORD_PTR, 2006 ) -> LRESULT; 2007 pub fn SendMessageTimeoutW( 2008 hWnd: HWND, 2009 Msg: UINT, 2010 wParam: WPARAM, 2011 lParam: LPARAM, 2012 fuFlags: UINT, 2013 uTimeout: UINT, 2014 lpdwResult: PDWORD_PTR, 2015 ) -> LRESULT; 2016 pub fn SendNotifyMessageA( 2017 hWnd: HWND, 2018 msg: UINT, 2019 wParam: WPARAM, 2020 lParam: LPARAM, 2021 ) -> BOOL; 2022 pub fn SendNotifyMessageW( 2023 hWnd: HWND, 2024 msg: UINT, 2025 wParam: WPARAM, 2026 lParam: LPARAM, 2027 ) -> BOOL; 2028 pub fn SendMessageCallbackA( 2029 hWnd: HWND, 2030 Msg: UINT, 2031 wParam: WPARAM, 2032 lParam: LPARAM, 2033 lpResultCallBack: SENDASYNCPROC, 2034 dwData: ULONG_PTR, 2035 ) -> BOOL; 2036 pub fn SendMessageCallbackW( 2037 hWnd: HWND, 2038 Msg: UINT, 2039 wParam: WPARAM, 2040 lParam: LPARAM, 2041 lpResultCallBack: SENDASYNCPROC, 2042 dwData: ULONG_PTR, 2043 ) -> BOOL; 2044 } 2045 STRUCT!{struct BSMINFO { 2046 cbSize: UINT, 2047 hdesk: HDESK, 2048 hwnd: HWND, 2049 luid: LUID, 2050 }} 2051 pub type PBSMINFO = *mut BSMINFO; 2052 extern "system" { 2053 pub fn BroadcastSystemMessageExA( 2054 flags: DWORD, 2055 lpInfo: LPDWORD, 2056 Msg: UINT, 2057 wParam: WPARAM, 2058 lParam: LPARAM, 2059 pbsmInfo: PBSMINFO, 2060 ) -> c_long; 2061 pub fn BroadcastSystemMessageExW( 2062 flags: DWORD, 2063 lpInfo: LPDWORD, 2064 Msg: UINT, 2065 wParam: WPARAM, 2066 lParam: LPARAM, 2067 pbsmInfo: PBSMINFO, 2068 ) -> c_long; 2069 pub fn BroadcastSystemMessageA( 2070 flags: DWORD, 2071 lpInfo: LPDWORD, 2072 Msg: UINT, 2073 wParam: WPARAM, 2074 lParam: LPARAM, 2075 ) -> LONG; 2076 pub fn BroadcastSystemMessageW( 2077 flags: DWORD, 2078 lpInfo: LPDWORD, 2079 Msg: UINT, 2080 wParam: WPARAM, 2081 lParam: LPARAM, 2082 ) -> LONG; 2083 } 2084 pub const BSM_ALLCOMPONENTS: DWORD = 0x00000000; 2085 pub const BSM_VXDS: DWORD = 0x00000001; 2086 pub const BSM_NETDRIVER: DWORD = 0x00000002; 2087 pub const BSM_INSTALLABLEDRIVERS: DWORD = 0x00000004; 2088 pub const BSM_APPLICATIONS: DWORD = 0x00000008; 2089 pub const BSM_ALLDESKTOPS: DWORD = 0x00000010; 2090 pub const BSF_QUERY: DWORD = 0x00000001; 2091 pub const BSF_IGNORECURRENTTASK: DWORD = 0x00000002; 2092 pub const BSF_FLUSHDISK: DWORD = 0x00000004; 2093 pub const BSF_NOHANG: DWORD = 0x00000008; 2094 pub const BSF_POSTMESSAGE: DWORD = 0x00000010; 2095 pub const BSF_FORCEIFHUNG: DWORD = 0x00000020; 2096 pub const BSF_NOTIMEOUTIFNOTHUNG: DWORD = 0x00000040; 2097 pub const BSF_ALLOWSFW: DWORD = 0x00000080; 2098 pub const BSF_SENDNOTIFYMESSAGE: DWORD = 0x00000100; 2099 pub const BSF_RETURNHDESK: DWORD = 0x00000200; 2100 pub const BSF_LUID: DWORD = 0x00000400; 2101 pub const BROADCAST_QUERY_DENY: DWORD = 0x424D5144; 2102 pub type HDEVNOTIFY = PVOID; 2103 pub type PHDEVNOTIFY = *mut HDEVNOTIFY; 2104 pub const DEVICE_NOTIFY_WINDOW_HANDLE: DWORD = 0x00000000; 2105 pub const DEVICE_NOTIFY_SERVICE_HANDLE: DWORD = 0x00000001; 2106 pub const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES: DWORD = 0x00000004; 2107 extern "system" { 2108 pub fn RegisterDeviceNotificationA( 2109 hRecipient: HANDLE, 2110 notificationFilter: LPVOID, 2111 flags: DWORD, 2112 ) -> HDEVNOTIFY; 2113 pub fn RegisterDeviceNotificationW( 2114 hRecipient: HANDLE, 2115 notificationFilter: LPVOID, 2116 flags: DWORD, 2117 ) -> HDEVNOTIFY; 2118 pub fn UnregisterDeviceNotification( 2119 Handle: HDEVNOTIFY, 2120 ) -> BOOL; 2121 } 2122 pub type HPOWERNOTIFY = PVOID; 2123 pub type PHPOWERNOTIFY = *mut HPOWERNOTIFY; 2124 extern "system" { 2125 pub fn RegisterPowerSettingNotification( 2126 hRecipient: HANDLE, 2127 PowerSettingGuid: LPCGUID, 2128 Flags: DWORD, 2129 ) -> HPOWERNOTIFY; 2130 pub fn UnregisterPowerSettingNotification( 2131 Handle: HPOWERNOTIFY, 2132 ) -> BOOL; 2133 pub fn RegisterSuspendResumeNotification( 2134 hRecipient: HANDLE, 2135 Flags: DWORD, 2136 ) -> HPOWERNOTIFY; 2137 pub fn UnregisterSuspendResumeNotification( 2138 Handle: HPOWERNOTIFY, 2139 ) -> BOOL; 2140 pub fn PostMessageA( 2141 hWnd: HWND, 2142 Msg: UINT, 2143 wParam: WPARAM, 2144 lParam: LPARAM, 2145 ) -> BOOL; 2146 pub fn PostMessageW( 2147 hWnd: HWND, 2148 Msg: UINT, 2149 wParam: WPARAM, 2150 lParam: LPARAM, 2151 ) -> BOOL; 2152 pub fn PostThreadMessageA( 2153 idThread: DWORD, 2154 msg: UINT, 2155 wParam: WPARAM, 2156 lParam: LPARAM, 2157 ) -> BOOL; 2158 pub fn PostThreadMessageW( 2159 idThread: DWORD, 2160 msg: UINT, 2161 wParam: WPARAM, 2162 lParam: LPARAM, 2163 ) -> BOOL; 2164 } 2165 // PostAppMessageA 2166 // PostAppMessageW 2167 pub const HWND_BROADCAST: HWND = 0xffff as HWND; 2168 pub const HWND_MESSAGE: HWND = -3isize as HWND; 2169 extern "system" { 2170 pub fn AttachThreadInput( 2171 idAttach: DWORD, 2172 idAttachTo: DWORD, 2173 fAttach: BOOL, 2174 ) -> BOOL; 2175 pub fn ReplyMessage( 2176 lResult: LRESULT, 2177 ) -> BOOL; 2178 pub fn WaitMessage() -> BOOL; 2179 pub fn WaitForInputIdle( 2180 hProcess: HANDLE, 2181 dwMilliseconds: DWORD, 2182 ) -> DWORD; 2183 pub fn DefWindowProcA( 2184 hWnd: HWND, 2185 Msg: UINT, 2186 wParam: WPARAM, 2187 lParam: LPARAM, 2188 ) -> LRESULT; 2189 pub fn DefWindowProcW( 2190 hWnd: HWND, 2191 Msg: UINT, 2192 wParam: WPARAM, 2193 lParam: LPARAM, 2194 ) -> LRESULT; 2195 pub fn PostQuitMessage( 2196 nExitCode: c_int, 2197 ); 2198 pub fn CallWindowProcA( 2199 lpPrevWndFunc: WNDPROC, 2200 hWnd: HWND, 2201 Msg: UINT, 2202 wParam: WPARAM, 2203 lParam: LPARAM, 2204 ) -> LRESULT; 2205 pub fn CallWindowProcW( 2206 lpPrevWndFunc: WNDPROC, 2207 hWnd: HWND, 2208 Msg: UINT, 2209 wParam: WPARAM, 2210 lParam: LPARAM, 2211 ) -> LRESULT; 2212 pub fn InSendMessage() -> BOOL; 2213 pub fn InSendMessageEx( 2214 lpReserved: LPVOID, 2215 ) -> DWORD; 2216 } 2217 pub const ISMEX_NOSEND: DWORD = 0x00000000; 2218 pub const ISMEX_SEND: DWORD = 0x00000001; 2219 pub const ISMEX_NOTIFY: DWORD = 0x00000002; 2220 pub const ISMEX_CALLBACK: DWORD = 0x00000004; 2221 pub const ISMEX_REPLIED: DWORD = 0x00000008; 2222 extern "system" { 2223 pub fn GetDoubleClickTime() -> UINT; 2224 pub fn SetDoubleClickTime( 2225 uInterval: UINT, 2226 ) -> BOOL; 2227 pub fn RegisterClassA( 2228 lpWndClass: *const WNDCLASSA, 2229 ) -> ATOM; 2230 pub fn RegisterClassW( 2231 lpWndClass: *const WNDCLASSW, 2232 ) -> ATOM; 2233 pub fn UnregisterClassA( 2234 lpClassName: LPCSTR, 2235 hInstance: HINSTANCE, 2236 ) -> BOOL; 2237 pub fn UnregisterClassW( 2238 lpClassName: LPCWSTR, 2239 hInstance: HINSTANCE, 2240 ) -> BOOL; 2241 pub fn GetClassInfoA( 2242 hInstance: HINSTANCE, 2243 lpClassName: LPCSTR, 2244 lpWndClass: LPWNDCLASSA, 2245 ) -> BOOL; 2246 pub fn GetClassInfoW( 2247 hInstance: HINSTANCE, 2248 lpClassName: LPCWSTR, 2249 lpWndClass: LPWNDCLASSW, 2250 ) -> BOOL; 2251 pub fn RegisterClassExA( 2252 lpWndClass: *const WNDCLASSEXA, 2253 ) -> ATOM; 2254 pub fn RegisterClassExW( 2255 lpWndClass: *const WNDCLASSEXW, 2256 ) -> ATOM; 2257 pub fn GetClassInfoExA( 2258 hinst: HINSTANCE, 2259 lpszClass: LPCSTR, 2260 lpwcx: LPWNDCLASSEXA, 2261 ) -> BOOL; 2262 pub fn GetClassInfoExW( 2263 hinst: HINSTANCE, 2264 lpszClass: LPCWSTR, 2265 lpwcx: LPWNDCLASSEXW, 2266 ) -> BOOL; 2267 } 2268 pub const CW_USEDEFAULT: c_int = 0x80000000; 2269 pub const HWND_DESKTOP: HWND = 0 as HWND; 2270 FN!{stdcall PREGISTERCLASSNAMEW( 2271 LPCWSTR, 2272 ) -> BOOLEAN} 2273 extern "system" { 2274 pub fn CreateWindowExA( 2275 dwExStyle: DWORD, 2276 lpClassName: LPCSTR, 2277 lpWindowName: LPCSTR, 2278 dwStyle: DWORD, 2279 x: c_int, 2280 y: c_int, 2281 nWidth: c_int, 2282 nHeight: c_int, 2283 hWndParent: HWND, 2284 hMenu: HMENU, 2285 hInstance: HINSTANCE, 2286 lpParam: LPVOID, 2287 ) -> HWND; 2288 pub fn CreateWindowExW( 2289 dwExStyle: DWORD, 2290 lpClassName: LPCWSTR, 2291 lpWindowName: LPCWSTR, 2292 dwStyle: DWORD, 2293 x: c_int, 2294 y: c_int, 2295 nWidth: c_int, 2296 nHeight: c_int, 2297 hWndParent: HWND, 2298 hMenu: HMENU, 2299 hInstance: HINSTANCE, 2300 lpParam: LPVOID, 2301 ) -> HWND; 2302 } 2303 // CreateWindowA 2304 // CreateWindowW 2305 extern "system" { 2306 pub fn IsWindow( 2307 hWnd: HWND, 2308 ) -> BOOL; 2309 pub fn IsMenu( 2310 hMenu: HMENU, 2311 ) -> BOOL; 2312 pub fn IsChild( 2313 hWndParent: HWND, 2314 hWnd: HWND, 2315 ) -> BOOL; 2316 pub fn DestroyWindow( 2317 hWnd: HWND, 2318 ) -> BOOL; 2319 pub fn ShowWindow( 2320 hWnd: HWND, 2321 nCmdShow: c_int, 2322 ) -> BOOL; 2323 pub fn AnimateWindow( 2324 hWnd: HWND, 2325 dwTime: DWORD, 2326 dwFlags: DWORD, 2327 ) -> BOOL; 2328 pub fn UpdateLayeredWindow( 2329 hWnd: HWND, 2330 hdcDst: HDC, 2331 pptDst: *mut POINT, 2332 psize: *mut SIZE, 2333 hdcSrc: HDC, 2334 pptSrc: *mut POINT, 2335 crKey: COLORREF, 2336 pblend: *mut BLENDFUNCTION, 2337 dwFlags: DWORD, 2338 ) -> BOOL; 2339 } 2340 STRUCT!{struct UPDATELAYEREDWINDOWINFO { 2341 cbSize: DWORD, 2342 hdcDst: HDC, 2343 pptDst: *const POINT, 2344 psize: *const SIZE, 2345 hdcSrc: HDC, 2346 pptSrc: *const POINT, 2347 crKey: COLORREF, 2348 pblend: *const BLENDFUNCTION, 2349 dwFlags: DWORD, 2350 prcDirty: *const RECT, 2351 }} 2352 pub type PUPDATELAYEREDWINDOWINFO = *mut UPDATELAYEREDWINDOWINFO; 2353 extern "system" { 2354 pub fn UpdateLayeredWindowIndirect( 2355 hWnd: HWND, 2356 pULWInfo: *mut UPDATELAYEREDWINDOWINFO, 2357 ) -> BOOL; 2358 pub fn GetLayeredWindowAttributes( 2359 hwnd: HWND, 2360 pcrKey: *mut COLORREF, 2361 pbAlpha: *mut BYTE, 2362 pdwFlags: *mut DWORD, 2363 ) -> BOOL; 2364 } 2365 pub const PW_CLIENTONLY: DWORD = 0x00000001; 2366 pub const PW_RENDERFULLCONTENT: DWORD = 0x00000002; 2367 extern "system" { 2368 pub fn PrintWindow( 2369 hwnd: HWND, 2370 hdcBlt: HDC, 2371 nFlags: UINT, 2372 ) -> BOOL; 2373 pub fn SetLayeredWindowAttributes( 2374 hwnd: HWND, 2375 crKey: COLORREF, 2376 bAlpha: BYTE, 2377 dwFlags: DWORD, 2378 ) -> BOOL; 2379 } 2380 pub const LWA_COLORKEY: DWORD = 0x00000001; 2381 pub const LWA_ALPHA: DWORD = 0x00000002; 2382 pub const ULW_COLORKEY: DWORD = 0x00000001; 2383 pub const ULW_ALPHA: DWORD = 0x00000002; 2384 pub const ULW_OPAQUE: DWORD = 0x00000004; 2385 pub const ULW_EX_NORESIZE: DWORD = 0x00000008; 2386 extern "system" { 2387 pub fn ShowWindowAsync( 2388 hWnd: HWND, 2389 nCmdShow: c_int, 2390 ) -> BOOL; 2391 pub fn FlashWindow( 2392 hwnd: HWND, 2393 bInvert: BOOL, 2394 ) -> BOOL; 2395 } 2396 STRUCT!{struct FLASHWINFO { 2397 cbSize: UINT, 2398 hwnd: HWND, 2399 dwFlags: DWORD, 2400 uCount: UINT, 2401 dwTimeout: DWORD, 2402 }} 2403 pub type PFLASHWINFO = *mut FLASHWINFO; 2404 extern "system" { 2405 pub fn FlashWindowEx( 2406 pfwi: PFLASHWINFO, 2407 ) -> BOOL; 2408 } 2409 pub const FLASHW_STOP: DWORD = 0; 2410 pub const FLASHW_CAPTION: DWORD = 0x00000001; 2411 pub const FLASHW_TRAY: DWORD = 0x00000002; 2412 pub const FLASHW_ALL: DWORD = FLASHW_CAPTION | FLASHW_TRAY; 2413 pub const FLASHW_TIMER: DWORD = 0x00000004; 2414 pub const FLASHW_TIMERNOFG: DWORD = 0x0000000C; 2415 extern "system" { 2416 pub fn ShowOwnedPopups( 2417 hWnd: HWND, 2418 fShow: BOOL, 2419 ) -> BOOL; 2420 pub fn OpenIcon( 2421 hWnd: HWND, 2422 ) -> BOOL; 2423 pub fn CloseWindow( 2424 hWnd: HWND, 2425 ) -> BOOL; 2426 pub fn MoveWindow( 2427 hWnd: HWND, 2428 X: c_int, 2429 Y: c_int, 2430 nWidth: c_int, 2431 nHeight: c_int, 2432 bRepaint: BOOL, 2433 ) -> BOOL; 2434 pub fn SetWindowPos( 2435 hWnd: HWND, 2436 hWndInsertAfter: HWND, 2437 X: c_int, 2438 Y: c_int, 2439 cx: c_int, 2440 cy: c_int, 2441 uFlags: UINT, 2442 ) -> BOOL; 2443 pub fn GetWindowPlacement( 2444 hWnd: HWND, 2445 lpwndpl: *mut WINDOWPLACEMENT, 2446 ) -> BOOL; 2447 pub fn SetWindowPlacement( 2448 hWnd: HWND, 2449 lpwndpl: *const WINDOWPLACEMENT, 2450 ) -> BOOL; 2451 } 2452 pub const WDA_NONE: DWORD = 0x00000000; 2453 pub const WDA_MONITOR: DWORD = 0x00000001; 2454 extern "system" { 2455 pub fn GetWindowDisplayAffinity( 2456 hWnd: HWND, 2457 pdwAffinity: *mut DWORD, 2458 ) -> BOOL; 2459 pub fn SetWindowDisplayAffinity( 2460 hWnd: HWND, 2461 dwAffinity: DWORD, 2462 ) -> BOOL; 2463 pub fn BeginDeferWindowPos( 2464 nNumWindows: c_int, 2465 ) -> HDWP; 2466 pub fn DeferWindowPos( 2467 hWinPosInfo: HDWP, 2468 hWnd: HWND, 2469 hWndInserAfter: HWND, 2470 x: c_int, 2471 y: c_int, 2472 cx: c_int, 2473 cy: c_int, 2474 uFlags: UINT, 2475 ) -> HDWP; 2476 pub fn EndDeferWindowPos( 2477 hWinPosInfo: HDWP, 2478 ) -> BOOL; 2479 pub fn IsWindowVisible( 2480 hWnd: HWND, 2481 ) -> BOOL; 2482 pub fn IsIconic( 2483 hWnd: HWND, 2484 ) -> BOOL; 2485 pub fn AnyPopup() -> BOOL; 2486 pub fn BringWindowToTop( 2487 hWnd: HWND, 2488 ) -> BOOL; 2489 pub fn IsZoomed( 2490 hwnd: HWND, 2491 ) -> BOOL; 2492 } 2493 pub const SWP_NOSIZE: UINT = 0x0001; 2494 pub const SWP_NOMOVE: UINT = 0x0002; 2495 pub const SWP_NOZORDER: UINT = 0x0004; 2496 pub const SWP_NOREDRAW: UINT = 0x0008; 2497 pub const SWP_NOACTIVATE: UINT = 0x0010; 2498 pub const SWP_FRAMECHANGED: UINT = 0x0020; 2499 pub const SWP_SHOWWINDOW: UINT = 0x0040; 2500 pub const SWP_HIDEWINDOW: UINT = 0x0080; 2501 pub const SWP_NOCOPYBITS: UINT = 0x0100; 2502 pub const SWP_NOOWNERZORDER: UINT = 0x0200; 2503 pub const SWP_NOSENDCHANGING: UINT = 0x0400; 2504 pub const SWP_DRAWFRAME: UINT = SWP_FRAMECHANGED; 2505 pub const SWP_NOREPOSITION: UINT = SWP_NOOWNERZORDER; 2506 pub const SWP_DEFERERASE: UINT = 0x2000; 2507 pub const SWP_ASYNCWINDOWPOS: UINT = 0x4000; 2508 pub const HWND_TOP: HWND = 0 as HWND; 2509 pub const HWND_BOTTOM: HWND = 1 as HWND; 2510 pub const HWND_TOPMOST: HWND = -1isize as HWND; 2511 pub const HWND_NOTOPMOST: HWND = -2isize as HWND; 2512 // FIXME packed(2) 2513 STRUCT!{#[repr(packed)] struct DLGTEMPLATE { 2514 style: DWORD, 2515 dwExtendedStyle: DWORD, 2516 cdit: WORD, 2517 x: c_short, 2518 y: c_short, 2519 cx: c_short, 2520 cy: c_short, 2521 }} 2522 pub type LPDLGTEMPLATEA = *mut DLGTEMPLATE; 2523 pub type LPDLGTEMPLATEW = *mut DLGTEMPLATE; 2524 pub type LPCDLGTEMPLATEA = *const DLGTEMPLATE; 2525 pub type LPCDLGTEMPLATEW = *const DLGTEMPLATE; 2526 // FIXME packed(2) 2527 STRUCT!{#[repr(packed)] struct DLGITEMTEMPLATE { 2528 style: DWORD, 2529 dwExtendedStyle: DWORD, 2530 x: c_short, 2531 y: c_short, 2532 cx: c_short, 2533 cy: c_short, 2534 id: WORD, 2535 }} 2536 pub type PDLGITEMTEMPLATEA = *mut DLGITEMTEMPLATE; 2537 pub type PDLGITEMTEMPLATEW = *mut DLGITEMTEMPLATE; 2538 pub type LPDLGITEMTEMPLATEA = *mut DLGITEMTEMPLATE; 2539 pub type LPDLGITEMTEMPLATEW = *mut DLGITEMTEMPLATE; 2540 extern "system" { 2541 pub fn CreateDialogParamA( 2542 hInstance: HINSTANCE, 2543 lpTemplateName: LPCSTR, 2544 hWndParent: HWND, 2545 lpDialogFunc: DLGPROC, 2546 dwInitParam: LPARAM, 2547 ) -> HWND; 2548 pub fn CreateDialogParamW( 2549 hInstance: HINSTANCE, 2550 lpTemplateName: LPCWSTR, 2551 hWndParent: HWND, 2552 lpDialogFunc: DLGPROC, 2553 dwInitParam: LPARAM, 2554 ) -> HWND; 2555 pub fn CreateDialogIndirectParamA( 2556 hInstance: HINSTANCE, 2557 lpTemplate: LPCDLGTEMPLATEA, 2558 hWndParent: HWND, 2559 lpDialogFunc: DLGPROC, 2560 dwInitParam: LPARAM, 2561 ) -> HWND; 2562 pub fn CreateDialogIndirectParamW( 2563 hInstance: HINSTANCE, 2564 lpTemplate: LPCDLGTEMPLATEW, 2565 hWndParent: HWND, 2566 lpDialogFunc: DLGPROC, 2567 dwInitParam: LPARAM, 2568 ) -> HWND; 2569 } 2570 // CreateDialogA 2571 // CreateDialogW 2572 // CreateDialogIndirectA 2573 // CreateDialogIndirectW 2574 extern "system" { 2575 pub fn DialogBoxParamA( 2576 hInstance: HINSTANCE, 2577 lpTemplateName: LPCSTR, 2578 hWndParent: HWND, 2579 lpDialogFunc: DLGPROC, 2580 dwInitParam: LPARAM, 2581 ) -> INT_PTR; 2582 pub fn DialogBoxParamW( 2583 hInstance: HINSTANCE, 2584 lpTemplateName: LPCWSTR, 2585 hWndParent: HWND, 2586 lpDialogFunc: DLGPROC, 2587 dwInitParam: LPARAM, 2588 ) -> INT_PTR; 2589 pub fn DialogBoxIndirectParamA( 2590 hInstance: HINSTANCE, 2591 hDialogTemplate: LPCDLGTEMPLATEA, 2592 hWndParent: HWND, 2593 lpDialogFunc: DLGPROC, 2594 dwInitParam: LPARAM, 2595 ) -> INT_PTR; 2596 pub fn DialogBoxIndirectParamW( 2597 hInstance: HINSTANCE, 2598 hDialogTemplate: LPCDLGTEMPLATEW, 2599 hWndParent: HWND, 2600 lpDialogFunc: DLGPROC, 2601 dwInitParam: LPARAM, 2602 ) -> INT_PTR; 2603 } 2604 // DialogBoxA 2605 // DialogBoxW 2606 // DialogBoxIndirectA 2607 // DialogBoxIndirectW 2608 extern "system" { 2609 pub fn EndDialog( 2610 hDlg: HWND, 2611 nResult: INT_PTR, 2612 ) -> BOOL; 2613 pub fn GetDlgItem( 2614 hDlg: HWND, 2615 nIDDlgItem: c_int, 2616 ) -> HWND; 2617 pub fn SetDlgItemInt( 2618 hDlg: HWND, 2619 nIDDlgItem: c_int, 2620 uValue: UINT, 2621 bSigned: BOOL, 2622 ) -> BOOL; 2623 pub fn GetDlgItemInt( 2624 hDlg: HWND, 2625 nIDDlgItem: c_int, 2626 lpTranslated: *mut BOOL, 2627 bSigned: BOOL, 2628 ) -> UINT; 2629 pub fn SetDlgItemTextA( 2630 hDlg: HWND, 2631 nIDDlgItem: c_int, 2632 lpString: LPCSTR, 2633 ) -> BOOL; 2634 pub fn SetDlgItemTextW( 2635 hDlg: HWND, 2636 nIDDlgItem: c_int, 2637 lpString: LPCWSTR, 2638 ) -> BOOL; 2639 pub fn GetDlgItemTextA( 2640 hDlg: HWND, 2641 nIDDlgItem: c_int, 2642 lpString: LPSTR, 2643 nMaxCount: c_int, 2644 ) -> UINT; 2645 pub fn GetDlgItemTextW( 2646 hDlg: HWND, 2647 nIDDlgItem: c_int, 2648 lpString: LPWSTR, 2649 nMaxCount: c_int, 2650 ) -> UINT; 2651 pub fn CheckDlgButton( 2652 hDlg: HWND, 2653 nIDButton: c_int, 2654 uCheck: UINT, 2655 ) -> BOOL; 2656 pub fn CheckRadioButton( 2657 hDlg: HWND, 2658 nIDFirstButton: c_int, 2659 nIDLasatButton: c_int, 2660 nIDCheckButton: c_int, 2661 ) -> BOOL; 2662 pub fn IsDlgButtonChecked( 2663 hDlg: HWND, 2664 nIDButton: c_int, 2665 ) -> UINT; 2666 pub fn SendDlgItemMessageA( 2667 hDlg: HWND, 2668 nIDDlgItem: c_int, 2669 Msg: UINT, 2670 wParam: WPARAM, 2671 lParam: LPARAM, 2672 ) -> LRESULT; 2673 pub fn SendDlgItemMessageW( 2674 hDlg: HWND, 2675 nIDDlgItem: c_int, 2676 Msg: UINT, 2677 wParam: WPARAM, 2678 lParam: LPARAM, 2679 ) -> LRESULT; 2680 pub fn GetNextDlgGroupItem( 2681 hDlg: HWND, 2682 hCtl: HWND, 2683 bPrevious: BOOL, 2684 ) -> HWND; 2685 pub fn GetNextDlgTabItem( 2686 hDlg: HWND, 2687 hCtl: HWND, 2688 bPrevious: BOOL, 2689 ) -> HWND; 2690 pub fn GetDlgCtrlID( 2691 hwnd: HWND, 2692 ) -> c_int; 2693 pub fn GetDialogBaseUnits() -> LONG; 2694 pub fn DefDlgProcA( 2695 hDlg: HWND, 2696 msg: UINT, 2697 wParam: WPARAM, 2698 lParam: LPARAM, 2699 ) -> LRESULT; 2700 pub fn DefDlgProcW( 2701 hDlg: HWND, 2702 msg: UINT, 2703 wParam: WPARAM, 2704 lParam: LPARAM, 2705 ) -> LRESULT; 2706 } 2707 ENUM!{enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS { 2708 DCDC_DEFAULT = 0x0000, 2709 DCDC_DISABLE_FONT_UPDATE = 0x0001, 2710 DCDC_DISABLE_RELAYOUT = 0x0002, 2711 }} 2712 extern "system" { 2713 pub fn SetDialogControlDpiChangeBehavior( 2714 hwnd: HWND, 2715 mask: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS, 2716 values: DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS, 2717 ) -> BOOL; 2718 pub fn GetDialogControlDpiChangeBehavior( 2719 hwnd: HWND, 2720 ) -> DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS; 2721 } 2722 ENUM!{enum DIALOG_DPI_CHANGE_BEHAVIORS { 2723 DDC_DEFAULT = 0x0000, 2724 DDC_DISABLE_ALL = 0x0001, 2725 DDC_DISABLE_RESIZE = 0x0002, 2726 DDC_DISABLE_CONTROL_RELAYOUT = 0x0004, 2727 }} 2728 extern "system" { 2729 pub fn SetDialogDpiChangeBehavior( 2730 hDlg: HWND, 2731 mask: DIALOG_DPI_CHANGE_BEHAVIORS, 2732 values: DIALOG_DPI_CHANGE_BEHAVIORS, 2733 ) -> BOOL; 2734 pub fn GetDialogDpiChangeBehavior( 2735 hDlg: HWND, 2736 ) -> DIALOG_DPI_CHANGE_BEHAVIORS; 2737 pub fn CallMsgFilterA( 2738 lpMsg: LPMSG, 2739 nCode: c_int, 2740 ) -> BOOL; 2741 pub fn CallMsgFilterW( 2742 lpMsg: LPMSG, 2743 nCode: c_int, 2744 ) -> BOOL; 2745 pub fn OpenClipboard( 2746 hWnd: HWND, 2747 ) -> BOOL; 2748 pub fn CloseClipboard() -> BOOL; 2749 pub fn GetClipboardSequenceNumber() -> DWORD; 2750 pub fn GetClipboardOwner() -> HWND; 2751 pub fn SetClipboardViewer( 2752 hWndNewViewer: HWND, 2753 ) -> HWND; 2754 pub fn GetClipboardViewer() -> HWND; 2755 pub fn ChangeClipboardChain( 2756 hwndRemove: HWND, 2757 hwndNewNext: HWND, 2758 ) -> BOOL; 2759 pub fn SetClipboardData( 2760 uFormat: UINT, 2761 hMem: HANDLE, 2762 ) -> HANDLE; 2763 pub fn GetClipboardData( 2764 uFormat: UINT, 2765 ) -> HANDLE; 2766 pub fn RegisterClipboardFormatA( 2767 lpszFormat: LPCSTR, 2768 ) -> UINT; 2769 pub fn RegisterClipboardFormatW( 2770 lpszFormat: LPCWSTR, 2771 ) -> UINT; 2772 pub fn CountClipboardFormats() -> c_int; 2773 pub fn EnumClipboardFormats( 2774 format: UINT, 2775 ) -> UINT; 2776 pub fn GetClipboardFormatNameA( 2777 format: UINT, 2778 lpszFormatName: LPSTR, 2779 cchMaxCount: c_int, 2780 ) -> c_int; 2781 pub fn GetClipboardFormatNameW( 2782 format: UINT, 2783 lpszFormatName: LPWSTR, 2784 cchMaxCount: c_int, 2785 ) -> c_int; 2786 pub fn EmptyClipboard() -> BOOL; 2787 pub fn IsClipboardFormatAvailable( 2788 format: UINT, 2789 ) -> BOOL; 2790 pub fn GetPriorityClipboardFormat( 2791 paFormatPriorityList: *mut UINT, 2792 cFormats: c_int, 2793 ) -> c_int; 2794 pub fn GetOpenClipboardWindow() -> HWND; 2795 pub fn AddClipboardFormatListener( 2796 hWnd: HWND, 2797 ) -> BOOL; 2798 pub fn RemoveClipboardFormatListener( 2799 hWnd: HWND, 2800 ) -> BOOL; 2801 pub fn GetUpdatedClipboardFormats( 2802 lpuiFormats: PUINT, 2803 cFormats: UINT, 2804 pcFormatsOUT: PUINT, 2805 ) -> BOOL; 2806 pub fn CharToOemA( 2807 pSrc: LPCSTR, 2808 pDst: LPSTR, 2809 ) -> BOOL; 2810 pub fn CharToOemW( 2811 pSrc: LPCWSTR, 2812 pDst: LPSTR, 2813 ) -> BOOL; 2814 pub fn OemToCharA( 2815 pSrc: LPCSTR, 2816 pDst: LPSTR, 2817 ) -> BOOL; 2818 pub fn OemToCharW( 2819 pSrc: LPCSTR, 2820 pDst: LPWSTR, 2821 ) -> BOOL; 2822 pub fn CharToOemBuffA( 2823 lpszSrc: LPCSTR, 2824 lpszDst: LPSTR, 2825 cchDstLength: DWORD, 2826 ) -> BOOL; 2827 pub fn CharToOemBuffW( 2828 lpszSrc: LPCWSTR, 2829 lpszDst: LPSTR, 2830 cchDstLength: DWORD, 2831 ) -> BOOL; 2832 pub fn OemToCharBuffA( 2833 lpszSrc: LPCSTR, 2834 lpszDst: LPSTR, 2835 cchDstLength: DWORD, 2836 ) -> BOOL; 2837 pub fn OemToCharBuffW( 2838 lpszSrc: LPCSTR, 2839 lpszDst: LPWSTR, 2840 cchDstLength: DWORD, 2841 ) -> BOOL; 2842 pub fn CharUpperA( 2843 lpsz: LPSTR, 2844 ) -> LPSTR; 2845 pub fn CharUpperW( 2846 lpsz: LPWSTR, 2847 ) -> LPWSTR; 2848 pub fn CharUpperBuffA( 2849 lpsz: LPSTR, 2850 cchLength: DWORD, 2851 ) -> DWORD; 2852 pub fn CharUpperBuffW( 2853 lpsz: LPWSTR, 2854 cchLength: DWORD, 2855 ) -> DWORD; 2856 pub fn CharLowerA( 2857 lpsz: LPSTR, 2858 ) -> LPSTR; 2859 pub fn CharLowerW( 2860 lpsz: LPWSTR, 2861 ) -> LPWSTR; 2862 pub fn CharLowerBuffA( 2863 lpsz: LPSTR, 2864 cchLength: DWORD, 2865 ) -> DWORD; 2866 pub fn CharLowerBuffW( 2867 lpsz: LPWSTR, 2868 cchLength: DWORD, 2869 ) -> DWORD; 2870 pub fn CharNextA( 2871 lpsz: LPCSTR, 2872 ) -> LPSTR; 2873 pub fn CharNextW( 2874 lpsz: LPCWSTR, 2875 ) -> LPWSTR; 2876 pub fn CharPrevA( 2877 lpszStart: LPCSTR, 2878 lpszCurrent: LPCSTR, 2879 ) -> LPSTR; 2880 pub fn CharPrevW( 2881 lpszStart: LPCWSTR, 2882 lpszCurrent: LPCWSTR, 2883 ) -> LPWSTR; 2884 pub fn CharNextExA( 2885 codePage: WORD, 2886 lpCurrentChar: LPSTR, 2887 dwFlags: DWORD, 2888 ) -> LPSTR; 2889 pub fn CharPrevExA( 2890 codePage: WORD, 2891 lpStart: LPCSTR, 2892 lpCurrentChar: LPCSTR, 2893 dwFlags: DWORD, 2894 ) -> LPSTR; 2895 } 2896 // AnsiToOem 2897 // OemToAnsi 2898 // AnsiToOemBuff 2899 // OemToAnsiBuff 2900 // AnsiUpper 2901 // AnsiUpperBuff 2902 // AnsiLower 2903 // AnsiLowerBuff 2904 // AnsiNext 2905 // AnsiPrev 2906 extern "system" { 2907 pub fn IsCharAlphaA( 2908 ch: CHAR, 2909 ) -> BOOL; 2910 pub fn IsCharAlphaW( 2911 ch: WCHAR, 2912 ) -> BOOL; 2913 pub fn IsCharAlphaNumericA( 2914 ch: CHAR, 2915 ) -> BOOL; 2916 pub fn IsCharAlphaNumericW( 2917 ch: WCHAR, 2918 ) -> BOOL; 2919 pub fn IsCharUpperA( 2920 ch: CHAR, 2921 ) -> BOOL; 2922 pub fn IsCharUpperW( 2923 ch: WCHAR, 2924 ) -> BOOL; 2925 pub fn IsCharLowerA( 2926 ch: CHAR, 2927 ) -> BOOL; 2928 pub fn IsCharLowerW( 2929 ch: WCHAR, 2930 ) -> BOOL; 2931 pub fn SetFocus( 2932 hWnd: HWND, 2933 ) -> HWND; 2934 pub fn GetActiveWindow() -> HWND; 2935 pub fn GetFocus() -> HWND; 2936 pub fn GetKBCodePage() -> UINT; 2937 pub fn GetKeyState( 2938 nVirtKey: c_int, 2939 ) -> SHORT; 2940 pub fn GetAsyncKeyState( 2941 vKey: c_int, 2942 ) -> SHORT; 2943 pub fn GetKeyboardState( 2944 lpKeyState: PBYTE, 2945 ) -> BOOL; 2946 pub fn SetKeyboardState( 2947 lpKeyState: LPBYTE, 2948 ) -> BOOL; 2949 pub fn GetKeyNameTextA( 2950 lparam: LONG, 2951 lpString: LPSTR, 2952 cchSize: c_int, 2953 ) -> c_int; 2954 pub fn GetKeyNameTextW( 2955 lParam: LONG, 2956 lpString: LPWSTR, 2957 cchSize: c_int, 2958 ) -> c_int; 2959 pub fn GetKeyboardType( 2960 nTypeFlag: c_int, 2961 ) -> c_int; 2962 pub fn ToAscii( 2963 uVirtKey: UINT, 2964 uScanCode: UINT, 2965 lpKeyState: *const BYTE, 2966 lpChar: LPWORD, 2967 uFlags: UINT, 2968 ) -> c_int; 2969 pub fn ToAsciiEx( 2970 uVirtKey: UINT, 2971 uScanCode: UINT, 2972 lpKeyState: *const BYTE, 2973 lpChar: LPWORD, 2974 uFlags: UINT, 2975 dwhkl: HKL, 2976 ) -> c_int; 2977 pub fn ToUnicode( 2978 wVirtKey: UINT, 2979 wScanCode: UINT, 2980 lpKeyState: *const BYTE, 2981 lwszBuff: LPWSTR, 2982 cchBuff: c_int, 2983 wFlags: UINT, 2984 ) -> c_int; 2985 pub fn OemKeyScan( 2986 wOemChar: WORD, 2987 ) -> DWORD; 2988 pub fn VkKeyScanA( 2989 ch: CHAR, 2990 ) -> SHORT; 2991 pub fn VkKeyScanW( 2992 ch: WCHAR, 2993 ) -> SHORT; 2994 pub fn VkKeyScanExA( 2995 ch: CHAR, 2996 dwhkl: HKL, 2997 ) -> SHORT; 2998 pub fn VkKeyScanExW( 2999 ch: WCHAR, 3000 dwhkl: HKL, 3001 ) -> SHORT; 3002 } 3003 pub const KEYEVENTF_EXTENDEDKEY: DWORD = 0x0001; 3004 pub const KEYEVENTF_KEYUP: DWORD = 0x0002; 3005 pub const KEYEVENTF_UNICODE: DWORD = 0x0004; 3006 pub const KEYEVENTF_SCANCODE: DWORD = 0x0008; 3007 extern "system" { 3008 pub fn keybd_event( 3009 bVk: BYTE, 3010 bScan: BYTE, 3011 dwFlags: DWORD, 3012 dwExtraInfo: ULONG_PTR, 3013 ); 3014 } 3015 pub const MOUSEEVENTF_MOVE: DWORD = 0x0001; 3016 pub const MOUSEEVENTF_LEFTDOWN: DWORD = 0x0002; 3017 pub const MOUSEEVENTF_LEFTUP: DWORD = 0x0004; 3018 pub const MOUSEEVENTF_RIGHTDOWN: DWORD = 0x0008; 3019 pub const MOUSEEVENTF_RIGHTUP: DWORD = 0x0010; 3020 pub const MOUSEEVENTF_MIDDLEDOWN: DWORD = 0x0020; 3021 pub const MOUSEEVENTF_MIDDLEUP: DWORD = 0x0040; 3022 pub const MOUSEEVENTF_XDOWN: DWORD = 0x0080; 3023 pub const MOUSEEVENTF_XUP: DWORD = 0x0100; 3024 pub const MOUSEEVENTF_WHEEL: DWORD = 0x0800; 3025 pub const MOUSEEVENTF_HWHEEL: DWORD = 0x01000; 3026 pub const MOUSEEVENTF_MOVE_NOCOALESCE: DWORD = 0x2000; 3027 pub const MOUSEEVENTF_VIRTUALDESK: DWORD = 0x4000; 3028 pub const MOUSEEVENTF_ABSOLUTE: DWORD = 0x8000; 3029 extern "system" { 3030 pub fn mouse_event( 3031 dwFlags: DWORD, 3032 dx: DWORD, 3033 dy: DWORD, 3034 dwData: DWORD, 3035 dwExtraInfo: ULONG_PTR, 3036 ); 3037 } 3038 STRUCT!{struct MOUSEINPUT { 3039 dx: LONG, 3040 dy: LONG, 3041 mouseData: DWORD, 3042 dwFlags: DWORD, 3043 time: DWORD, 3044 dwExtraInfo: ULONG_PTR, 3045 }} 3046 pub type PMOUSEINPUT = *mut MOUSEINPUT; 3047 pub type LPMOUSEINPUT = *mut MOUSEINPUT; 3048 STRUCT!{struct KEYBDINPUT { 3049 wVk: WORD, 3050 wScan: WORD, 3051 dwFlags: DWORD, 3052 time: DWORD, 3053 dwExtraInfo: ULONG_PTR, 3054 }} 3055 pub type PKEYBDINPUT = *mut KEYBDINPUT; 3056 pub type LPKEYBDINPUT = *mut KEYBDINPUT; 3057 STRUCT!{struct HARDWAREINPUT { 3058 uMsg: DWORD, 3059 wParamL: WORD, 3060 wParamH: WORD, 3061 }} 3062 pub type PHARDWAREINPUT = *mut HARDWAREINPUT; 3063 pub type LPHARDWAREINPUT= *mut HARDWAREINPUT; 3064 pub const INPUT_MOUSE: DWORD = 0; 3065 pub const INPUT_KEYBOARD: DWORD = 1; 3066 pub const INPUT_HARDWARE: DWORD = 2; 3067 UNION!{union INPUT_u { 3068 [u32; 6] [u64; 4], 3069 mi mi_mut: MOUSEINPUT, 3070 ki ki_mut: KEYBDINPUT, 3071 hi hi_mut: HARDWAREINPUT, 3072 }} 3073 STRUCT!{struct INPUT { 3074 type_: DWORD, 3075 u: INPUT_u, 3076 }} 3077 pub type PINPUT = *mut INPUT; 3078 pub type LPINPUT = *mut INPUT; 3079 extern "system" { 3080 pub fn SendInput( 3081 cInputs: UINT, 3082 pInputs: LPINPUT, 3083 cbSize: c_int, 3084 ) -> UINT; 3085 } 3086 DECLARE_HANDLE!{HTOUCHINPUT, HTOUCHINPUT__} 3087 STRUCT!{struct TOUCHINPUT { 3088 x: LONG, 3089 y: LONG, 3090 hSource: HANDLE, 3091 dwID: DWORD, 3092 dwFlags: DWORD, 3093 dwMask: DWORD, 3094 dwTime: DWORD, 3095 dwExtraInfo: ULONG_PTR, 3096 cxContact: DWORD, 3097 cyContact: DWORD, 3098 }} 3099 pub type PTOUCHINPUT = *mut TOUCHINPUT; 3100 pub type PCTOUCHINPUT = *const TOUCHINPUT; 3101 // TOUCH_COORD_TO_PIXEL 3102 pub const TOUCHEVENTF_MOVE: DWORD = 0x0001; 3103 pub const TOUCHEVENTF_DOWN: DWORD = 0x0002; 3104 pub const TOUCHEVENTF_UP: DWORD = 0x0004; 3105 pub const TOUCHEVENTF_INRANGE: DWORD = 0x0008; 3106 pub const TOUCHEVENTF_PRIMARY: DWORD = 0x0010; 3107 pub const TOUCHEVENTF_NOCOALESCE: DWORD = 0x0020; 3108 pub const TOUCHEVENTF_PEN: DWORD = 0x0040; 3109 pub const TOUCHEVENTF_PALM: DWORD = 0x0080; 3110 pub const TOUCHINPUTMASKF_TIMEFROMSYSTEM: DWORD = 0x0001; 3111 pub const TOUCHINPUTMASKF_EXTRAINFO: DWORD = 0x0002; 3112 pub const TOUCHINPUTMASKF_CONTACTAREA: DWORD = 0x0004; 3113 extern "system" { 3114 pub fn GetTouchInputInfo( 3115 hTouchInput: HTOUCHINPUT, 3116 cInputs: c_uint, 3117 pInputs: PTOUCHINPUT, 3118 cbSize: c_int, 3119 ) -> BOOL; 3120 pub fn CloseTouchInputHandle( 3121 hTouchInput: HTOUCHINPUT, 3122 ) -> BOOL; 3123 } 3124 pub const TWF_FINETOUCH: DWORD = 0x00000001; 3125 pub const TWF_WANTPALM: DWORD = 0x00000002; 3126 extern "system" { 3127 pub fn RegisterTouchWindow( 3128 hWnd: HWND, 3129 flags: ULONG, 3130 ) -> BOOL; 3131 pub fn UnregisterTouchWindow( 3132 hwnd: HWND, 3133 ) -> BOOL; 3134 pub fn IsTouchWindow( 3135 hwnd: HWND, 3136 pulFlags: PULONG, 3137 ) -> BOOL; 3138 } 3139 ENUM!{enum POINTER_INPUT_TYPE { 3140 PT_POINTER = 0x00000001, 3141 PT_TOUCH = 0x00000002, 3142 PT_PEN = 0x00000003, 3143 PT_MOUSE = 0x00000004, 3144 PT_TOUCHPAD = 0x00000005, 3145 }} 3146 ENUM!{enum POINTER_FLAGS { 3147 POINTER_FLAG_NONE = 0x00000000, 3148 POINTER_FLAG_NEW = 0x00000001, 3149 POINTER_FLAG_INRANGE = 0x00000002, 3150 POINTER_FLAG_INCONTACT = 0x00000004, 3151 POINTER_FLAG_FIRSTBUTTON = 0x00000010, 3152 POINTER_FLAG_SECONDBUTTON = 0x00000020, 3153 POINTER_FLAG_THIRDBUTTON = 0x00000040, 3154 POINTER_FLAG_FOURTHBUTTON = 0x00000080, 3155 POINTER_FLAG_FIFTHBUTTON = 0x00000100, 3156 POINTER_FLAG_PRIMARY = 0x00002000, 3157 POINTER_FLAG_CONFIDENCE = 0x00004000, 3158 POINTER_FLAG_CANCELED = 0x00008000, 3159 POINTER_FLAG_DOWN = 0x00010000, 3160 POINTER_FLAG_UPDATE = 0x00020000, 3161 POINTER_FLAG_UP = 0x00040000, 3162 POINTER_FLAG_WHEEL = 0x00080000, 3163 POINTER_FLAG_HWHEEL = 0x00100000, 3164 POINTER_FLAG_CAPTURECHANGED = 0x00200000, 3165 POINTER_FLAG_HASTRANSFORM = 0x00400000, 3166 }} 3167 pub const POINTER_MOD_SHIFT: DWORD = 0x0004; 3168 pub const POINTER_MOD_CTRL: DWORD = 0x0008; 3169 ENUM!{enum POINTER_BUTTON_CHANGE_TYPE { 3170 POINTER_CHANGE_NONE, 3171 POINTER_CHANGE_FIRSTBUTTON_DOWN, 3172 POINTER_CHANGE_FIRSTBUTTON_UP, 3173 POINTER_CHANGE_SECONDBUTTON_DOWN, 3174 POINTER_CHANGE_SECONDBUTTON_UP, 3175 POINTER_CHANGE_THIRDBUTTON_DOWN, 3176 POINTER_CHANGE_THIRDBUTTON_UP, 3177 POINTER_CHANGE_FOURTHBUTTON_DOWN, 3178 POINTER_CHANGE_FOURTHBUTTON_UP, 3179 POINTER_CHANGE_FIFTHBUTTON_DOWN, 3180 POINTER_CHANGE_FIFTHBUTTON_UP, 3181 }} 3182 STRUCT!{struct POINTER_INFO { 3183 pointerType: POINTER_INPUT_TYPE, 3184 pointerId: UINT32, 3185 frameId: UINT32, 3186 pointerFlags: POINTER_FLAGS, 3187 sourceDevice: HANDLE, 3188 hwndTarget: HWND, 3189 ptPixelLocation: POINT, 3190 ptHimetricLocation: POINT, 3191 ptPixelLocationRaw: POINT, 3192 ptHimetricLocationRaw: POINT, 3193 dwTime: DWORD, 3194 historyCount: UINT32, 3195 InputData: INT32, 3196 dwKeyStates: DWORD, 3197 PerformanceCount: UINT64, 3198 ButtonChangeType: POINTER_BUTTON_CHANGE_TYPE, 3199 }} 3200 ENUM!{enum TOUCH_FLAGS { 3201 TOUCH_FLAG_NONE = 0x00000000, 3202 }} 3203 ENUM!{enum TOUCH_MASK { 3204 TOUCH_MASK_NONE = 0x00000000, 3205 TOUCH_MASK_CONTACTAREA = 0x00000001, 3206 TOUCH_MASK_ORIENTATION = 0x00000002, 3207 TOUCH_MASK_PRESSURE = 0x00000004, 3208 }} 3209 STRUCT!{struct POINTER_TOUCH_INFO { 3210 pointerInfo: POINTER_INFO, 3211 touchFlags: TOUCH_FLAGS, 3212 touchMask: TOUCH_MASK, 3213 rcContact: RECT, 3214 rcContactRaw: RECT, 3215 orientation: UINT32, 3216 pressure: UINT32, 3217 }} 3218 ENUM!{enum PEN_FLAGS { 3219 PEN_FLAG_NONE = 0x00000000, 3220 PEN_FLAG_BARREL = 0x00000001, 3221 PEN_FLAG_INVERTED = 0x00000002, 3222 PEN_FLAG_ERASER = 0x00000004, 3223 }} 3224 ENUM!{enum PEN_MASK { 3225 PEN_MASK_NONE = 0x00000000, 3226 PEN_MASK_PRESSURE = 0x00000001, 3227 PEN_MASK_ROTATION = 0x00000002, 3228 PEN_MASK_TILT_X = 0x00000004, 3229 PEN_MASK_TILT_Y = 0x00000008, 3230 }} 3231 STRUCT!{struct POINTER_PEN_INFO { 3232 pointerInfo: POINTER_INFO, 3233 penFlags: PEN_FLAGS, 3234 penMask: PEN_MASK, 3235 pressure: UINT32, 3236 rotation: UINT32, 3237 tiltX: INT32, 3238 tiltY: INT32, 3239 }} 3240 pub const POINTER_MESSAGE_FLAG_NEW: DWORD = 0x00000001; 3241 pub const POINTER_MESSAGE_FLAG_INRANGE: DWORD = 0x00000002; 3242 pub const POINTER_MESSAGE_FLAG_INCONTACT: DWORD = 0x00000004; 3243 pub const POINTER_MESSAGE_FLAG_FIRSTBUTTON: DWORD = 0x00000010; 3244 pub const POINTER_MESSAGE_FLAG_SECONDBUTTON: DWORD = 0x00000020; 3245 pub const POINTER_MESSAGE_FLAG_THIRDBUTTON: DWORD = 0x00000040; 3246 pub const POINTER_MESSAGE_FLAG_FOURTHBUTTON: DWORD = 0x00000080; 3247 pub const POINTER_MESSAGE_FLAG_FIFTHBUTTON: DWORD = 0x00000100; 3248 pub const POINTER_MESSAGE_FLAG_PRIMARY: DWORD = 0x00002000; 3249 pub const POINTER_MESSAGE_FLAG_CONFIDENCE: DWORD = 0x00004000; 3250 pub const POINTER_MESSAGE_FLAG_CANCELED: DWORD = 0x00008000; 3251 pub const PA_ACTIVATE: UINT = MA_ACTIVATE; 3252 pub const PA_NOACTIVATE: UINT = MA_NOACTIVATE; 3253 pub const MAX_TOUCH_COUNT: UINT32 = 256; 3254 pub const TOUCH_FEEDBACK_DEFAULT: DWORD = 0x1; 3255 pub const TOUCH_FEEDBACK_INDIRECT: DWORD = 0x2; 3256 pub const TOUCH_FEEDBACK_NONE: DWORD = 0x3; 3257 ENUM!{enum POINTER_FEEDBACK_MODE { 3258 POINTER_FEEDBACK_DEFAULT = 1, 3259 POINTER_FEEDBACK_INDIRECT = 2, 3260 POINTER_FEEDBACK_NONE = 3, 3261 }} 3262 extern "system" { 3263 pub fn InitializeTouchInjection( 3264 maxCount: UINT32, 3265 dwMode: DWORD, 3266 ) -> BOOL; 3267 pub fn InjectTouchInput( 3268 count: UINT32, 3269 contacts: *const POINTER_TOUCH_INFO, 3270 ) -> BOOL; 3271 } 3272 STRUCT!{struct USAGE_PROPERTIES { 3273 level: USHORT, 3274 page: USHORT, 3275 usage: USHORT, 3276 logicalMinimum: INT32, 3277 logicalMaximum: INT32, 3278 unit: USHORT, 3279 exponent: USHORT, 3280 count: BYTE, 3281 physicalMinimum: INT32, 3282 physicalMaximum: INT32, 3283 }} 3284 pub type PUSAGE_PROPERTIES = *mut USAGE_PROPERTIES; 3285 UNION!{union POINTER_TYPE_INFO_u { 3286 [u64; 17] [u64; 18], 3287 touchInfo touchInfo_mut: POINTER_TOUCH_INFO, 3288 penInfo penInfo_mut: POINTER_PEN_INFO, 3289 }} 3290 STRUCT!{struct POINTER_TYPE_INFO { 3291 type_: POINTER_INPUT_TYPE, 3292 u: POINTER_TYPE_INFO_u, 3293 }} 3294 pub type PPOINTER_TYPE_INFO = *mut POINTER_TYPE_INFO; 3295 STRUCT!{struct INPUT_INJECTION_VALUE { 3296 page: USHORT, 3297 usage: USHORT, 3298 value: INT32, 3299 index: USHORT, 3300 }} 3301 pub type PINPUT_INJECTION_VALUE = *mut INPUT_INJECTION_VALUE; 3302 extern "system" { 3303 pub fn GetPointerType( 3304 pointerId: UINT32, 3305 pointerType: *mut POINTER_INPUT_TYPE, 3306 ) -> BOOL; 3307 pub fn GetPointerCursorId( 3308 pointerId: UINT32, 3309 cursorId: *mut UINT32, 3310 ) -> BOOL; 3311 pub fn GetPointerInfo( 3312 pointerId: UINT32, 3313 pointerInfo: *mut POINTER_INFO, 3314 ) -> BOOL; 3315 pub fn GetPointerInfoHistory( 3316 pointerId: UINT32, 3317 entriesCount: *mut UINT32, 3318 pointerInfo: *mut POINTER_INFO, 3319 ) -> BOOL; 3320 pub fn GetPointerFrameInfo( 3321 pointerId: UINT32, 3322 pointerCount: *mut UINT32, 3323 pointerInfo: *mut POINTER_INFO, 3324 ) -> BOOL; 3325 pub fn GetPointerFrameInfoHistory( 3326 pointerId: UINT32, 3327 entriesCount: *mut UINT32, 3328 pointerCount: *mut UINT32, 3329 pointerInfo: *mut POINTER_INFO, 3330 ) -> BOOL; 3331 pub fn GetPointerTouchInfo( 3332 pointerId: UINT32, 3333 touchInfo: *mut POINTER_TOUCH_INFO, 3334 ) -> BOOL; 3335 pub fn GetPointerTouchInfoHistory( 3336 pointerId: UINT32, 3337 entriesCount: *mut UINT32, 3338 touchInfo: *mut POINTER_TOUCH_INFO, 3339 ) -> BOOL; 3340 pub fn GetPointerFrameTouchInfo( 3341 pointerId: UINT32, 3342 pointerCount: *mut UINT32, 3343 touchInfo: *mut POINTER_TOUCH_INFO, 3344 ) -> BOOL; 3345 pub fn GetPointerFrameTouchInfoHistory( 3346 pointerId: UINT32, 3347 entriesCount: *mut UINT32, 3348 pointerCount: *mut UINT32, 3349 touchInfo: *mut POINTER_TOUCH_INFO, 3350 ) -> BOOL; 3351 pub fn GetPointerPenInfo( 3352 pointerId: UINT32, 3353 penInfo: *mut POINTER_PEN_INFO, 3354 ) -> BOOL; 3355 pub fn GetPointerPenInfoHistory( 3356 pointerId: UINT32, 3357 entriesCount: *mut UINT32, 3358 penInfo: *mut POINTER_PEN_INFO, 3359 ) -> BOOL; 3360 pub fn GetPointerFramePenInfo( 3361 pointerId: UINT32, 3362 pointerCount: *mut UINT32, 3363 penInfo: *mut POINTER_PEN_INFO, 3364 ) -> BOOL; 3365 pub fn GetPointerFramePenInfoHistory( 3366 pointerId: UINT32, 3367 entriesCount: *mut UINT32, 3368 pointerCount: *mut UINT32, 3369 penInfo: *mut POINTER_PEN_INFO, 3370 ) -> BOOL; 3371 pub fn SkipPointerFrameMessages( 3372 pointerId: UINT32, 3373 ) -> BOOL; 3374 pub fn RegisterPointerInputTarget( 3375 hwnd: HWND, 3376 pointerType: POINTER_INPUT_TYPE, 3377 ) -> BOOL; 3378 pub fn UnregisterPointerInputTarget( 3379 hwnd: HWND, 3380 pointerType: POINTER_INPUT_TYPE, 3381 ) -> BOOL; 3382 pub fn RegisterPointerInputTargetEx( 3383 hwnd: HWND, 3384 pointerType: POINTER_INPUT_TYPE, 3385 fObserve: BOOL, 3386 ) -> BOOL; 3387 pub fn UnregisterPointerInputTargetEx( 3388 hwnd: HWND, 3389 pointerType: POINTER_INPUT_TYPE, 3390 ) -> BOOL; 3391 } 3392 DECLARE_HANDLE!{HSYNTHETICPOINTERDEVICE, HSYNTHETICPOINTERDEVICE__} 3393 extern "system" { 3394 pub fn CreateSyntheticPointerDevice( 3395 pointerType: POINTER_INPUT_TYPE, 3396 maxCount: ULONG, 3397 mode: POINTER_FEEDBACK_MODE, 3398 ) -> HSYNTHETICPOINTERDEVICE; 3399 pub fn InjectSyntheticPointerInput( 3400 device: HSYNTHETICPOINTERDEVICE, 3401 pointerInfo: *const POINTER_TYPE_INFO, 3402 count: UINT32, 3403 ) -> BOOL; 3404 pub fn DestroySyntheticPointerDevice( 3405 device: HSYNTHETICPOINTERDEVICE, 3406 ); 3407 } 3408 extern "system" { 3409 pub fn EnableMouseInPointer( 3410 fEnable: BOOL, 3411 ) -> BOOL; 3412 pub fn IsMouseInPointerEnabled() -> BOOL; 3413 } 3414 pub const TOUCH_HIT_TESTING_DEFAULT: ULONG = 0x0; 3415 pub const TOUCH_HIT_TESTING_CLIENT: ULONG = 0x1; 3416 pub const TOUCH_HIT_TESTING_NONE: ULONG = 0x2; 3417 extern "system" { 3418 pub fn RegisterTouchHitTestingWindow( 3419 hwnd: HWND, 3420 value: ULONG, 3421 ) -> BOOL; 3422 } 3423 STRUCT!{struct TOUCH_HIT_TESTING_PROXIMITY_EVALUATION { 3424 score: UINT16, 3425 adjustedPoint: POINT, 3426 }} 3427 pub type PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION = *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION; 3428 STRUCT!{struct TOUCH_HIT_TESTING_INPUT { 3429 pointerId: UINT32, 3430 point: POINT, 3431 boundingBox: RECT, 3432 nonOccludedBoundingBox: RECT, 3433 orientation: UINT32, 3434 }} 3435 pub type PTOUCH_HIT_TESTING_INPUT = *mut TOUCH_HIT_TESTING_INPUT; 3436 pub const TOUCH_HIT_TESTING_PROXIMITY_CLOSEST: UINT16 = 0x0; 3437 pub const TOUCH_HIT_TESTING_PROXIMITY_FARTHEST: UINT16 = 0xFFF; 3438 extern "system" { 3439 pub fn EvaluateProximityToRect( 3440 controlBoundingBox: *const RECT, 3441 pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, 3442 pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, 3443 ) -> BOOL; 3444 pub fn EvaluateProximityToPolygon( 3445 numVertices: UINT32, 3446 controlPolygon: *const POINT, 3447 pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, 3448 pProximityEval: *mut TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, 3449 ) -> BOOL; 3450 pub fn PackTouchHitTestingProximityEvaluation( 3451 pHitTestingInput: *const TOUCH_HIT_TESTING_INPUT, 3452 pProximityEval: *const TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, 3453 ) -> LRESULT; 3454 } 3455 ENUM!{enum FEEDBACK_TYPE { 3456 FEEDBACK_TOUCH_CONTACTVISUALIZATION = 1, 3457 FEEDBACK_PEN_BARRELVISUALIZATION = 2, 3458 FEEDBACK_PEN_TAP = 3, 3459 FEEDBACK_PEN_DOUBLETAP = 4, 3460 FEEDBACK_PEN_PRESSANDHOLD = 5, 3461 FEEDBACK_PEN_RIGHTTAP = 6, 3462 FEEDBACK_TOUCH_TAP = 7, 3463 FEEDBACK_TOUCH_DOUBLETAP = 8, 3464 FEEDBACK_TOUCH_PRESSANDHOLD = 9, 3465 FEEDBACK_TOUCH_RIGHTTAP = 10, 3466 FEEDBACK_GESTURE_PRESSANDTAP = 11, 3467 FEEDBACK_MAX = 0xFFFFFFFF, 3468 }} 3469 pub const GWFS_INCLUDE_ANCESTORS: DWORD = 0x00000001; 3470 extern "system" { 3471 pub fn GetWindowFeedbackSetting( 3472 hwnd: HWND, 3473 feedback: FEEDBACK_TYPE, 3474 dwFlags: DWORD, 3475 pSize: *mut UINT32, 3476 config: *mut VOID, 3477 ) -> BOOL; 3478 pub fn SetWindowFeedbackSetting( 3479 hwnd: HWND, 3480 feedback: FEEDBACK_TYPE, 3481 dwFlags: DWORD, 3482 size: UINT32, 3483 configuration: *const VOID, 3484 ) -> BOOL; 3485 } 3486 STRUCT!{struct INPUT_TRANSFORM { 3487 m: [[f32; 4]; 4], 3488 }} 3489 extern "system" { 3490 pub fn GetPointerInputTransform( 3491 pointerId: UINT32, 3492 historyCount: UINT32, 3493 inputTransform: *mut INPUT_TRANSFORM, 3494 ) -> BOOL; 3495 } 3496 STRUCT!{struct LASTINPUTINFO { 3497 cbSize: UINT, 3498 dwTime: DWORD, 3499 }} 3500 pub type PLASTINPUTINFO = *mut LASTINPUTINFO; 3501 extern "system" { 3502 pub fn GetLastInputInfo( 3503 plii: PLASTINPUTINFO, 3504 ) -> BOOL; 3505 pub fn MapVirtualKeyA( 3506 nCode: UINT, 3507 uMapType: UINT, 3508 ) -> UINT; 3509 pub fn MapVirtualKeyW( 3510 nCode: UINT, 3511 uMapType: UINT, 3512 ) -> UINT; 3513 pub fn MapVirtualKeyExA( 3514 nCode: UINT, 3515 uMapType: UINT, 3516 dwhkl: HKL, 3517 ) -> UINT; 3518 pub fn MapVirtualKeyExW( 3519 nCode: UINT, 3520 uMapType: UINT, 3521 dwhkl: HKL, 3522 ) -> UINT; 3523 } 3524 pub const MAPVK_VK_TO_VSC: UINT = 0; 3525 pub const MAPVK_VSC_TO_VK: UINT = 1; 3526 pub const MAPVK_VK_TO_CHAR: UINT = 2; 3527 pub const MAPVK_VSC_TO_VK_EX: UINT = 3; 3528 pub const MAPVK_VK_TO_VSC_EX: UINT = 4; 3529 extern "system" { 3530 pub fn GetInputState() -> BOOL; 3531 pub fn GetQueueStatus( 3532 flags: UINT, 3533 ) -> DWORD; 3534 pub fn GetCapture() -> HWND; 3535 pub fn SetCapture( 3536 hWnd: HWND, 3537 ) -> HWND; 3538 pub fn ReleaseCapture() -> BOOL; 3539 pub fn MsgWaitForMultipleObjects( 3540 nCount: DWORD, 3541 pHandles: *const HANDLE, 3542 fWaitAll: BOOL, 3543 dwMilliseconds: DWORD, 3544 dwWakeMask: DWORD, 3545 ) -> DWORD; 3546 pub fn MsgWaitForMultipleObjectsEx( 3547 nCount: DWORD, 3548 pHandles: *const HANDLE, 3549 dwMilliseconds: DWORD, 3550 dwWakeMask: DWORD, 3551 dwFlags: DWORD, 3552 ) -> DWORD; 3553 } 3554 pub const MWMO_WAITALL: UINT = 0x0001; 3555 pub const MWMO_ALERTABLE: UINT = 0x0002; 3556 pub const MWMO_INPUTAVAILABLE: UINT = 0x0004; 3557 pub const QS_KEY: UINT = 0x0001; 3558 pub const QS_MOUSEMOVE: UINT = 0x0002; 3559 pub const QS_MOUSEBUTTON: UINT = 0x0004; 3560 pub const QS_POSTMESSAGE: UINT = 0x0008; 3561 pub const QS_TIMER: UINT = 0x0010; 3562 pub const QS_PAINT: UINT = 0x0020; 3563 pub const QS_SENDMESSAGE: UINT = 0x0040; 3564 pub const QS_HOTKEY: UINT = 0x0080; 3565 pub const QS_ALLPOSTMESSAGE: UINT = 0x0100; 3566 pub const QS_RAWINPUT: UINT = 0x0400; 3567 pub const QS_TOUCH: UINT = 0x0800; 3568 pub const QS_POINTER: UINT = 0x1000; 3569 pub const QS_MOUSE: UINT = QS_MOUSEMOVE | QS_MOUSEBUTTON; 3570 pub const QS_INPUT: UINT = QS_MOUSE | QS_KEY | QS_RAWINPUT | QS_TOUCH | QS_POINTER; 3571 pub const QS_ALLEVENTS: UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY; 3572 pub const QS_ALLINPUT: UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY 3573 | QS_SENDMESSAGE; 3574 pub const USER_TIMER_MAXIMUM: UINT = 0x7FFFFFFF; 3575 pub const USER_TIMER_MINIMUM: UINT = 0x0000000A; 3576 extern "system" { 3577 pub fn SetTimer( 3578 hWnd: HWND, 3579 nIDEvent: UINT_PTR, 3580 uElapse: UINT, 3581 lpTimerFunc: TIMERPROC, 3582 ) -> UINT_PTR; 3583 } 3584 pub const TIMERV_DEFAULT_COALESCING: ULONG = 0; 3585 pub const TIMERV_NO_COALESCING: ULONG = 0xFFFFFFFF; 3586 pub const TIMERV_COALESCING_MIN: ULONG = 1; 3587 pub const TIMERV_COALESCING_MAX: ULONG = 0x7FFFFFF5; 3588 extern "system" { 3589 pub fn SetCoalescableTimer( 3590 hWnd: HWND, 3591 nIDEvent: UINT_PTR, 3592 uElapse: UINT, 3593 lpTimerFunc: TIMERPROC, 3594 uToleranceDelay: ULONG, 3595 ) -> UINT_PTR; 3596 pub fn KillTimer( 3597 hWnd: HWND, 3598 uIDEvent: UINT_PTR, 3599 ) -> BOOL; 3600 pub fn IsWindowUnicode( 3601 hWnd: HWND, 3602 ) -> BOOL; 3603 pub fn EnableWindow( 3604 hWnd: HWND, 3605 bEnable: BOOL, 3606 ) -> BOOL; 3607 pub fn IsWindowEnabled( 3608 hWnd: HWND, 3609 ) -> BOOL; 3610 pub fn LoadAcceleratorsA( 3611 hInstance: HINSTANCE, 3612 lpTableName: LPCSTR, 3613 ) -> HACCEL; 3614 pub fn LoadAcceleratorsW( 3615 hInstance: HINSTANCE, 3616 lpTableName: LPCWSTR, 3617 ) -> HACCEL; 3618 pub fn CreateAcceleratorTableA( 3619 paccel: LPACCEL, 3620 cAccel: c_int, 3621 ) -> HACCEL; 3622 pub fn CreateAcceleratorTableW( 3623 paccel: LPACCEL, 3624 cAccel: c_int, 3625 ) -> HACCEL; 3626 pub fn DestroyAcceleratorTable( 3627 hAccel: HACCEL, 3628 ) -> BOOL; 3629 pub fn CopyAcceleratorTableA( 3630 hAccelSrc: HACCEL, 3631 lpAccelDst: LPACCEL, 3632 cAccelEntries: c_int, 3633 ) -> c_int; 3634 pub fn CopyAcceleratorTableW( 3635 hAccelSrc: HACCEL, 3636 lpAccelDst: LPACCEL, 3637 cAccelEntries: c_int, 3638 ) -> c_int; 3639 pub fn TranslateAcceleratorA( 3640 hWnd: HWND, 3641 hAccTable: HACCEL, 3642 lpMsg: LPMSG, 3643 ) -> c_int; 3644 pub fn TranslateAcceleratorW( 3645 hWnd: HWND, 3646 hAccTable: HACCEL, 3647 lpMsg: LPMSG, 3648 ) -> c_int; 3649 } 3650 pub const SM_CXSCREEN: c_int = 0; 3651 pub const SM_CYSCREEN: c_int = 1; 3652 pub const SM_CXVSCROLL: c_int = 2; 3653 pub const SM_CYHSCROLL: c_int = 3; 3654 pub const SM_CYCAPTION: c_int = 4; 3655 pub const SM_CXBORDER: c_int = 5; 3656 pub const SM_CYBORDER: c_int = 6; 3657 pub const SM_CXDLGFRAME: c_int = 7; 3658 pub const SM_CYDLGFRAME: c_int = 8; 3659 pub const SM_CYVTHUMB: c_int = 9; 3660 pub const SM_CXHTHUMB: c_int = 10; 3661 pub const SM_CXICON: c_int = 11; 3662 pub const SM_CYICON: c_int = 12; 3663 pub const SM_CXCURSOR: c_int = 13; 3664 pub const SM_CYCURSOR: c_int = 14; 3665 pub const SM_CYMENU: c_int = 15; 3666 pub const SM_CXFULLSCREEN: c_int = 16; 3667 pub const SM_CYFULLSCREEN: c_int = 17; 3668 pub const SM_CYKANJIWINDOW: c_int = 18; 3669 pub const SM_MOUSEPRESENT: c_int = 19; 3670 pub const SM_CYVSCROLL: c_int = 20; 3671 pub const SM_CXHSCROLL: c_int = 21; 3672 pub const SM_DEBUG: c_int = 22; 3673 pub const SM_SWAPBUTTON: c_int = 23; 3674 pub const SM_RESERVED1: c_int = 24; 3675 pub const SM_RESERVED2: c_int = 25; 3676 pub const SM_RESERVED3: c_int = 26; 3677 pub const SM_RESERVED4: c_int = 27; 3678 pub const SM_CXMIN: c_int = 28; 3679 pub const SM_CYMIN: c_int = 29; 3680 pub const SM_CXSIZE: c_int = 30; 3681 pub const SM_CYSIZE: c_int = 31; 3682 pub const SM_CXFRAME: c_int = 32; 3683 pub const SM_CYFRAME: c_int = 33; 3684 pub const SM_CXMINTRACK: c_int = 34; 3685 pub const SM_CYMINTRACK: c_int = 35; 3686 pub const SM_CXDOUBLECLK: c_int = 36; 3687 pub const SM_CYDOUBLECLK: c_int = 37; 3688 pub const SM_CXICONSPACING: c_int = 38; 3689 pub const SM_CYICONSPACING: c_int = 39; 3690 pub const SM_MENUDROPALIGNMENT: c_int = 40; 3691 pub const SM_PENWINDOWS: c_int = 41; 3692 pub const SM_DBCSENABLED: c_int = 42; 3693 pub const SM_CMOUSEBUTTONS: c_int = 43; 3694 pub const SM_CXFIXEDFRAME: c_int = SM_CXDLGFRAME; 3695 pub const SM_CYFIXEDFRAME: c_int = SM_CYDLGFRAME; 3696 pub const SM_CXSIZEFRAME: c_int = SM_CXFRAME; 3697 pub const SM_CYSIZEFRAME: c_int = SM_CYFRAME; 3698 pub const SM_SECURE: c_int = 44; 3699 pub const SM_CXEDGE: c_int = 45; 3700 pub const SM_CYEDGE: c_int = 46; 3701 pub const SM_CXMINSPACING: c_int = 47; 3702 pub const SM_CYMINSPACING: c_int = 48; 3703 pub const SM_CXSMICON: c_int = 49; 3704 pub const SM_CYSMICON: c_int = 50; 3705 pub const SM_CYSMCAPTION: c_int = 51; 3706 pub const SM_CXSMSIZE: c_int = 52; 3707 pub const SM_CYSMSIZE: c_int = 53; 3708 pub const SM_CXMENUSIZE: c_int = 54; 3709 pub const SM_CYMENUSIZE: c_int = 55; 3710 pub const SM_ARRANGE: c_int = 56; 3711 pub const SM_CXMINIMIZED: c_int = 57; 3712 pub const SM_CYMINIMIZED: c_int = 58; 3713 pub const SM_CXMAXTRACK: c_int = 59; 3714 pub const SM_CYMAXTRACK: c_int = 60; 3715 pub const SM_CXMAXIMIZED: c_int = 61; 3716 pub const SM_CYMAXIMIZED: c_int = 62; 3717 pub const SM_NETWORK: c_int = 63; 3718 pub const SM_CLEANBOOT: c_int = 67; 3719 pub const SM_CXDRAG: c_int = 68; 3720 pub const SM_CYDRAG: c_int = 69; 3721 pub const SM_SHOWSOUNDS: c_int = 70; 3722 pub const SM_CXMENUCHECK: c_int = 71; 3723 pub const SM_CYMENUCHECK: c_int = 72; 3724 pub const SM_SLOWMACHINE: c_int = 73; 3725 pub const SM_MIDEASTENABLED: c_int = 74; 3726 pub const SM_MOUSEWHEELPRESENT: c_int = 75; 3727 pub const SM_XVIRTUALSCREEN: c_int = 76; 3728 pub const SM_YVIRTUALSCREEN: c_int = 77; 3729 pub const SM_CXVIRTUALSCREEN: c_int = 78; 3730 pub const SM_CYVIRTUALSCREEN: c_int = 79; 3731 pub const SM_CMONITORS: c_int = 80; 3732 pub const SM_SAMEDISPLAYFORMAT: c_int = 81; 3733 pub const SM_IMMENABLED: c_int = 82; 3734 pub const SM_CXFOCUSBORDER: c_int = 83; 3735 pub const SM_CYFOCUSBORDER: c_int = 84; 3736 pub const SM_TABLETPC: c_int = 86; 3737 pub const SM_MEDIACENTER: c_int = 87; 3738 pub const SM_STARTER: c_int = 88; 3739 pub const SM_SERVERR2: c_int = 89; 3740 pub const SM_MOUSEHORIZONTALWHEELPRESENT: c_int = 91; 3741 pub const SM_CXPADDEDBORDER: c_int = 92; 3742 pub const SM_DIGITIZER: c_int = 94; 3743 pub const SM_MAXIMUMTOUCHES: c_int = 95; 3744 pub const SM_CMETRICS: c_int = 97; 3745 pub const SM_REMOTESESSION: c_int = 0x1000; 3746 pub const SM_SHUTTINGDOWN: c_int = 0x2000; 3747 pub const SM_REMOTECONTROL: c_int = 0x2001; 3748 pub const SM_CARETBLINKINGENABLED: c_int = 0x2002; 3749 pub const SM_CONVERTIBLESLATEMODE: c_int = 0x2003; 3750 pub const SM_SYSTEMDOCKED: c_int = 0x2004; 3751 extern "system" { 3752 pub fn GetSystemMetrics( 3753 nIndex: c_int, 3754 ) -> c_int; 3755 pub fn GetSystemMetricsForDpi( 3756 nIndex: c_int, 3757 dpi: UINT, 3758 ) -> c_int; 3759 pub fn LoadMenuA( 3760 hInstance: HINSTANCE, 3761 lpMenuName: LPCSTR, 3762 ) -> HMENU; 3763 pub fn LoadMenuW( 3764 hInstance: HINSTANCE, 3765 lpMenuName: LPCWSTR, 3766 ) -> HMENU; 3767 pub fn LoadMenuIndirectA( 3768 lpMenuTemplate: *const MENUTEMPLATEA, 3769 ) -> HMENU; 3770 pub fn LoadMenuIndirectW( 3771 lpMenuTemplate: *const MENUTEMPLATEW, 3772 ) -> HMENU; 3773 pub fn GetMenu( 3774 hWnd: HWND, 3775 ) -> HMENU; 3776 pub fn SetMenu( 3777 hWnd: HWND, 3778 hMenu: HMENU, 3779 ) -> BOOL; 3780 pub fn ChangeMenuA( 3781 hMenu: HMENU, 3782 cmd: UINT, 3783 lpszNewItem: LPCSTR, 3784 cmdInsert: UINT, 3785 flags: UINT, 3786 ) -> BOOL; 3787 pub fn ChangeMenuW( 3788 hMenu: HMENU, 3789 cmd: UINT, 3790 lpszNewItem: LPCWSTR, 3791 cmdInsert: UINT, 3792 flags: UINT, 3793 ) -> BOOL; 3794 pub fn HiliteMenuItem( 3795 hWnd: HWND, 3796 hMenu: HMENU, 3797 uIDHiliteItem: UINT, 3798 uHilite: UINT, 3799 ) -> BOOL; 3800 pub fn GetMenuStringA( 3801 hMenu: HMENU, 3802 uIDItem: UINT, 3803 lpString: LPSTR, 3804 cchMax: c_int, 3805 flags: UINT, 3806 ) -> c_int; 3807 pub fn GetMenuStringW( 3808 hMenu: HMENU, 3809 uIDItem: UINT, 3810 lpString: LPWSTR, 3811 cchMax: c_int, 3812 flags: UINT, 3813 ) -> c_int; 3814 pub fn GetMenuState( 3815 hMenu: HMENU, 3816 uId: UINT, 3817 uFlags: UINT, 3818 ) -> UINT; 3819 pub fn DrawMenuBar( 3820 hwnd: HWND, 3821 ) -> BOOL; 3822 } 3823 pub const PMB_ACTIVE: DWORD = 0x00000001; 3824 extern "system" { 3825 pub fn GetSystemMenu( 3826 hWnd: HWND, 3827 bRevert: BOOL, 3828 ) -> HMENU; 3829 pub fn CreateMenu() -> HMENU; 3830 pub fn CreatePopupMenu() ->HMENU; 3831 pub fn DestroyMenu( 3832 hMenu: HMENU, 3833 ) -> BOOL; 3834 pub fn CheckMenuItem( 3835 hMenu: HMENU, 3836 uIDCheckItem: UINT, 3837 uCheck: UINT, 3838 ) -> DWORD; 3839 pub fn EnableMenuItem( 3840 hMenu: HMENU, 3841 uIDEnableItem: UINT, 3842 uEnable: UINT, 3843 ) -> BOOL; 3844 pub fn GetSubMenu( 3845 hMenu: HMENU, 3846 nPos: c_int, 3847 ) -> HMENU; 3848 pub fn GetMenuItemID( 3849 hMenu: HMENU, 3850 nPos: c_int, 3851 ) -> UINT; 3852 pub fn GetMenuItemCount( 3853 hMenu: HMENU, 3854 ) -> c_int; 3855 pub fn InsertMenuA( 3856 hMenu: HMENU, 3857 uPosition: UINT, 3858 uFlags: UINT, 3859 uIDNewItem: UINT_PTR, 3860 lpNewItem: LPCSTR, 3861 ) -> BOOL; 3862 pub fn InsertMenuW( 3863 hMenu: HMENU, 3864 uPosition: UINT, 3865 uFlags: UINT, 3866 uIDNewItem: UINT_PTR, 3867 lpNewItem: LPCWSTR, 3868 ) -> BOOL; 3869 pub fn AppendMenuA( 3870 hMenu: HMENU, 3871 uFlags: UINT, 3872 uIDNewItem: UINT_PTR, 3873 lpNewItem: LPCSTR, 3874 ) -> BOOL; 3875 pub fn AppendMenuW( 3876 hMenu: HMENU, 3877 uFlags: UINT, 3878 uIDNewItem: UINT_PTR, 3879 lpNewItem: LPCWSTR, 3880 ) -> BOOL; 3881 pub fn ModifyMenuA( 3882 hMnu: HMENU, 3883 uPosition: UINT, 3884 uFlags: UINT, 3885 uIDNewItem: UINT_PTR, 3886 lpNewItem: LPCSTR, 3887 ) -> BOOL; 3888 pub fn ModifyMenuW( 3889 hMnu: HMENU, 3890 uPosition: UINT, 3891 uFlags: UINT, 3892 uIDNewItem: UINT_PTR, 3893 lpNewItem: LPCWSTR, 3894 ) -> BOOL; 3895 pub fn RemoveMenu( 3896 hMenu: HMENU, 3897 uPosition: UINT, 3898 uFlags: UINT, 3899 ) -> BOOL; 3900 pub fn DeleteMenu( 3901 hMenu: HMENU, 3902 uPosition: UINT, 3903 uFlags: UINT, 3904 ) -> BOOL; 3905 pub fn SetMenuItemBitmaps( 3906 hMenu: HMENU, 3907 uPosition: UINT, 3908 uFlags: UINT, 3909 hBitmapUnchecked: HBITMAP, 3910 hBitmapChecked: HBITMAP, 3911 ) -> BOOL; 3912 pub fn GetMenuCheckMarkDimensions() -> LONG; 3913 pub fn TrackPopupMenu( 3914 hMenu: HMENU, 3915 uFlags: UINT, 3916 x: c_int, 3917 y: c_int, 3918 nReserved: c_int, 3919 hWnd: HWND, 3920 prcRect: *const RECT, 3921 ) -> BOOL; 3922 } 3923 pub const MNC_IGNORE: DWORD = 0; 3924 pub const MNC_CLOSE: DWORD = 1; 3925 pub const MNC_EXECUTE: DWORD = 2; 3926 pub const MNC_SELECT: DWORD = 3; 3927 STRUCT!{struct TPMPARAMS { 3928 cbSize: UINT, 3929 rcExclude: RECT, 3930 }} 3931 pub type LPTPMPARAMS = *mut TPMPARAMS; 3932 extern "system" { 3933 pub fn TrackPopupMenuEx( 3934 hMenu: HMENU, 3935 uFlags: UINT, 3936 x: INT, 3937 y: INT, 3938 hwnd: HWND, 3939 lptpm: LPTPMPARAMS, 3940 ) -> BOOL; 3941 pub fn CalculatePopupWindowPosition( 3942 anchorPoint: *const POINT, 3943 windowSize: *const SIZE, 3944 flags: UINT, 3945 excludeRect: *mut RECT, 3946 popupWindowPosition: *mut RECT, 3947 ) -> BOOL; 3948 } 3949 pub const MNS_NOCHECK: DWORD = 0x80000000; 3950 pub const MNS_MODELESS: DWORD = 0x40000000; 3951 pub const MNS_DRAGDROP: DWORD = 0x20000000; 3952 pub const MNS_AUTODISMISS: DWORD = 0x10000000; 3953 pub const MNS_NOTIFYBYPOS: DWORD = 0x08000000; 3954 pub const MNS_CHECKORBMP: DWORD = 0x04000000; 3955 pub const MIM_MAXHEIGHT: DWORD = 0x00000001; 3956 pub const MIM_BACKGROUND: DWORD = 0x00000002; 3957 pub const MIM_HELPID: DWORD = 0x00000004; 3958 pub const MIM_MENUDATA: DWORD = 0x00000008; 3959 pub const MIM_STYLE: DWORD = 0x00000010; 3960 pub const MIM_APPLYTOSUBMENUS: DWORD = 0x80000000; 3961 STRUCT!{struct MENUINFO { 3962 cbSize: DWORD, 3963 fMask: DWORD, 3964 dwStyle: DWORD, 3965 cyMax: UINT, 3966 hbrBack: HBRUSH, 3967 dwContextHelpID: DWORD, 3968 dwMenuData: ULONG_PTR, 3969 }} 3970 pub type LPMENUINFO = *mut MENUINFO; 3971 pub type LPCMENUINFO = *const MENUINFO; 3972 extern "system" { 3973 pub fn GetMenuInfo( 3974 hMenu: HMENU, 3975 lpcmi: LPMENUINFO, 3976 ) -> BOOL; 3977 pub fn SetMenuInfo( 3978 hMenu: HMENU, 3979 lpcmi: LPCMENUINFO, 3980 ) -> BOOL; 3981 pub fn EndMenu( 3982 hMenu: HMENU, 3983 uFlags: UINT, 3984 uIDNewItem: UINT_PTR, 3985 lpNewItem: LPCSTR, 3986 ) -> BOOL; 3987 } 3988 pub const MND_CONTINUE: DWORD = 0; 3989 pub const MND_ENDMENU: DWORD = 1; 3990 STRUCT!{struct MENUGETOBJECTINFO { 3991 dwFlags: DWORD, 3992 uPos: UINT, 3993 hmenu: HMENU, 3994 riid: PVOID, 3995 pvObj: PVOID, 3996 }} 3997 pub type PMENUGETOBJECTINFO = *mut MENUGETOBJECTINFO; 3998 pub const MNGOF_TOPGAP: DWORD = 0x00000001; 3999 pub const MNGOF_BOTTOMGAP: DWORD = 0x00000002; 4000 pub const MNGO_NOINTERFACE: DWORD = 0x00000000; 4001 pub const MNGO_NOERROR: DWORD = 0x00000001; 4002 pub const MIIM_STATE: DWORD = 0x00000001; 4003 pub const MIIM_ID: DWORD = 0x00000002; 4004 pub const MIIM_SUBMENU: DWORD = 0x00000004; 4005 pub const MIIM_CHECKMARKS: DWORD = 0x00000008; 4006 pub const MIIM_TYPE: DWORD = 0x00000010; 4007 pub const MIIM_DATA: DWORD = 0x00000020; 4008 pub const MIIM_STRING: DWORD = 0x00000040; 4009 pub const MIIM_BITMAP: DWORD = 0x00000080; 4010 pub const MIIM_FTYPE: DWORD = 0x00000100; 4011 pub const HBMMENU_CALLBACK: HBITMAP = -1isize as HBITMAP; 4012 pub const HBMMENU_SYSTEM: HBITMAP = 1 as HBITMAP; 4013 pub const HBMMENU_MBAR_RESTORE: HBITMAP = 2 as HBITMAP; 4014 pub const HBMMENU_MBAR_MINIMIZE: HBITMAP = 3 as HBITMAP; 4015 pub const HBMMENU_MBAR_CLOSE: HBITMAP = 5 as HBITMAP; 4016 pub const HBMMENU_MBAR_CLOSE_D: HBITMAP = 6 as HBITMAP; 4017 pub const HBMMENU_MBAR_MINIMIZE_D: HBITMAP = 7 as HBITMAP; 4018 pub const HBMMENU_POPUP_CLOSE: HBITMAP = 8 as HBITMAP; 4019 pub const HBMMENU_POPUP_RESTORE: HBITMAP = 9 as HBITMAP; 4020 pub const HBMMENU_POPUP_MAXIMIZE: HBITMAP = 10 as HBITMAP; 4021 pub const HBMMENU_POPUP_MINIMIZE: HBITMAP = 11 as HBITMAP; 4022 STRUCT!{struct MENUITEMINFOA { 4023 cbSize: UINT, 4024 fMask: UINT, 4025 fType: UINT, 4026 fState: UINT, 4027 wID: UINT, 4028 hSubMenu: HMENU, 4029 hbmpChecked: HBITMAP, 4030 hbmpUnchecked: HBITMAP, 4031 dwItemData: ULONG_PTR, 4032 dwTypeData: LPSTR, 4033 cch: UINT, 4034 hbmpItem: HBITMAP, 4035 }} 4036 pub type LPMENUITEMINFOA = *mut MENUITEMINFOA; 4037 pub type LPCMENUITEMINFOA = *const MENUITEMINFOA; 4038 STRUCT!{struct MENUITEMINFOW { 4039 cbSize: UINT, 4040 fMask: UINT, 4041 fType: UINT, 4042 fState: UINT, 4043 wID: UINT, 4044 hSubMenu: HMENU, 4045 hbmpChecked: HBITMAP, 4046 hbmpUnchecked: HBITMAP, 4047 dwItemData: ULONG_PTR, 4048 dwTypeData: LPWSTR, 4049 cch: UINT, 4050 hbmpItem: HBITMAP, 4051 }} 4052 pub type LPMENUITEMINFOW = *mut MENUITEMINFOW; 4053 pub type LPCMENUITEMINFOW = *const MENUITEMINFOW; 4054 extern "system" { 4055 pub fn InsertMenuItemA( 4056 hmenu: HMENU, 4057 item: UINT, 4058 fByPosition: BOOL, 4059 lpmi: LPCMENUITEMINFOA, 4060 ) -> BOOL; 4061 pub fn InsertMenuItemW( 4062 hmenu: HMENU, 4063 item: UINT, 4064 fByPosition: BOOL, 4065 lpmi: LPCMENUITEMINFOW, 4066 ) -> BOOL; 4067 pub fn GetMenuItemInfoA( 4068 hMenu: HMENU, 4069 uItem: UINT, 4070 fByPosition: BOOL, 4071 lpmii: LPMENUITEMINFOA, 4072 ) -> BOOL; 4073 pub fn GetMenuItemInfoW( 4074 hMenu: HMENU, 4075 uItem: UINT, 4076 fByPosition: BOOL, 4077 lpmii: LPMENUITEMINFOW, 4078 ) -> BOOL; 4079 pub fn SetMenuItemInfoA( 4080 hmenu: HMENU, 4081 item: UINT, 4082 fByPositon: BOOL, 4083 lpmii: LPCMENUITEMINFOA, 4084 ) -> BOOL; 4085 pub fn SetMenuItemInfoW( 4086 hmenu: HMENU, 4087 item: UINT, 4088 fByPositon: BOOL, 4089 lpmii: LPCMENUITEMINFOW, 4090 ) -> BOOL; 4091 } 4092 pub const GMDI_USEDISABLED: DWORD = 0x0001; 4093 pub const GMDI_GOINTOPOPUPS: DWORD = 0x0002; 4094 extern "system" { 4095 pub fn GetMenuDefaultItem( 4096 hMenu: HMENU, 4097 fByPos: UINT, 4098 gmdiFlags: UINT, 4099 ) -> UINT; 4100 pub fn SetMenuDefaultItem( 4101 hMenu: HMENU, 4102 uItem: UINT, 4103 fByPos: UINT, 4104 ) -> BOOL; 4105 pub fn GetMenuItemRect( 4106 hWnd: HWND, 4107 hMenu: HMENU, 4108 uItem: UINT, 4109 lprcItem: LPRECT, 4110 ) -> BOOL; 4111 pub fn MenuItemFromPoint( 4112 hWnd: HWND, 4113 hMenu: HMENU, 4114 ptScreen: POINT, 4115 ) -> c_int; 4116 } 4117 pub const TPM_LEFTBUTTON: UINT = 0x0000; 4118 pub const TPM_RIGHTBUTTON: UINT = 0x0002; 4119 pub const TPM_LEFTALIGN: UINT = 0x0000; 4120 pub const TPM_CENTERALIGN: UINT = 0x0004; 4121 pub const TPM_RIGHTALIGN: UINT = 0x0008; 4122 pub const TPM_TOPALIGN: UINT = 0x0000; 4123 pub const TPM_VCENTERALIGN: UINT = 0x0010; 4124 pub const TPM_BOTTOMALIGN: UINT = 0x0020; 4125 pub const TPM_HORIZONTAL: UINT = 0x0000; 4126 pub const TPM_VERTICAL: UINT = 0x0040; 4127 pub const TPM_NONOTIFY: UINT = 0x0080; 4128 pub const TPM_RETURNCMD: UINT = 0x0100; 4129 pub const TPM_RECURSE: UINT = 0x0001; 4130 pub const TPM_HORPOSANIMATION: UINT = 0x0400; 4131 pub const TPM_HORNEGANIMATION: UINT = 0x0800; 4132 pub const TPM_VERPOSANIMATION: UINT = 0x1000; 4133 pub const TPM_VERNEGANIMATION: UINT = 0x2000; 4134 pub const TPM_NOANIMATION: UINT = 0x4000; 4135 pub const TPM_LAYOUTRTL: UINT = 0x8000; 4136 pub const TPM_WORKAREA: UINT = 0x10000; 4137 STRUCT!{struct DROPSTRUCT { 4138 hwndSource: HWND, 4139 hwndSink: HWND, 4140 wFmt: DWORD, 4141 dwData: ULONG_PTR, 4142 ptDrop: POINT, 4143 dwControlData: DWORD, 4144 }} 4145 pub type PDROPSTRUCT = *mut DROPSTRUCT; 4146 pub type LPDROPSTRUCT = *mut DROPSTRUCT; 4147 pub const DOF_EXECUTABLE: DWORD = 0x8001; 4148 pub const DOF_DOCUMENT: DWORD = 0x8002; 4149 pub const DOF_DIRECTORY: DWORD = 0x8003; 4150 pub const DOF_MULTIPLE: DWORD = 0x8004; 4151 pub const DOF_PROGMAN: DWORD = 0x0001; 4152 pub const DOF_SHELLDATA: DWORD = 0x0002; 4153 pub const DO_DROPFILE: DWORD = 0x454C4946; 4154 pub const DO_PRINTFILE: DWORD = 0x544E5250; 4155 extern "system" { 4156 pub fn DragObject( 4157 hwndParent: HWND, 4158 hwndFrom: HWND, 4159 fmt: UINT, 4160 data: ULONG_PTR, 4161 hcur: HCURSOR, 4162 ) -> DWORD; 4163 pub fn DragDetect( 4164 hwnd: HWND, 4165 pt: POINT, 4166 ) -> BOOL; 4167 pub fn DrawIcon( 4168 hDC: HDC, 4169 x: c_int, 4170 y: c_int, 4171 hIcon: HICON, 4172 ) -> BOOL; 4173 } 4174 pub const DT_TOP: UINT = 0x00000000; 4175 pub const DT_LEFT: UINT = 0x00000000; 4176 pub const DT_CENTER: UINT = 0x00000001; 4177 pub const DT_RIGHT: UINT = 0x00000002; 4178 pub const DT_VCENTER: UINT = 0x00000004; 4179 pub const DT_BOTTOM: UINT = 0x00000008; 4180 pub const DT_WORDBREAK: UINT = 0x00000010; 4181 pub const DT_SINGLELINE: UINT = 0x00000020; 4182 pub const DT_EXPANDTABS: UINT = 0x00000040; 4183 pub const DT_TABSTOP: UINT = 0x00000080; 4184 pub const DT_NOCLIP: UINT = 0x00000100; 4185 pub const DT_EXTERNALLEADING: UINT = 0x00000200; 4186 pub const DT_CALCRECT: UINT = 0x00000400; 4187 pub const DT_NOPREFIX: UINT = 0x00000800; 4188 pub const DT_INTERNAL: UINT = 0x00001000; 4189 pub const DT_EDITCONTROL: UINT = 0x00002000; 4190 pub const DT_PATH_ELLIPSIS: UINT = 0x00004000; 4191 pub const DT_END_ELLIPSIS: UINT = 0x00008000; 4192 pub const DT_MODIFYSTRING: UINT = 0x00010000; 4193 pub const DT_RTLREADING: UINT = 0x00020000; 4194 pub const DT_WORD_ELLIPSIS: UINT = 0x00040000; 4195 pub const DT_NOFULLWIDTHCHARBREAK: UINT = 0x00080000; 4196 pub const DT_HIDEPREFIX: UINT = 0x00100000; 4197 pub const DT_PREFIXONLY: UINT = 0x00200000; 4198 STRUCT!{struct DRAWTEXTPARAMS { 4199 cbSize: UINT, 4200 iTabLength: c_int, 4201 iLeftMargin: c_int, 4202 iRightMargin: c_int, 4203 uiLengthDrawn: UINT, 4204 }} 4205 pub type LPDRAWTEXTPARAMS = *mut DRAWTEXTPARAMS; 4206 extern "system" { 4207 pub fn DrawTextA( 4208 hdc: HDC, 4209 lpchText: LPCSTR, 4210 cchText: c_int, 4211 lprc: LPRECT, 4212 format: UINT, 4213 ) -> c_int; 4214 pub fn DrawTextW( 4215 hdc: HDC, 4216 lpchText: LPCWSTR, 4217 cchText: c_int, 4218 lprc: LPRECT, 4219 format: UINT, 4220 ) -> c_int; 4221 pub fn DrawTextExA( 4222 hdc: HDC, 4223 lpchText: LPCSTR, 4224 cchText: c_int, 4225 lprc: LPRECT, 4226 format: UINT, 4227 lpdtp: LPDRAWTEXTPARAMS, 4228 ) -> c_int; 4229 pub fn DrawTextExW( 4230 hdc: HDC, 4231 lpchText: LPCWSTR, 4232 cchText: c_int, 4233 lprc: LPRECT, 4234 format: UINT, 4235 lpdtp: LPDRAWTEXTPARAMS, 4236 ) -> c_int; 4237 pub fn GrayStringA( 4238 hDC: HDC, 4239 hBrush: HBRUSH, 4240 lpOutputFunc: GRAYSTRINGPROC, 4241 lpData: LPARAM, 4242 nCount: c_int, 4243 X: c_int, 4244 Y: c_int, 4245 nWidth: c_int, 4246 nHeight: c_int, 4247 ) -> BOOL; 4248 pub fn GrayStringW( 4249 hDC: HDC, 4250 hBrush: HBRUSH, 4251 lpOutputFunc: GRAYSTRINGPROC, 4252 lpData: LPARAM, 4253 nCount: c_int, 4254 X: c_int, 4255 Y: c_int, 4256 nWidth: c_int, 4257 nHeight: c_int, 4258 ) -> BOOL; 4259 } 4260 pub const DST_COMPLEX: UINT = 0x0000; 4261 pub const DST_TEXT: UINT = 0x0001; 4262 pub const DST_PREFIXTEXT: UINT = 0x0002; 4263 pub const DST_ICON: UINT = 0x0003; 4264 pub const DST_BITMAP: UINT = 0x0004; 4265 pub const DSS_NORMAL: UINT = 0x0000; 4266 pub const DSS_UNION: UINT = 0x0010; 4267 pub const DSS_DISABLED: UINT = 0x0020; 4268 pub const DSS_MONO: UINT = 0x0080; 4269 pub const DSS_HIDEPREFIX: UINT = 0x0200; 4270 pub const DSS_PREFIXONLY: UINT = 0x0400; 4271 pub const DSS_RIGHT: UINT = 0x8000; 4272 extern "system" { 4273 pub fn DrawStateA( 4274 hdc: HDC, 4275 hbrFore: HBRUSH, 4276 qfnCallBack: DRAWSTATEPROC, 4277 lData: LPARAM, 4278 wData: WPARAM, 4279 x: c_int, 4280 y: c_int, 4281 cx: c_int, 4282 cy: c_int, 4283 uFlags: UINT, 4284 ) -> BOOL; 4285 pub fn DrawStateW( 4286 hdc: HDC, 4287 hbrFore: HBRUSH, 4288 qfnCallBack: DRAWSTATEPROC, 4289 lData: LPARAM, 4290 wData: WPARAM, 4291 x: c_int, 4292 y: c_int, 4293 cx: c_int, 4294 cy: c_int, 4295 uFlags: UINT, 4296 ) -> BOOL; 4297 pub fn TabbedTextOutA( 4298 hdc: HDC, 4299 x: c_int, 4300 y: c_int, 4301 lpString: LPCSTR, 4302 chCount: c_int, 4303 nTabPositions: c_int, 4304 lpnTabStopPositions: *const INT, 4305 nTabOrigin: c_int, 4306 ) -> LONG; 4307 pub fn TabbedTextOutW( 4308 hdc: HDC, 4309 x: c_int, 4310 y: c_int, 4311 lpString: LPCWSTR, 4312 chCount: c_int, 4313 nTabPositions: c_int, 4314 lpnTabStopPositions: *const INT, 4315 nTabOrigin: c_int, 4316 ) -> LONG; 4317 pub fn GetTabbedTextExtentA( 4318 hdc: HDC, 4319 lpString: LPCSTR, 4320 chCount: c_int, 4321 nTabPositions: c_int, 4322 lpnTabStopPositions: *const INT, 4323 ) -> DWORD; 4324 pub fn GetTabbedTextExtentW( 4325 hdc: HDC, 4326 lpString: LPCWSTR, 4327 chCount: c_int, 4328 nTabPositions: c_int, 4329 lpnTabStopPositions: *const INT, 4330 ) -> DWORD; 4331 pub fn UpdateWindow( 4332 hWnd: HWND, 4333 ) -> BOOL; 4334 pub fn SetActiveWindow( 4335 hWnd: HWND, 4336 ) -> HWND; 4337 pub fn GetForegroundWindow() -> HWND; 4338 pub fn PaintDesktop( 4339 hdc: HDC, 4340 ) -> BOOL; 4341 pub fn SwitchToThisWindow( 4342 hwnd: HWND, 4343 fUnknown: BOOL, 4344 ); 4345 pub fn SetForegroundWindow( 4346 hWnd: HWND, 4347 ) -> BOOL; 4348 pub fn AllowSetForegroundWindow( 4349 dwProcessId: DWORD, 4350 ) -> BOOL; 4351 } 4352 pub const ASFW_ANY: DWORD = -1i32 as u32; 4353 extern "system" { 4354 pub fn LockSetForegroundWindow( 4355 uLockCode: UINT, 4356 ) -> BOOL; 4357 } 4358 pub const LSFW_LOCK: UINT = 1; 4359 pub const LSFW_UNLOCK: UINT = 2; 4360 extern "system" { 4361 pub fn WindowFromDC( 4362 hDC: HDC, 4363 ) -> HWND; 4364 pub fn GetDC( 4365 hWnd: HWND, 4366 ) -> HDC; 4367 pub fn GetDCEx( 4368 hWnd: HWND, 4369 hrgnClip: HRGN, 4370 flags: DWORD, 4371 ) -> HDC; 4372 } 4373 pub const DCX_WINDOW: DWORD = 0x00000001; 4374 pub const DCX_CACHE: DWORD = 0x00000002; 4375 pub const DCX_NORESETATTRS: DWORD = 0x00000004; 4376 pub const DCX_CLIPCHILDREN: DWORD = 0x00000008; 4377 pub const DCX_CLIPSIBLINGS: DWORD = 0x00000010; 4378 pub const DCX_PARENTCLIP: DWORD = 0x00000020; 4379 pub const DCX_EXCLUDERGN: DWORD = 0x00000040; 4380 pub const DCX_INTERSECTRGN: DWORD = 0x00000080; 4381 pub const DCX_EXCLUDEUPDATE: DWORD = 0x00000100; 4382 pub const DCX_INTERSECTUPDATE: DWORD = 0x00000200; 4383 pub const DCX_LOCKWINDOWUPDATE: DWORD = 0x00000400; 4384 pub const DCX_VALIDATE: DWORD = 0x00200000; 4385 extern "system" { 4386 pub fn GetWindowDC( 4387 hWnd: HWND, 4388 ) -> HDC; 4389 pub fn ReleaseDC( 4390 hWnd: HWND, 4391 hDC: HDC, 4392 ) -> c_int; 4393 pub fn BeginPaint( 4394 hwnd: HWND, 4395 lpPaint: LPPAINTSTRUCT, 4396 ) -> HDC; 4397 pub fn EndPaint( 4398 hWnd: HWND, 4399 lpPaint: *const PAINTSTRUCT, 4400 ) -> BOOL; 4401 pub fn GetUpdateRect( 4402 hWnd: HWND, 4403 lpRect: LPRECT, 4404 bErase: BOOL, 4405 ) -> BOOL; 4406 pub fn GetUpdateRgn( 4407 hWnd: HWND, 4408 hRgn: HRGN, 4409 bErase: BOOL, 4410 ) -> c_int; 4411 pub fn SetWindowRgn( 4412 hWnd: HWND, 4413 hRgn: HRGN, 4414 bRedraw: BOOL, 4415 ) -> c_int; 4416 pub fn GetWindowRgn( 4417 hWnd: HWND, 4418 hRgn: HRGN, 4419 ) -> c_int; 4420 pub fn GetWindowRgnBox( 4421 hWnd: HWND, 4422 lprc: LPRECT, 4423 ) -> c_int; 4424 pub fn ExcludeUpdateRgn( 4425 hDC: HDC, 4426 hWnd: HWND, 4427 ) -> c_int; 4428 pub fn InvalidateRect( 4429 hWnd: HWND, 4430 lpRect: *const RECT, 4431 bErase: BOOL, 4432 ) -> BOOL; 4433 pub fn ValidateRect( 4434 hWnd: HWND, 4435 lpRect: *const RECT, 4436 ) -> BOOL; 4437 pub fn InvalidateRgn( 4438 hWnd: HWND, 4439 hRgn: HRGN, 4440 bErase: BOOL, 4441 ) -> BOOL; 4442 pub fn ValidateRgn( 4443 hWnd: HWND, 4444 hRgn: HRGN, 4445 ) -> BOOL; 4446 pub fn RedrawWindow( 4447 hwnd: HWND, 4448 lprcUpdate: *const RECT, 4449 hrgnUpdate: HRGN, 4450 flags: UINT, 4451 ) -> BOOL; 4452 } 4453 pub const RDW_INVALIDATE: UINT = 0x0001; 4454 pub const RDW_INTERNALPAINT: UINT = 0x0002; 4455 pub const RDW_ERASE: UINT = 0x0004; 4456 pub const RDW_VALIDATE: UINT = 0x0008; 4457 pub const RDW_NOINTERNALPAINT: UINT = 0x0010; 4458 pub const RDW_NOERASE: UINT = 0x0020; 4459 pub const RDW_NOCHILDREN: UINT = 0x0040; 4460 pub const RDW_ALLCHILDREN: UINT = 0x0080; 4461 pub const RDW_UPDATENOW: UINT = 0x0100; 4462 pub const RDW_ERASENOW: UINT = 0x0200; 4463 pub const RDW_FRAME: UINT = 0x0400; 4464 pub const RDW_NOFRAME: UINT = 0x0800; 4465 extern "system" { 4466 pub fn LockWindowUpdate( 4467 hWndLock: HWND, 4468 ) -> BOOL; 4469 pub fn ScrollWindow( 4470 hWnd: HWND, 4471 xAmount: c_int, 4472 yAmount: c_int, 4473 lpRect: *const RECT, 4474 lpClipRect: *const RECT, 4475 ) -> BOOL; 4476 pub fn ScrollDC( 4477 hDC: HDC, 4478 dx: c_int, 4479 dy: c_int, 4480 lprcScroll: *const RECT, 4481 lprcClip: *const RECT, 4482 hrgnUpdate: HRGN, 4483 lprcUpdate: LPRECT, 4484 ) -> BOOL; 4485 pub fn ScrollWindowEx( 4486 hWnd: HWND, 4487 dx: c_int, 4488 dy: c_int, 4489 prcScroll: *const RECT, 4490 prcClip: *const RECT, 4491 hrgnUpdate: HRGN, 4492 prcUpdate: LPRECT, 4493 flags: UINT, 4494 ) -> c_int; 4495 } 4496 pub const SW_SCROLLCHILDREN: UINT = 0x0001; 4497 pub const SW_INVALIDATE: UINT = 0x0002; 4498 pub const SW_ERASE: UINT = 0x0004; 4499 pub const SW_SMOOTHSCROLL: UINT = 0x0010; 4500 extern "system" { 4501 pub fn SetScrollPos( 4502 hWnd: HWND, 4503 nBar: c_int, 4504 nPos: c_int, 4505 bRedraw: BOOL, 4506 ) -> c_int; 4507 pub fn GetScrollPos( 4508 hWnd: HWND, 4509 nBar: c_int, 4510 ) -> c_int; 4511 pub fn SetScrollRange( 4512 hWnd: HWND, 4513 nBar: c_int, 4514 nMinPos: c_int, 4515 nMaxPos: c_int, 4516 bRedraw: BOOL, 4517 ) -> BOOL; 4518 pub fn GetScrollRange( 4519 hWnd: HWND, 4520 nBar: c_int, 4521 lpMinPos: LPINT, 4522 lpMaxPos: LPINT, 4523 ) -> BOOL; 4524 pub fn ShowScrollBar( 4525 hWnd: HWND, 4526 wBar: c_int, 4527 bShow: BOOL, 4528 ) -> BOOL; 4529 pub fn EnableScrollBar( 4530 hWnd: HWND, 4531 wSBflags: UINT, 4532 wArrows: UINT, 4533 ) -> BOOL; 4534 } 4535 pub const ESB_ENABLE_BOTH: UINT = 0x0000; 4536 pub const ESB_DISABLE_BOTH: UINT = 0x0003; 4537 pub const ESB_DISABLE_LEFT: UINT = 0x0001; 4538 pub const ESB_DISABLE_RIGHT: UINT = 0x0002; 4539 pub const ESB_DISABLE_UP: UINT = 0x0001; 4540 pub const ESB_DISABLE_DOWN: UINT = 0x0002; 4541 pub const ESB_DISABLE_LTUP: UINT = ESB_DISABLE_LEFT; 4542 pub const ESB_DISABLE_RTDN: UINT = ESB_DISABLE_RIGHT; 4543 extern "system" { 4544 pub fn SetPropA( 4545 hWnd: HWND, 4546 lpString: LPCSTR, 4547 hData: HANDLE, 4548 ) -> BOOL; 4549 pub fn SetPropW( 4550 hWnd: HWND, 4551 lpString: LPCWSTR, 4552 hData: HANDLE, 4553 ) -> BOOL; 4554 pub fn GetPropA( 4555 hwnd: HWND, 4556 lpString: LPCSTR, 4557 ) -> HANDLE; 4558 pub fn GetPropW( 4559 hwnd: HWND, 4560 lpString: LPCWSTR, 4561 ) -> HANDLE; 4562 pub fn RemovePropA( 4563 hWnd: HWND, 4564 lpStr: LPCSTR, 4565 ) -> HANDLE; 4566 pub fn RemovePropW( 4567 hWnd: HWND, 4568 lpStr: LPCWSTR, 4569 ) -> HANDLE; 4570 pub fn EnumPropsExA( 4571 hWnd: HWND, 4572 lpEnumFunc: PROPENUMPROCA, 4573 lParam: LPARAM, 4574 ) -> c_int; 4575 pub fn EnumPropsExW( 4576 hWnd: HWND, 4577 lpEnumFunc: PROPENUMPROCW, 4578 lParam: LPARAM, 4579 ) -> c_int; 4580 pub fn EnumPropsA( 4581 hWnd: HWND, 4582 lpEnumFunc: PROPENUMPROCA, 4583 ) -> c_int; 4584 pub fn EnumPropsW( 4585 hWnd: HWND, 4586 lpEnumFunc: PROPENUMPROCW, 4587 ) -> c_int; 4588 pub fn SetWindowTextA( 4589 hWnd: HWND, 4590 lpString: LPCSTR, 4591 ) -> BOOL; 4592 pub fn SetWindowTextW( 4593 hWnd: HWND, 4594 lpString: LPCWSTR, 4595 ) -> BOOL; 4596 pub fn GetWindowTextA( 4597 hWnd: HWND, 4598 lpString: LPSTR, 4599 nMaxCount: c_int, 4600 ) -> c_int; 4601 pub fn GetWindowTextW( 4602 hWnd: HWND, 4603 lpString: LPWSTR, 4604 nMaxCount: c_int, 4605 ) -> c_int; 4606 pub fn GetWindowTextLengthA( 4607 hWnd: HWND, 4608 ) -> c_int; 4609 pub fn GetWindowTextLengthW( 4610 hWnd: HWND, 4611 ) -> c_int; 4612 pub fn GetClientRect( 4613 hWnd: HWND, 4614 lpRect: LPRECT, 4615 ) -> BOOL; 4616 pub fn GetWindowRect( 4617 hWnd: HWND, 4618 lpRect: LPRECT, 4619 ) -> BOOL; 4620 pub fn AdjustWindowRect( 4621 lpRect: LPRECT, 4622 dwStyle: DWORD, 4623 bMenu: BOOL, 4624 ) -> BOOL; 4625 pub fn AdjustWindowRectEx( 4626 lpRect: LPRECT, 4627 dwStyle: DWORD, 4628 bMenu: BOOL, 4629 dwExStyle: DWORD, 4630 ) -> BOOL; 4631 pub fn AdjustWindowRectExForDpi( 4632 lpRect: LPRECT, 4633 dwStyle: DWORD, 4634 bMenu: BOOL, 4635 dwExStyle: DWORD, 4636 dpi: UINT, 4637 ) -> BOOL; 4638 } 4639 pub const HELPINFO_WINDOW: UINT = 0x0001; 4640 pub const HELPINFO_MENUITEM: UINT = 0x0002; 4641 STRUCT!{struct HELPINFO { 4642 cbSize: UINT, 4643 iContextType: c_int, 4644 iCtrlId: c_int, 4645 hItemHandle: HANDLE, 4646 dwContextId: DWORD, 4647 MousePos: POINT, 4648 }} 4649 pub type LPHELPINFO = *mut HELPINFO; 4650 extern "system" { 4651 pub fn SetWindowContextHelpId( 4652 _: HWND, 4653 _: DWORD, 4654 ) -> BOOL; 4655 pub fn GetWindowContextHelpId( 4656 _: HWND, 4657 ) -> DWORD; 4658 pub fn SetMenuContextHelpId( 4659 _: HMENU, 4660 _: DWORD, 4661 ) -> BOOL; 4662 pub fn GetMenuContextHelpId( 4663 _: HMENU, 4664 ) -> DWORD; 4665 } 4666 pub const MB_OK: UINT = 0x00000000; 4667 pub const MB_OKCANCEL: UINT = 0x00000001; 4668 pub const MB_ABORTRETRYIGNORE: UINT = 0x00000002; 4669 pub const MB_YESNOCANCEL: UINT = 0x00000003; 4670 pub const MB_YESNO: UINT = 0x00000004; 4671 pub const MB_RETRYCANCEL: UINT = 0x00000005; 4672 pub const MB_CANCELTRYCONTINUE: UINT = 0x00000006; 4673 pub const MB_ICONHAND: UINT = 0x00000010; 4674 pub const MB_ICONQUESTION: UINT = 0x00000020; 4675 pub const MB_ICONEXCLAMATION: UINT = 0x00000030; 4676 pub const MB_ICONASTERISK: UINT = 0x00000040; 4677 pub const MB_USERICON: UINT = 0x00000080; 4678 pub const MB_ICONWARNING: UINT = MB_ICONEXCLAMATION; 4679 pub const MB_ICONERROR: UINT = MB_ICONHAND; 4680 pub const MB_ICONINFORMATION: UINT = MB_ICONASTERISK; 4681 pub const MB_ICONSTOP: UINT = MB_ICONHAND; 4682 pub const MB_DEFBUTTON1: UINT = 0x00000000; 4683 pub const MB_DEFBUTTON2: UINT = 0x00000100; 4684 pub const MB_DEFBUTTON3: UINT = 0x00000200; 4685 pub const MB_DEFBUTTON4: UINT = 0x00000300; 4686 pub const MB_APPLMODAL: UINT = 0x00000000; 4687 pub const MB_SYSTEMMODAL: UINT = 0x00001000; 4688 pub const MB_TASKMODAL: UINT = 0x00002000; 4689 pub const MB_HELP: UINT = 0x00004000; 4690 pub const MB_NOFOCUS: UINT = 0x00008000; 4691 pub const MB_SETFOREGROUND: UINT = 0x00010000; 4692 pub const MB_DEFAULT_DESKTOP_ONLY: UINT = 0x00020000; 4693 pub const MB_TOPMOST: UINT = 0x00040000; 4694 pub const MB_RIGHT: UINT = 0x00080000; 4695 pub const MB_RTLREADING: UINT = 0x00100000; 4696 pub const MB_SERVICE_NOTIFICATION: UINT = 0x00200000; 4697 pub const MB_SERVICE_NOTIFICATION_NT3X: UINT = 0x00040000; 4698 pub const MB_TYPEMASK: UINT = 0x0000000F; 4699 pub const MB_ICONMASK: UINT = 0x000000F0; 4700 pub const MB_DEFMASK: UINT = 0x00000F00; 4701 pub const MB_MODEMASK: UINT = 0x00003000; 4702 pub const MB_MISCMASK: UINT = 0x0000C000; 4703 extern "system" { 4704 pub fn MessageBoxA( 4705 hWnd: HWND, 4706 lpText: LPCSTR, 4707 lpCaption: LPCSTR, 4708 uType: UINT, 4709 ) -> c_int; 4710 pub fn MessageBoxW( 4711 hWnd: HWND, 4712 lpText: LPCWSTR, 4713 lpCaption: LPCWSTR, 4714 uType: UINT, 4715 ) -> c_int; 4716 pub fn MessageBoxExA( 4717 hWnd: HWND, 4718 lpText: LPCSTR, 4719 lpCaption: LPCSTR, 4720 uType: UINT, 4721 wLanguageId: WORD, 4722 ) -> c_int; 4723 pub fn MessageBoxExW( 4724 hWnd: HWND, 4725 lpText: LPCWSTR, 4726 lpCaption: LPCWSTR, 4727 uType: UINT, 4728 wLanguageId: WORD, 4729 ) -> c_int; 4730 } 4731 FN!{stdcall MSGBOXCALLBACK( 4732 LPHELPINFO, 4733 ) -> ()} 4734 STRUCT!{struct MSGBOXPARAMSA { 4735 cbSize: UINT, 4736 hwndOwner: HWND, 4737 hInstance: HINSTANCE, 4738 lpszText: LPCSTR, 4739 lpszCaption: LPCSTR, 4740 dwStyle: DWORD, 4741 lpszIcon: LPCSTR, 4742 dwContextHelpId: DWORD_PTR, 4743 lpfnMsgBoxCallback: MSGBOXCALLBACK, 4744 dwLanguageId: DWORD, 4745 }} 4746 pub type PMSGBOXPARAMSA = *mut MSGBOXPARAMSA; 4747 pub type LPMSGBOXPARAMSA = *mut MSGBOXPARAMSA; 4748 STRUCT!{struct MSGBOXPARAMSW { 4749 cbSize: UINT, 4750 hwndOwner: HWND, 4751 hInstance: HINSTANCE, 4752 lpszText: LPCWSTR, 4753 lpszCaption: LPCWSTR, 4754 dwStyle: DWORD, 4755 lpszIcon: LPCWSTR, 4756 dwContextHelpId: DWORD_PTR, 4757 lpfnMsgBoxCallback: MSGBOXCALLBACK, 4758 dwLanguageId: DWORD, 4759 }} 4760 pub type PMSGBOXPARAMSW = *mut MSGBOXPARAMSW; 4761 pub type LPMSGBOXPARAMSW = *mut MSGBOXPARAMSW; 4762 extern "system" { 4763 pub fn MessageBoxIndirectA( 4764 lpmbp: *const MSGBOXPARAMSA, 4765 ) -> c_int; 4766 pub fn MessageBoxIndirectW( 4767 lpmbp: *const MSGBOXPARAMSW, 4768 ) -> c_int; 4769 pub fn MessageBeep( 4770 uType: UINT, 4771 ) -> BOOL; 4772 pub fn ShowCursor( 4773 bShow: BOOL, 4774 ) -> c_int; 4775 pub fn SetCursorPos( 4776 X: c_int, 4777 Y: c_int, 4778 ) -> BOOL; 4779 pub fn SetPhysicalCursorPos( 4780 X: c_int, 4781 Y: c_int, 4782 ) -> BOOL; 4783 pub fn SetCursor( 4784 hCursor: HCURSOR, 4785 ) -> HCURSOR; 4786 pub fn GetCursorPos( 4787 lpPoint: LPPOINT, 4788 ) -> BOOL; 4789 pub fn GetPhysicalCursorPos( 4790 lpPoint: LPPOINT, 4791 ) -> BOOL; 4792 pub fn GetClipCursor( 4793 lpRect: LPRECT, 4794 ) -> BOOL; 4795 pub fn GetCursor() -> HCURSOR; 4796 pub fn CreateCaret( 4797 hWnd: HWND, 4798 hBitmap: HBITMAP, 4799 nWidth: c_int, 4800 nHeight: c_int, 4801 ) -> BOOL; 4802 pub fn GetCaretBlinkTime() -> UINT; 4803 pub fn SetCaretBlinkTime( 4804 uMSeconds: UINT, 4805 ) -> BOOL; 4806 pub fn DestroyCaret() -> BOOL; 4807 pub fn HideCaret( 4808 hWnd: HWND, 4809 ) -> BOOL; 4810 pub fn ShowCaret( 4811 hWnd: HWND, 4812 ) -> BOOL; 4813 pub fn SetCaretPos( 4814 X: c_int, 4815 Y: c_int, 4816 ) -> BOOL; 4817 pub fn GetCaretPos( 4818 lpPoint: LPPOINT, 4819 ) -> BOOL; 4820 pub fn ClientToScreen( 4821 hWnd: HWND, 4822 lpPoint: LPPOINT, 4823 ) -> BOOL; 4824 pub fn ScreenToClient( 4825 hWnd: HWND, 4826 lpPoint: LPPOINT, 4827 ) -> BOOL; 4828 pub fn LogicalToPhysicalPoint( 4829 hWnd: HWND, 4830 lpPoint: LPPOINT, 4831 ) -> BOOL; 4832 pub fn PhysicalToLogicalPoint( 4833 hWnd: HWND, 4834 lpPoint: LPPOINT, 4835 ) -> BOOL; 4836 pub fn LogicalToPhysicalPointForPerMonitorDPI( 4837 hWnd: HWND, 4838 lpPoint: LPPOINT, 4839 ) -> BOOL; 4840 pub fn PhysicalToLogicalPointForPerMonitorDPI( 4841 hWnd: HWND, 4842 lpPoint: LPPOINT, 4843 ) -> BOOL; 4844 pub fn MapWindowPoints( 4845 hWndFrom: HWND, 4846 hWndTo: HWND, 4847 lpPoints: LPPOINT, 4848 cPoints: UINT, 4849 ) -> c_int; 4850 pub fn WindowFromPoint( 4851 Point: POINT, 4852 ) -> HWND; 4853 pub fn WindowFromPhysicalPoint( 4854 Point: POINT, 4855 ) -> HWND; 4856 pub fn ChildWindowFromPoint( 4857 hWndParent: HWND, 4858 point: POINT, 4859 ) -> HWND; 4860 pub fn ClipCursor( 4861 lpRect: *const RECT, 4862 ) -> BOOL; 4863 } 4864 pub const CWP_ALL: UINT = 0x0000; 4865 pub const CWP_SKIPINVISIBLE: UINT = 0x0001; 4866 pub const CWP_SKIPDISABLED: UINT = 0x0002; 4867 pub const CWP_SKIPTRANSPARENT: UINT = 0x0004; 4868 extern "system" { 4869 pub fn ChildWindowFromPointEx( 4870 hwnd: HWND, 4871 pt: POINT, 4872 flags: UINT, 4873 ) -> HWND; 4874 } 4875 pub const CTLCOLOR_MSGBOX: c_int = 0; 4876 pub const CTLCOLOR_EDIT: c_int = 1; 4877 pub const CTLCOLOR_LISTBOX: c_int = 2; 4878 pub const CTLCOLOR_BTN: c_int = 3; 4879 pub const CTLCOLOR_DLG: c_int = 4; 4880 pub const CTLCOLOR_SCROLLBAR: c_int = 5; 4881 pub const CTLCOLOR_STATIC: c_int = 6; 4882 pub const CTLCOLOR_MAX: c_int = 7; 4883 pub const COLOR_SCROLLBAR: c_int = 0; 4884 pub const COLOR_BACKGROUND: c_int = 1; 4885 pub const COLOR_ACTIVECAPTION: c_int = 2; 4886 pub const COLOR_INACTIVECAPTION: c_int = 3; 4887 pub const COLOR_MENU: c_int = 4; 4888 pub const COLOR_WINDOW: c_int = 5; 4889 pub const COLOR_WINDOWFRAME: c_int = 6; 4890 pub const COLOR_MENUTEXT: c_int = 7; 4891 pub const COLOR_WINDOWTEXT: c_int = 8; 4892 pub const COLOR_CAPTIONTEXT: c_int = 9; 4893 pub const COLOR_ACTIVEBORDER: c_int = 10; 4894 pub const COLOR_INACTIVEBORDER: c_int = 11; 4895 pub const COLOR_APPWORKSPACE: c_int = 12; 4896 pub const COLOR_HIGHLIGHT: c_int = 13; 4897 pub const COLOR_HIGHLIGHTTEXT: c_int = 14; 4898 pub const COLOR_BTNFACE: c_int = 15; 4899 pub const COLOR_BTNSHADOW: c_int = 16; 4900 pub const COLOR_GRAYTEXT: c_int = 17; 4901 pub const COLOR_BTNTEXT: c_int = 18; 4902 pub const COLOR_INACTIVECAPTIONTEXT: c_int = 19; 4903 pub const COLOR_BTNHIGHLIGHT: c_int = 20; 4904 pub const COLOR_3DDKSHADOW: c_int = 21; 4905 pub const COLOR_3DLIGHT: c_int = 22; 4906 pub const COLOR_INFOTEXT: c_int = 23; 4907 pub const COLOR_INFOBK: c_int = 24; 4908 pub const COLOR_HOTLIGHT: c_int = 26; 4909 pub const COLOR_GRADIENTACTIVECAPTION: c_int = 27; 4910 pub const COLOR_GRADIENTINACTIVECAPTION: c_int = 28; 4911 pub const COLOR_MENUHILIGHT: c_int = 29; 4912 pub const COLOR_MENUBAR: c_int = 30; 4913 pub const COLOR_DESKTOP: c_int = COLOR_BACKGROUND; 4914 pub const COLOR_3DFACE: c_int = COLOR_BTNFACE; 4915 pub const COLOR_3DSHADOW: c_int = COLOR_BTNSHADOW; 4916 pub const COLOR_3DHIGHLIGHT: c_int = COLOR_BTNHIGHLIGHT; 4917 pub const COLOR_3DHILIGHT: c_int = COLOR_BTNHIGHLIGHT; 4918 pub const COLOR_BTNHILIGHT: c_int = COLOR_BTNHIGHLIGHT; 4919 extern "system" { 4920 pub fn GetSysColor( 4921 nIndex: c_int, 4922 ) -> DWORD; 4923 pub fn GetSysColorBrush( 4924 nIndex: c_int, 4925 ) -> HBRUSH; 4926 pub fn SetSysColors( 4927 cElements: c_int, 4928 lpaElements: *const INT, 4929 lpaRgbValues: *const COLORREF, 4930 ) -> BOOL; 4931 pub fn DrawFocusRect( 4932 hDC: HDC, 4933 lprc: *const RECT, 4934 ) -> BOOL; 4935 pub fn FillRect( 4936 hDC: HDC, 4937 lprc: *const RECT, 4938 hbr: HBRUSH, 4939 ) -> c_int; 4940 pub fn FrameRect( 4941 hDC: HDC, 4942 lprc: *const RECT, 4943 hbr: HBRUSH, 4944 ) -> c_int; 4945 pub fn InvertRect( 4946 hDC: HDC, 4947 lprc: *const RECT, 4948 ) -> BOOL; 4949 pub fn SetRect( 4950 lprc: LPRECT, 4951 xLeft: c_int, 4952 yTop: c_int, 4953 xRight: c_int, 4954 yBottom: c_int, 4955 ) -> BOOL; 4956 pub fn SetRectEmpty( 4957 lprc: LPRECT, 4958 ) -> BOOL; 4959 pub fn CopyRect( 4960 lprcDst: LPRECT, 4961 lprcSrc: *const RECT, 4962 ) -> BOOL; 4963 pub fn InflateRect( 4964 lprc: LPRECT, 4965 dx: c_int, 4966 dy: c_int, 4967 ) -> BOOL; 4968 pub fn IntersectRect( 4969 lprcDst: LPRECT, 4970 lprcSrc1: *const RECT, 4971 lprcSrc2: *const RECT, 4972 ) -> BOOL; 4973 pub fn UnionRect( 4974 lprcDst: LPRECT, 4975 lprcSrc1: *const RECT, 4976 lprcSrc2: *const RECT, 4977 ) -> BOOL; 4978 pub fn SubtractRect( 4979 lprcDst: LPRECT, 4980 lprcSrc1: *const RECT, 4981 lprcSrc2: *const RECT, 4982 ) -> BOOL; 4983 pub fn OffsetRect( 4984 lprc: LPRECT, 4985 dx: c_int, 4986 dy: c_int, 4987 ) -> BOOL; 4988 pub fn IsRectEmpty( 4989 lprc: *const RECT, 4990 ) -> BOOL; 4991 pub fn EqualRect( 4992 lprc1: *const RECT, 4993 lprc2: *const RECT, 4994 ) -> BOOL; 4995 pub fn PtInRect( 4996 lprc: *const RECT, 4997 pt: POINT, 4998 ) -> BOOL; 4999 pub fn GetWindowWord( 5000 hWnd: HWND, 5001 nIndex: c_int, 5002 ) -> WORD; 5003 pub fn SetWindowWord( 5004 hwnd: HWND, 5005 nIndex: c_int, 5006 wNewWord: WORD, 5007 ) -> WORD; 5008 pub fn GetWindowLongA( 5009 hWnd: HWND, 5010 nIndex: c_int, 5011 ) -> LONG; 5012 pub fn GetWindowLongW( 5013 hWnd: HWND, 5014 nIndex: c_int, 5015 ) -> LONG; 5016 pub fn SetWindowLongA( 5017 hWnd: HWND, 5018 nIndex: c_int, 5019 dwNewLong: LONG, 5020 ) -> LONG; 5021 pub fn SetWindowLongW( 5022 hWnd: HWND, 5023 nIndex: c_int, 5024 dwNewLong: LONG, 5025 ) -> LONG; 5026 #[cfg(target_pointer_width = "64")] 5027 pub fn GetWindowLongPtrA( 5028 hWnd: HWND, 5029 nIndex: c_int, 5030 ) -> LONG_PTR; 5031 #[cfg(target_pointer_width = "64")] 5032 pub fn GetWindowLongPtrW( 5033 hWnd: HWND, 5034 nIndex: c_int, 5035 ) -> LONG_PTR; 5036 #[cfg(target_pointer_width = "64")] 5037 pub fn SetWindowLongPtrA( 5038 hWnd: HWND, 5039 nIndex: c_int, 5040 dwNewLong: LONG_PTR, 5041 ) -> LONG_PTR; 5042 #[cfg(target_pointer_width = "64")] 5043 pub fn SetWindowLongPtrW( 5044 hWnd: HWND, 5045 nIndex: c_int, 5046 dwNewLong: LONG_PTR, 5047 ) -> LONG_PTR; 5048 } 5049 #[cfg(target_pointer_width = "32")] 5050 pub use self::GetWindowLongA as GetWindowLongPtrA; 5051 #[cfg(target_pointer_width = "32")] 5052 pub use self::GetWindowLongW as GetWindowLongPtrW; 5053 #[cfg(target_pointer_width = "32")] 5054 pub use self::SetWindowLongA as SetWindowLongPtrA; 5055 #[cfg(target_pointer_width = "32")] 5056 pub use self::SetWindowLongW as SetWindowLongPtrW; 5057 extern "system" { 5058 pub fn GetClassWord( 5059 hWnd: HWND, 5060 nIndex: c_int, 5061 ) -> WORD; 5062 pub fn SetClassWord( 5063 hWnd: HWND, 5064 nIndex: c_int, 5065 wNewWord: WORD, 5066 ) -> WORD; 5067 pub fn GetClassLongA( 5068 hWnd: HWND, 5069 nIndex: c_int, 5070 ) -> DWORD; 5071 pub fn GetClassLongW( 5072 hWnd: HWND, 5073 nIndex: c_int, 5074 ) -> DWORD; 5075 pub fn SetClassLongA( 5076 hWnd: HWND, 5077 nIndex: c_int, 5078 dwNewLong: LONG, 5079 ) -> DWORD; 5080 pub fn SetClassLongW( 5081 hWnd: HWND, 5082 nIndex: c_int, 5083 dwNewLong: LONG, 5084 ) -> DWORD; 5085 #[cfg(target_pointer_width = "64")] 5086 pub fn GetClassLongPtrA( 5087 hWnd: HWND, 5088 nIndex: c_int, 5089 ) -> ULONG_PTR; 5090 #[cfg(target_pointer_width = "64")] 5091 pub fn GetClassLongPtrW( 5092 hWnd: HWND, 5093 nIndex: c_int, 5094 ) -> ULONG_PTR; 5095 #[cfg(target_pointer_width = "64")] 5096 pub fn SetClassLongPtrA( 5097 hWnd: HWND, 5098 nIndex: c_int, 5099 dwNewLong: LONG_PTR, 5100 ) -> ULONG_PTR; 5101 #[cfg(target_pointer_width = "64")] 5102 pub fn SetClassLongPtrW( 5103 hWnd: HWND, 5104 nIndex: c_int, 5105 dwNewLong: LONG_PTR, 5106 ) -> ULONG_PTR; 5107 } 5108 #[cfg(target_pointer_width = "32")] 5109 pub use self::GetClassLongA as GetClassLongPtrA; 5110 #[cfg(target_pointer_width = "32")] 5111 pub use self::GetClassLongW as GetClassLongPtrW; 5112 #[cfg(target_pointer_width = "32")] 5113 pub use self::SetClassLongA as SetClassLongPtrA; 5114 #[cfg(target_pointer_width = "32")] 5115 pub use self::SetClassLongW as SetClassLongPtrW; 5116 extern "system" { 5117 pub fn GetProcessDefaultLayout( 5118 pdwDefaultLayout: *mut DWORD, 5119 ) -> BOOL; 5120 pub fn SetProcessDefaultLayout( 5121 dwDefaultLayout: DWORD, 5122 ) -> BOOL; 5123 pub fn GetDesktopWindow() -> HWND; 5124 pub fn GetParent( 5125 hWnd: HWND, 5126 ) -> HWND; 5127 pub fn SetParent( 5128 hWndChild: HWND, 5129 hWndNewParent: HWND, 5130 ) -> HWND; 5131 pub fn EnumChildWindows( 5132 hWndParent: HWND, 5133 lpEnumFunc: WNDENUMPROC, 5134 lParam: LPARAM, 5135 ) -> BOOL; 5136 pub fn FindWindowA( 5137 lpClassName: LPCSTR, 5138 lpWindowName: LPCSTR, 5139 ) -> HWND; 5140 pub fn FindWindowW( 5141 lpClassName: LPCWSTR, 5142 lpWindowName: LPCWSTR, 5143 ) -> HWND; 5144 pub fn FindWindowExA( 5145 hWndParent: HWND, 5146 hWndChildAfter: HWND, 5147 lpszClass: LPCSTR, 5148 lpszWindow: LPCSTR, 5149 ) -> HWND; 5150 pub fn FindWindowExW( 5151 hWndParent: HWND, 5152 hWndChildAfter: HWND, 5153 lpszClass: LPCWSTR, 5154 lpszWindow: LPCWSTR, 5155 ) -> HWND; 5156 pub fn GetShellWindow() -> HWND; 5157 pub fn RegisterShellHookWindow( 5158 hwnd: HWND, 5159 ) -> BOOL; 5160 pub fn DeregisterShellHookWindow( 5161 hwnd: HWND, 5162 ) -> BOOL; 5163 pub fn EnumWindows( 5164 lpEnumFunc: WNDENUMPROC, 5165 lParam: LPARAM, 5166 ) -> BOOL; 5167 pub fn EnumThreadWindows( 5168 dwThreadId: DWORD, 5169 lpfn: WNDENUMPROC, 5170 lParam: LPARAM, 5171 ) -> BOOL; 5172 } 5173 // EnumTaskWindows 5174 extern "system" { 5175 pub fn GetClassNameA( 5176 hWnd: HWND, 5177 lpClassName: LPCSTR, 5178 nMaxCount: c_int, 5179 ) -> c_int; 5180 pub fn GetClassNameW( 5181 hWnd: HWND, 5182 lpClassName: LPCWSTR, 5183 nMaxCount: c_int, 5184 ) -> c_int; 5185 pub fn GetTopWindow( 5186 hWnd: HWND, 5187 ) -> HWND; 5188 } 5189 // GetNextWindow 5190 // GetSysModalWindow 5191 // SetSysModalWindow 5192 extern "system" { 5193 pub fn GetWindowThreadProcessId( 5194 hWnd: HWND, 5195 lpdwProcessId: LPDWORD, 5196 ) -> DWORD; 5197 pub fn IsGUIThread( 5198 bConvert: BOOL, 5199 ) -> BOOL; 5200 pub fn GetLastActivePopup( 5201 hWnd: HWND, 5202 ) -> HWND; 5203 } 5204 pub const GW_HWNDFIRST: UINT = 0; 5205 pub const GW_HWNDLAST: UINT = 1; 5206 pub const GW_HWNDNEXT: UINT = 2; 5207 pub const GW_HWNDPREV: UINT = 3; 5208 pub const GW_OWNER: UINT = 4; 5209 pub const GW_CHILD: UINT = 5; 5210 pub const GW_ENABLEDPOPUP: UINT = 6; 5211 pub const GW_MAX: UINT = 6; 5212 extern "system" { 5213 pub fn GetWindow( 5214 hWnd: HWND, 5215 uCmd: UINT, 5216 ) -> HWND; 5217 pub fn SetWindowsHookA( 5218 nFilterType: c_int, 5219 pfnFilterProc: HOOKPROC, 5220 ) -> HHOOK; 5221 pub fn SetWindowsHookW( 5222 nFilterType: c_int, 5223 pfnFilterProc: HOOKPROC, 5224 ) -> HHOOK; 5225 pub fn UnhookWindowsHook( 5226 nFilterType: c_int, 5227 pfnFilterProc: HOOKPROC, 5228 ) -> BOOL; 5229 pub fn SetWindowsHookExA( 5230 idHook: c_int, 5231 lpfn: HOOKPROC, 5232 hmod: HINSTANCE, 5233 dwThreadId: DWORD, 5234 ) -> HHOOK; 5235 pub fn SetWindowsHookExW( 5236 idHook: c_int, 5237 lpfn: HOOKPROC, 5238 hmod: HINSTANCE, 5239 dwThreadId: DWORD, 5240 ) -> HHOOK; 5241 pub fn UnhookWindowsHookEx( 5242 hhk: HHOOK, 5243 ) -> BOOL; 5244 pub fn CallNextHookEx( 5245 hhk: HHOOK, 5246 nCode: c_int, 5247 wParam: WPARAM, 5248 lParam: LPARAM, 5249 ) -> LRESULT; 5250 } 5251 // DefHookProc 5252 pub const MF_INSERT: UINT = 0x00000000; 5253 pub const MF_CHANGE: UINT = 0x00000080; 5254 pub const MF_APPEND: UINT = 0x00000100; 5255 pub const MF_DELETE: UINT = 0x00000200; 5256 pub const MF_REMOVE: UINT = 0x00001000; 5257 pub const MF_BYCOMMAND: UINT = 0x00000000; 5258 pub const MF_BYPOSITION: UINT = 0x00000400; 5259 pub const MF_SEPARATOR: UINT = 0x00000800; 5260 pub const MF_ENABLED: UINT = 0x00000000; 5261 pub const MF_GRAYED: UINT = 0x00000001; 5262 pub const MF_DISABLED: UINT = 0x00000002; 5263 pub const MF_UNCHECKED: UINT = 0x00000000; 5264 pub const MF_CHECKED: UINT = 0x00000008; 5265 pub const MF_USECHECKBITMAPS: UINT = 0x00000200; 5266 pub const MF_STRING: UINT = 0x00000000; 5267 pub const MF_BITMAP: UINT = 0x00000004; 5268 pub const MF_OWNERDRAW: UINT = 0x00000100; 5269 pub const MF_POPUP: UINT = 0x00000010; 5270 pub const MF_MENUBARBREAK: UINT = 0x00000020; 5271 pub const MF_MENUBREAK: UINT = 0x00000040; 5272 pub const MF_UNHILITE: UINT = 0x00000000; 5273 pub const MF_HILITE: UINT = 0x00000080; 5274 pub const MF_DEFAULT: UINT = 0x00001000; 5275 pub const MF_SYSMENU: UINT = 0x00002000; 5276 pub const MF_HELP: UINT = 0x00004000; 5277 pub const MF_RIGHTJUSTIFY: UINT = 0x00004000; 5278 pub const MF_MOUSESELECT: UINT = 0x00008000; 5279 pub const MF_END: UINT = 0x00000080; 5280 pub const MFT_STRING: UINT = MF_STRING; 5281 pub const MFT_BITMAP: UINT = MF_BITMAP; 5282 pub const MFT_MENUBARBREAK: UINT = MF_MENUBARBREAK; 5283 pub const MFT_MENUBREAK: UINT = MF_MENUBREAK; 5284 pub const MFT_OWNERDRAW: UINT = MF_OWNERDRAW; 5285 pub const MFT_RADIOCHECK: UINT = 0x00000200; 5286 pub const MFT_SEPARATOR: UINT = MF_SEPARATOR; 5287 pub const MFT_RIGHTORDER: UINT = 0x00002000; 5288 pub const MFT_RIGHTJUSTIFY: UINT = MF_RIGHTJUSTIFY; 5289 pub const MFS_GRAYED: UINT = 0x00000003; 5290 pub const MFS_DISABLED: UINT = MFS_GRAYED; 5291 pub const MFS_CHECKED: UINT = MF_CHECKED; 5292 pub const MFS_HILITE: UINT = MF_HILITE; 5293 pub const MFS_ENABLED: UINT = MF_ENABLED; 5294 pub const MFS_UNCHECKED: UINT = MF_UNCHECKED; 5295 pub const MFS_UNHILITE: UINT = MF_UNHILITE; 5296 pub const MFS_DEFAULT: UINT = MF_DEFAULT; 5297 extern "system" { 5298 pub fn CheckMenuRadioItem( 5299 hMenu: HMENU, 5300 first: UINT, 5301 last: UINT, 5302 check: UINT, 5303 flags: UINT, 5304 ) -> BOOL; 5305 } 5306 //10225 5307 pub const SC_SIZE: WPARAM = 0xF000; 5308 pub const SC_MOVE: WPARAM = 0xF010; 5309 pub const SC_MINIMIZE: WPARAM = 0xF020; 5310 pub const SC_MAXIMIZE: WPARAM = 0xF030; 5311 pub const SC_NEXTWINDOW: WPARAM = 0xF040; 5312 pub const SC_PREVWINDOW: WPARAM = 0xF050; 5313 pub const SC_CLOSE: WPARAM = 0xF060; 5314 pub const SC_VSCROLL: WPARAM = 0xF070; 5315 pub const SC_HSCROLL: WPARAM = 0xF080; 5316 pub const SC_MOUSEMENU: WPARAM = 0xF090; 5317 pub const SC_KEYMENU: WPARAM = 0xF100; 5318 pub const SC_ARRANGE: WPARAM = 0xF110; 5319 pub const SC_RESTORE: WPARAM = 0xF120; 5320 pub const SC_TASKLIST: WPARAM = 0xF130; 5321 pub const SC_SCREENSAVE: WPARAM = 0xF140; 5322 pub const SC_HOTKEY: WPARAM = 0xF150; 5323 pub const SC_DEFAULT: WPARAM = 0xF160; 5324 pub const SC_MONITORPOWER: WPARAM = 0xF170; 5325 pub const SC_CONTEXTHELP: WPARAM = 0xF180; 5326 pub const SC_SEPARATOR: WPARAM = 0xF00F; 5327 //10269 5328 extern "system" { 5329 pub fn LoadBitmapA( 5330 hInstance: HINSTANCE, 5331 lpBitmapName: LPCSTR, 5332 ) -> HBITMAP; 5333 pub fn LoadBitmapW( 5334 hInstance: HINSTANCE, 5335 lpBitmapName: LPCWSTR, 5336 ) -> HBITMAP; 5337 pub fn LoadCursorA( 5338 hInstance: HINSTANCE, 5339 lpCursorName: LPCSTR, 5340 ) -> HCURSOR; 5341 pub fn LoadCursorW( 5342 hInstance: HINSTANCE, 5343 lpCursorName: LPCWSTR, 5344 ) -> HCURSOR; 5345 pub fn LoadCursorFromFileA( 5346 lpFileName: LPCSTR, 5347 ) -> HCURSOR; 5348 pub fn LoadCursorFromFileW( 5349 lpFileName: LPCWSTR, 5350 ) -> HCURSOR; 5351 pub fn CreateCursor( 5352 hInst: HINSTANCE, 5353 xHotSpot: c_int, 5354 yHotSpot: c_int, 5355 nWidth: c_int, 5356 nHeight: c_int, 5357 pvAndPlane: *const VOID, 5358 pvXORPlane: *const VOID, 5359 ) -> HCURSOR; 5360 pub fn DestroyCursor( 5361 hCursor: HCURSOR, 5362 ) -> BOOL; 5363 } 5364 //10355 5365 pub const IDC_ARROW: LPCWSTR = 32512 as LPCWSTR; 5366 pub const IDC_IBEAM: LPCWSTR = 32513 as LPCWSTR; 5367 pub const IDC_WAIT: LPCWSTR = 32514 as LPCWSTR; 5368 pub const IDC_CROSS: LPCWSTR = 32515 as LPCWSTR; 5369 pub const IDC_UPARROW: LPCWSTR = 32516 as LPCWSTR; 5370 pub const IDC_SIZE: LPCWSTR = 32640 as LPCWSTR; 5371 pub const IDC_ICON: LPCWSTR = 32641 as LPCWSTR; 5372 pub const IDC_SIZENWSE: LPCWSTR = 32642 as LPCWSTR; 5373 pub const IDC_SIZENESW: LPCWSTR = 32643 as LPCWSTR; 5374 pub const IDC_SIZEWE: LPCWSTR = 32644 as LPCWSTR; 5375 pub const IDC_SIZENS: LPCWSTR = 32645 as LPCWSTR; 5376 pub const IDC_SIZEALL: LPCWSTR = 32646 as LPCWSTR; 5377 pub const IDC_NO: LPCWSTR = 32648 as LPCWSTR; 5378 pub const IDC_HAND: LPCWSTR = 32649 as LPCWSTR; 5379 pub const IDC_APPSTARTING: LPCWSTR = 32650 as LPCWSTR; 5380 pub const IDC_HELP: LPCWSTR = 32651 as LPCWSTR; 5381 extern "system" { 5382 pub fn SetSystemCursor( 5383 hcur: HCURSOR, 5384 id: DWORD, 5385 ) -> BOOL; 5386 } 5387 STRUCT!{struct ICONINFO { 5388 fIcon: BOOL, 5389 xHotspot: DWORD, 5390 yHotspot: DWORD, 5391 hbmMask: HBITMAP, 5392 hbmColor: HBITMAP, 5393 }} 5394 pub type PICONINFO = *mut ICONINFO; 5395 extern "system" { 5396 pub fn LoadIconA( 5397 hInstance: HINSTANCE, 5398 lpIconName: LPCSTR, 5399 ) -> HICON; 5400 pub fn LoadIconW( 5401 hInstance: HINSTANCE, 5402 lpIconName: LPCWSTR, 5403 ) -> HICON; 5404 } 5405 //10449 5406 extern "system" { 5407 pub fn CreateIcon( 5408 hInstance: HINSTANCE, 5409 nWidth: c_int, 5410 nHeight: c_int, 5411 cPlanes: BYTE, 5412 cBitsPixel: BYTE, 5413 lpbANDbits: *const BYTE, 5414 lpbXORbits: *const BYTE, 5415 ) -> HICON; 5416 pub fn DestroyIcon( 5417 hIcon: HICON, 5418 ) -> BOOL; 5419 pub fn LookupIconIdFromDirectory( 5420 presbits: PBYTE, 5421 fIcon: BOOL, 5422 ) -> c_int; 5423 pub fn LookupIconIdFromDirectoryEx( 5424 presbits: PBYTE, 5425 fIcon: BOOL, 5426 cxDesired: c_int, 5427 cyDesired: c_int, 5428 Flags: UINT, 5429 ) -> c_int; 5430 pub fn CreateIconFromResource( 5431 presbits: PBYTE, 5432 dwResSize: DWORD, 5433 fIcon: BOOL, 5434 dwVer: DWORD, 5435 ) -> HICON; 5436 pub fn CreateIconFromResourceEx( 5437 presbits: PBYTE, 5438 dwResSize: DWORD, 5439 fIcon: BOOL, 5440 dwVer: DWORD, 5441 cxDesired: c_int, 5442 cyDesired: c_int, 5443 Flags: UINT, 5444 ) -> HICON; 5445 } 5446 //10524 5447 pub const IMAGE_BITMAP: UINT = 0; 5448 pub const IMAGE_ICON: UINT = 1; 5449 pub const IMAGE_CURSOR: UINT = 2; 5450 pub const IMAGE_ENHMETAFILE: UINT = 3; 5451 pub const LR_DEFAULTCOLOR: UINT = 0x00000000; 5452 pub const LR_MONOCHROME: UINT = 0x00000001; 5453 pub const LR_COLOR: UINT = 0x00000002; 5454 pub const LR_COPYRETURNORG: UINT = 0x00000004; 5455 pub const LR_COPYDELETEORG: UINT = 0x00000008; 5456 pub const LR_LOADFROMFILE: UINT = 0x00000010; 5457 pub const LR_LOADTRANSPARENT: UINT = 0x00000020; 5458 pub const LR_DEFAULTSIZE: UINT = 0x00000040; 5459 pub const LR_VGACOLOR: UINT = 0x00000080; 5460 pub const LR_LOADMAP3DCOLORS: UINT = 0x00001000; 5461 pub const LR_CREATEDIBSECTION: UINT = 0x00002000; 5462 pub const LR_COPYFROMRESOURCE: UINT = 0x00004000; 5463 pub const LR_SHARED: UINT = 0x00008000; 5464 extern "system" { 5465 pub fn LoadImageA( 5466 hInst: HINSTANCE, 5467 name: LPCSTR, 5468 type_: UINT, 5469 cx: c_int, 5470 cy: c_int, 5471 fuLoad: UINT, 5472 ) -> HANDLE; 5473 pub fn LoadImageW( 5474 hInst: HINSTANCE, 5475 name: LPCWSTR, 5476 type_: UINT, 5477 cx: c_int, 5478 cy: c_int, 5479 fuLoad: UINT, 5480 ) -> HANDLE; 5481 pub fn CopyImage( 5482 h: HANDLE, 5483 type_: UINT, 5484 cx: c_int, 5485 cy: c_int, 5486 flags: UINT, 5487 ) -> HANDLE; 5488 } 5489 //10592 5490 extern "system" { 5491 pub fn DrawIconEx( 5492 hdc: HDC, 5493 xLeft: c_int, 5494 yTop: c_int, 5495 hIcon: HICON, 5496 cxWidth: c_int, 5497 cyWidth: c_int, 5498 istepIfAniCur: UINT, 5499 hbrFlickerFreeDraw: HBRUSH, 5500 diFlags: UINT, 5501 ) -> BOOL; 5502 pub fn CreateIconIndirect( 5503 piconinfo: PICONINFO, 5504 ) -> HICON; 5505 pub fn CopyIcon( 5506 hIcon: HICON, 5507 ) -> HICON; 5508 pub fn GetIconInfo( 5509 hIcon: HICON, 5510 piconinfo: PICONINFO, 5511 ) -> BOOL; 5512 } 5513 //10781 5514 pub const IDI_APPLICATION: LPCWSTR = 32512 as LPCWSTR; 5515 pub const IDI_HAND: LPCWSTR = 32513 as LPCWSTR; 5516 pub const IDI_QUESTION: LPCWSTR = 32514 as LPCWSTR; 5517 pub const IDI_EXCLAMATION: LPCWSTR = 32515 as LPCWSTR; 5518 pub const IDI_ASTERISK: LPCWSTR = 32516 as LPCWSTR; 5519 pub const IDI_WINLOGO: LPCWSTR = 32517 as LPCWSTR; 5520 pub const IDI_SHIELD: LPCWSTR = 32518 as LPCWSTR; 5521 pub const IDI_WARNING: LPCWSTR = IDI_EXCLAMATION; 5522 pub const IDI_ERROR: LPCWSTR = IDI_HAND; 5523 pub const IDI_INFORMATION: LPCWSTR = IDI_ASTERISK; 5524 //10853 5525 pub const IDOK: c_int = 1; 5526 pub const IDCANCEL: c_int = 2; 5527 pub const IDABORT: c_int = 3; 5528 pub const IDRETRY: c_int = 4; 5529 pub const IDIGNORE: c_int = 5; 5530 pub const IDYES: c_int = 6; 5531 pub const IDNO: c_int = 7; 5532 pub const IDCLOSE: c_int = 8; 5533 pub const IDHELP: c_int = 9; 5534 pub const IDTRYAGAIN: c_int = 10; 5535 pub const IDCONTINUE: c_int = 11; 5536 pub const IDTIMEOUT: c_int = 32000; 5537 pub const ES_LEFT: DWORD = 0x0000; 5538 pub const ES_CENTER: DWORD = 0x0001; 5539 pub const ES_RIGHT: DWORD = 0x0002; 5540 pub const ES_MULTILINE: DWORD = 0x0004; 5541 pub const ES_UPPERCASE: DWORD = 0x0008; 5542 pub const ES_LOWERCASE: DWORD = 0x0010; 5543 pub const ES_PASSWORD: DWORD = 0x0020; 5544 pub const ES_AUTOVSCROLL: DWORD = 0x0040; 5545 pub const ES_AUTOHSCROLL: DWORD = 0x0080; 5546 pub const ES_NOHIDESEL: DWORD = 0x0100; 5547 pub const ES_OEMCONVERT: DWORD = 0x0400; 5548 pub const ES_READONLY: DWORD = 0x0800; 5549 pub const ES_WANTRETURN: DWORD = 0x1000; 5550 pub const ES_NUMBER: DWORD = 0x2000; 5551 pub const EN_SETFOCUS: WORD = 0x0100; 5552 pub const EN_KILLFOCUS: WORD = 0x0200; 5553 pub const EN_CHANGE: WORD = 0x0300; 5554 pub const EN_UPDATE: WORD = 0x0400; 5555 pub const EN_ERRSPACE: WORD = 0x0500; 5556 pub const EN_MAXTEXT: WORD = 0x0501; 5557 pub const EN_HSCROLL: WORD = 0x0601; 5558 pub const EN_VSCROLL: WORD = 0x0602; 5559 pub const EN_ALIGN_LTR_EC: WORD = 0x0700; 5560 pub const EN_ALIGN_RTL_EC: WORD = 0x0701; 5561 pub const EC_LEFTMARGIN: WORD = 0x0001; 5562 pub const EC_RIGHTMARGIN: WORD = 0x0002; 5563 pub const EC_USEFONTINFO: WORD = 0xffff; 5564 pub const EMSIS_COMPOSITIONSTRING: WORD = 0x0001; 5565 pub const EIMES_GETCOMPSTRATONCE: WORD = 0x0001; 5566 pub const EIMES_CANCELCOMPSTRINFOCUS: WORD = 0x0002; 5567 pub const EIMES_COMPLETECOMPSTRKILLFOCUS: WORD = 0x0004; 5568 pub const EM_GETSEL: WORD = 0x00B0; 5569 pub const EM_SETSEL: WORD = 0x00B1; 5570 pub const EM_GETRECT: WORD = 0x00B2; 5571 pub const EM_SETRECT: WORD = 0x00B3; 5572 pub const EM_SETRECTNP: WORD = 0x00B4; 5573 pub const EM_SCROLL: WORD = 0x00B5; 5574 pub const EM_LINESCROLL: WORD = 0x00B6; 5575 pub const EM_SCROLLCARET: WORD = 0x00B7; 5576 pub const EM_GETMODIFY: WORD = 0x00B8; 5577 pub const EM_SETMODIFY: WORD = 0x00B9; 5578 pub const EM_GETLINECOUNT: WORD = 0x00BA; 5579 pub const EM_LINEINDEX: WORD = 0x00BB; 5580 pub const EM_SETHANDLE: WORD = 0x00BC; 5581 pub const EM_GETHANDLE: WORD = 0x00BD; 5582 pub const EM_GETTHUMB: WORD = 0x00BE; 5583 pub const EM_LINELENGTH: WORD = 0x00C1; 5584 pub const EM_REPLACESEL: WORD = 0x00C2; 5585 pub const EM_GETLINE: WORD = 0x00C4; 5586 pub const EM_LIMITTEXT: WORD = 0x00C5; 5587 pub const EM_CANUNDO: WORD = 0x00C6; 5588 pub const EM_UNDO: WORD = 0x00C7; 5589 pub const EM_FMTLINES: WORD = 0x00C8; 5590 pub const EM_LINEFROMCHAR: WORD = 0x00C9; 5591 pub const EM_SETTABSTOPS: WORD = 0x00CB; 5592 pub const EM_SETPASSWORDCHAR: WORD = 0x00CC; 5593 pub const EM_EMPTYUNDOBUFFER: WORD = 0x00CD; 5594 pub const EM_GETFIRSTVISIBLELINE: WORD = 0x00CE; 5595 pub const EM_SETREADONLY: WORD = 0x00CF; 5596 pub const EM_SETWORDBREAKPROC: WORD = 0x00D0; 5597 pub const EM_GETWORDBREAKPROC: WORD = 0x00D1; 5598 pub const EM_GETPASSWORDCHAR: WORD = 0x00D2; 5599 pub const EM_SETMARGINS: WORD = 0x00D3; 5600 pub const EM_GETMARGINS: WORD = 0x00D4; 5601 pub const EM_SETLIMITTEXT: WORD = EM_LIMITTEXT; 5602 pub const EM_GETLIMITTEXT: WORD = 0x00D5; 5603 pub const EM_POSFROMCHAR: WORD = 0x00D6; 5604 pub const EM_CHARFROMPOS: WORD = 0x00D7; 5605 pub const EM_SETIMESTATUS: WORD = 0x00D8; 5606 pub const EM_GETIMESTATUS: WORD = 0x00D9; 5607 pub const WB_LEFT: WORD = 0; 5608 pub const WB_RIGHT: WORD = 1; 5609 pub const WB_ISDELIMITER: WORD = 2; 5610 pub const BN_CLICKED: WORD = 0; 5611 pub const BN_PAINT: WORD = 1; 5612 pub const BN_HILITE: WORD = 2; 5613 pub const BN_UNHILITE: WORD = 3; 5614 pub const BN_DISABLE: WORD = 4; 5615 pub const BN_DOUBLECLICKED: WORD = 5; 5616 pub const BN_PUSHED: WORD = BN_HILITE; 5617 pub const BN_UNPUSHED: WORD = BN_UNHILITE; 5618 pub const BN_DBLCLK: WORD = BN_DOUBLECLICKED; 5619 pub const BN_SETFOCUS: WORD = 6; 5620 pub const BN_KILLFOCUS: WORD = 7; 5621 pub const BS_PUSHBUTTON: DWORD = 0x00000000; 5622 pub const BS_DEFPUSHBUTTON: DWORD = 0x00000001; 5623 pub const BS_CHECKBOX: DWORD = 0x00000002; 5624 pub const BS_AUTOCHECKBOX: DWORD = 0x00000003; 5625 pub const BS_RADIOBUTTON: DWORD = 0x00000004; 5626 pub const BS_3STATE: DWORD = 0x00000005; 5627 pub const BS_AUTO3STATE: DWORD = 0x00000006; 5628 pub const BS_GROUPBOX: DWORD = 0x00000007; 5629 pub const BS_USERBUTTON: DWORD = 0x00000008; 5630 pub const BS_AUTORADIOBUTTON: DWORD = 0x00000009; 5631 pub const BS_PUSHBOX: DWORD = 0x0000000A; 5632 pub const BS_OWNERDRAW: DWORD = 0x0000000B; 5633 pub const BS_TYPEMASK: DWORD = 0x0000000F; 5634 pub const BS_LEFTTEXT: DWORD = 0x00000020; 5635 pub const BS_TEXT: DWORD = 0x00000000; 5636 pub const BS_ICON: DWORD = 0x00000040; 5637 pub const BS_BITMAP: DWORD = 0x00000080; 5638 pub const BS_LEFT: DWORD = 0x00000100; 5639 pub const BS_RIGHT: DWORD = 0x00000200; 5640 pub const BS_CENTER: DWORD = 0x00000300; 5641 pub const BS_TOP: DWORD = 0x00000400; 5642 pub const BS_BOTTOM: DWORD = 0x00000800; 5643 pub const BS_VCENTER: DWORD = 0x00000C00; 5644 pub const BS_PUSHLIKE: DWORD = 0x00001000; 5645 pub const BS_MULTILINE: DWORD = 0x00002000; 5646 pub const BS_NOTIFY: DWORD = 0x00004000; 5647 pub const BS_FLAT: DWORD = 0x00008000; 5648 pub const BS_RIGHTBUTTON: DWORD = BS_LEFTTEXT; 5649 pub const BM_GETCHECK: UINT = 0x00F0; 5650 pub const BM_SETCHECK: UINT = 0x00F1; 5651 pub const BM_GETSTATE: UINT = 0x00F2; 5652 pub const BM_SETSTATE: UINT = 0x00F3; 5653 pub const BM_SETSTYLE: UINT = 0x00F4; 5654 pub const BM_CLICK: UINT = 0x00F5; 5655 pub const BM_GETIMAGE: UINT = 0x00F6; 5656 pub const BM_SETIMAGE: UINT = 0x00F7; 5657 pub const BM_SETDONTCLICK: UINT = 0x00F8; 5658 pub const BST_UNCHECKED: WPARAM = 0x0000; 5659 pub const BST_CHECKED: WPARAM = 0x0001; 5660 pub const BST_INDETERMINATE: WPARAM = 0x0002; 5661 pub const BST_PUSHED: LRESULT = 0x0004; 5662 pub const BST_FOCUS: LRESULT = 0x0008; 5663 pub const SS_LEFT: DWORD = 0x00000000; 5664 pub const SS_CENTER: DWORD = 0x00000001; 5665 pub const SS_RIGHT: DWORD = 0x00000002; 5666 pub const SS_ICON: DWORD = 0x00000003; 5667 pub const SS_BLACKRECT: DWORD = 0x00000004; 5668 pub const SS_GRAYRECT: DWORD = 0x00000005; 5669 pub const SS_WHITERECT: DWORD = 0x00000006; 5670 pub const SS_BLACKFRAME: DWORD = 0x00000007; 5671 pub const SS_GRAYFRAME: DWORD = 0x00000008; 5672 pub const SS_WHITEFRAME: DWORD = 0x00000009; 5673 pub const SS_USERITEM: DWORD = 0x0000000A; 5674 pub const SS_SIMPLE: DWORD = 0x0000000B; 5675 pub const SS_LEFTNOWORDWRAP: DWORD = 0x0000000C; 5676 pub const SS_OWNERDRAW: DWORD = 0x0000000D; 5677 pub const SS_BITMAP: DWORD = 0x0000000E; 5678 pub const SS_ENHMETAFILE: DWORD = 0x0000000F; 5679 pub const SS_ETCHEDHORZ: DWORD = 0x00000010; 5680 pub const SS_ETCHEDVERT: DWORD = 0x00000011; 5681 pub const SS_ETCHEDFRAME: DWORD = 0x00000012; 5682 pub const SS_TYPEMASK: DWORD = 0x0000001F; 5683 pub const SS_REALSIZECONTROL: DWORD = 0x00000040; 5684 pub const SS_NOPREFIX: DWORD = 0x00000080; 5685 pub const SS_NOTIFY: DWORD = 0x00000100; 5686 pub const SS_CENTERIMAGE: DWORD = 0x00000200; 5687 pub const SS_RIGHTJUST: DWORD = 0x00000400; 5688 pub const SS_REALSIZEIMAGE: DWORD = 0x00000800; 5689 pub const SS_SUNKEN: DWORD = 0x00001000; 5690 pub const SS_EDITCONTROL: DWORD = 0x00002000; 5691 pub const SS_ENDELLIPSIS: DWORD = 0x00004000; 5692 pub const SS_PATHELLIPSIS: DWORD = 0x00008000; 5693 pub const SS_WORDELLIPSIS: DWORD = 0x0000C000; 5694 pub const SS_ELLIPSISMASK: DWORD = 0x0000C000; 5695 pub const STM_SETICON: UINT = 0x0170; 5696 pub const STM_GETICON: UINT = 0x0171; 5697 pub const STM_SETIMAGE: UINT = 0x0172; 5698 pub const STM_GETIMAGE: UINT = 0x0173; 5699 pub const STN_CLICKED: WORD = 0; 5700 pub const STN_DBLCLK: WORD = 1; 5701 pub const STN_ENABLE: WORD = 2; 5702 pub const STN_DISABLE: WORD = 3; 5703 pub const STM_MSGMAX: WORD = 0x0174; 5704 //11194 5705 extern "system" { 5706 pub fn IsDialogMessageA( 5707 hDlg: HWND, 5708 lpMsg: LPMSG, 5709 ) -> BOOL; 5710 pub fn IsDialogMessageW( 5711 hDlg: HWND, 5712 lpMsg: LPMSG, 5713 ) -> BOOL; 5714 pub fn MapDialogRect( 5715 hDlg: HWND, 5716 lpRect: LPRECT, 5717 ) -> BOOL; 5718 pub fn DlgDirListA( 5719 hDlg: HWND, 5720 lpPathSpec: LPSTR, 5721 nIDListBox: c_int, 5722 nIDStaticPath: c_int, 5723 uFileType: UINT, 5724 ) -> c_int; 5725 pub fn DlgDirListW( 5726 hDlg: HWND, 5727 lpPathSpec: LPWSTR, 5728 nIDListBox: c_int, 5729 nIDStaticPath: c_int, 5730 uFileType: UINT, 5731 ) -> c_int; 5732 } 5733 //11265 5734 extern "system" { 5735 pub fn DlgDirSelectExA( 5736 hwndDlg: HWND, 5737 lpString: LPSTR, 5738 chCount: c_int, 5739 idListBox: c_int, 5740 ) -> BOOL; 5741 pub fn DlgDirSelectExW( 5742 hwndDlg: HWND, 5743 lpString: LPWSTR, 5744 chCount: c_int, 5745 idListBox: c_int, 5746 ) -> BOOL; 5747 pub fn DlgDirListComboBoxA( 5748 hDlg: HWND, 5749 lpPathSpec: LPSTR, 5750 nIDComboBox: c_int, 5751 nIDStaticPath: c_int, 5752 uFiletype: UINT, 5753 ) -> c_int; 5754 pub fn DlgDirListComboBoxW( 5755 hDlg: HWND, 5756 lpPathSpec: LPWSTR, 5757 nIDComboBox: c_int, 5758 nIDStaticPath: c_int, 5759 uFiletype: UINT, 5760 ) -> c_int; 5761 pub fn DlgDirSelectComboBoxExA( 5762 hwndDlg: HWND, 5763 lpString: LPSTR, 5764 cchOut: c_int, 5765 idComboBox: c_int, 5766 ) -> BOOL; 5767 pub fn DlgDirSelectComboBoxExW( 5768 hwndDlg: HWND, 5769 lpString: LPWSTR, 5770 cchOut: c_int, 5771 idComboBox: c_int, 5772 ) -> BOOL; 5773 } 5774 pub const DS_ABSALIGN: DWORD = 0x01; 5775 pub const DS_SYSMODAL: DWORD = 0x02; 5776 pub const DS_LOCALEDIT: DWORD = 0x20; 5777 pub const DS_SETFONT: DWORD = 0x40; 5778 pub const DS_MODALFRAME: DWORD = 0x80; 5779 pub const DS_NOIDLEMSG: DWORD = 0x100; 5780 pub const DS_SETFOREGROUND: DWORD = 0x200; 5781 pub const DS_3DLOOK: DWORD = 0x0004; 5782 pub const DS_FIXEDSYS: DWORD = 0x0008; 5783 pub const DS_NOFAILCREATE: DWORD = 0x0010; 5784 pub const DS_CONTROL: DWORD = 0x0400; 5785 pub const DS_CENTER: DWORD = 0x0800; 5786 pub const DS_CENTERMOUSE: DWORD = 0x1000; 5787 pub const DS_CONTEXTHELP: DWORD = 0x2000; 5788 pub const DS_SHELLFONT: DWORD = DS_SETFONT | DS_FIXEDSYS; 5789 pub const DS_USEPIXELS: DWORD = 0x8000; 5790 pub const DM_GETDEFID: UINT = WM_USER + 0; 5791 pub const DM_SETDEFID: UINT = WM_USER + 1; 5792 pub const DM_REPOSITION: UINT = WM_USER + 2; 5793 pub const DC_HASDEFID: WORD = 0x534B; 5794 pub const DLGC_WANTARROWS: LRESULT = 0x0001; 5795 pub const DLGC_WANTTAB: LRESULT = 0x0002; 5796 pub const DLGC_WANTALLKEYS: LRESULT = 0x0004; 5797 pub const DLGC_WANTMESSAGE: LRESULT = 0x0004; 5798 pub const DLGC_HASSETSEL: LRESULT = 0x0008; 5799 pub const DLGC_DEFPUSHBUTTON: LRESULT = 0x0010; 5800 pub const DLGC_UNDEFPUSHBUTTON: LRESULT = 0x0020; 5801 pub const DLGC_RADIOBUTTON: LRESULT = 0x0040; 5802 pub const DLGC_WANTCHARS: LRESULT = 0x0080; 5803 pub const DLGC_STATIC: LRESULT = 0x0100; 5804 pub const DLGC_BUTTON: LRESULT = 0x2000; 5805 pub const LB_OKAY: LRESULT = 0; 5806 pub const LB_ERR: LRESULT = -1; 5807 pub const LB_ERRSPACE: LRESULT = -2; 5808 pub const LBN_ERRSPACE: WORD = -2i16 as u16; 5809 pub const LBN_SELCHANGE: WORD = 1; 5810 pub const LBN_DBLCLK: WORD = 2; 5811 pub const LBN_SELCANCEL: WORD = 3; 5812 pub const LBN_SETFOCUS: WORD = 4; 5813 pub const LBN_KILLFOCUS: WORD = 5; 5814 pub const LB_ADDSTRING: UINT = 0x0180; 5815 pub const LB_INSERTSTRING: UINT = 0x0181; 5816 pub const LB_DELETESTRING: UINT = 0x0182; 5817 pub const LB_SELITEMRANGEEX: UINT = 0x0183; 5818 pub const LB_RESETCONTENT: UINT = 0x0184; 5819 pub const LB_SETSEL: UINT = 0x0185; 5820 pub const LB_SETCURSEL: UINT = 0x0186; 5821 pub const LB_GETSEL: UINT = 0x0187; 5822 pub const LB_GETCURSEL: UINT = 0x0188; 5823 pub const LB_GETTEXT: UINT = 0x0189; 5824 pub const LB_GETTEXTLEN: UINT = 0x018A; 5825 pub const LB_GETCOUNT: UINT = 0x018B; 5826 pub const LB_SELECTSTRING: UINT = 0x018C; 5827 pub const LB_DIR: UINT = 0x018D; 5828 pub const LB_GETTOPINDEX: UINT = 0x018E; 5829 pub const LB_FINDSTRING: UINT = 0x018F; 5830 pub const LB_GETSELCOUNT: UINT = 0x0190; 5831 pub const LB_GETSELITEMS: UINT = 0x0191; 5832 pub const LB_SETTABSTOPS: UINT = 0x0192; 5833 pub const LB_GETHORIZONTALEXTENT: UINT = 0x0193; 5834 pub const LB_SETHORIZONTALEXTENT: UINT = 0x0194; 5835 pub const LB_SETCOLUMNWIDTH: UINT = 0x0195; 5836 pub const LB_ADDFILE: UINT = 0x0196; 5837 pub const LB_SETTOPINDEX: UINT = 0x0197; 5838 pub const LB_GETITEMRECT: UINT = 0x0198; 5839 pub const LB_GETITEMDATA: UINT = 0x0199; 5840 pub const LB_SETITEMDATA: UINT = 0x019A; 5841 pub const LB_SELITEMRANGE: UINT = 0x019B; 5842 pub const LB_SETANCHORINDEX: UINT = 0x019C; 5843 pub const LB_GETANCHORINDEX: UINT = 0x019D; 5844 pub const LB_SETCARETINDEX: UINT = 0x019E; 5845 pub const LB_GETCARETINDEX: UINT = 0x019F; 5846 pub const LB_SETITEMHEIGHT: UINT = 0x01A0; 5847 pub const LB_GETITEMHEIGHT: UINT = 0x01A1; 5848 pub const LB_FINDSTRINGEXACT: UINT = 0x01A2; 5849 pub const LB_SETLOCALE: UINT = 0x01A5; 5850 pub const LB_GETLOCALE: UINT = 0x01A6; 5851 pub const LB_SETCOUNT: UINT = 0x01A7; 5852 pub const LB_INITSTORAGE: UINT = 0x01A8; 5853 pub const LB_ITEMFROMPOINT: UINT = 0x01A9; 5854 pub const LB_MULTIPLEADDSTRING: UINT = 0x01B1; 5855 pub const LB_GETLISTBOXINFO: UINT = 0x01B2; 5856 pub const LB_MSGMAX: UINT = 0x01B3; 5857 pub const LBS_NOTIFY: DWORD = 0x0001; 5858 pub const LBS_SORT: DWORD = 0x0002; 5859 pub const LBS_NOREDRAW: DWORD = 0x0004; 5860 pub const LBS_MULTIPLESEL: DWORD = 0x0008; 5861 pub const LBS_OWNERDRAWFIXED: DWORD = 0x0010; 5862 pub const LBS_OWNERDRAWVARIABLE: DWORD = 0x0020; 5863 pub const LBS_HASSTRINGS: DWORD = 0x0040; 5864 pub const LBS_USETABSTOPS: DWORD = 0x0080; 5865 pub const LBS_NOINTEGRALHEIGHT: DWORD = 0x0100; 5866 pub const LBS_MULTICOLUMN: DWORD = 0x0200; 5867 pub const LBS_WANTKEYBOARDINPUT: DWORD = 0x0400; 5868 pub const LBS_EXTENDEDSEL: DWORD = 0x0800; 5869 pub const LBS_DISABLENOSCROLL: DWORD = 0x1000; 5870 pub const LBS_NODATA: DWORD = 0x2000; 5871 pub const LBS_NOSEL: DWORD = 0x4000; 5872 pub const LBS_COMBOBOX: DWORD = 0x8000; 5873 pub const LBS_STANDARD: DWORD = LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER; 5874 pub const CB_OKAY: LRESULT = 0; 5875 pub const CB_ERR: LRESULT = -1; 5876 pub const CB_ERRSPACE: LRESULT = -2; 5877 pub const CBN_ERRSPACE: WORD = -1i16 as u16; 5878 pub const CBN_SELCHANGE: WORD = 1; 5879 pub const CBN_DBLCLK: WORD = 2; 5880 pub const CBN_SETFOCUS: WORD = 3; 5881 pub const CBN_KILLFOCUS: WORD = 4; 5882 pub const CBN_EDITCHANGE: WORD = 5; 5883 pub const CBN_EDITUPDATE: WORD = 6; 5884 pub const CBN_DROPDOWN: WORD = 7; 5885 pub const CBN_CLOSEUP: WORD = 8; 5886 pub const CBN_SELENDOK: WORD = 9; 5887 pub const CBN_SELENDCANCEL: WORD = 10; 5888 pub const CBS_SIMPLE: DWORD = 0x0001; 5889 pub const CBS_DROPDOWN: DWORD = 0x0002; 5890 pub const CBS_DROPDOWNLIST: DWORD = 0x0003; 5891 pub const CBS_OWNERDRAWFIXED: DWORD = 0x0010; 5892 pub const CBS_OWNERDRAWVARIABLE: DWORD = 0x0020; 5893 pub const CBS_AUTOHSCROLL: DWORD = 0x0040; 5894 pub const CBS_OEMCONVERT: DWORD = 0x0080; 5895 pub const CBS_SORT: DWORD = 0x0100; 5896 pub const CBS_HASSTRINGS: DWORD = 0x0200; 5897 pub const CBS_NOINTEGRALHEIGHT: DWORD = 0x0400; 5898 pub const CBS_DISABLENOSCROLL: DWORD = 0x0800; 5899 pub const CBS_UPPERCASE: DWORD = 0x2000; 5900 pub const CBS_LOWERCASE: DWORD = 0x4000; 5901 //11571 5902 pub const CB_GETEDITSEL: UINT = 0x0140; 5903 pub const CB_LIMITTEXT: UINT = 0x0141; 5904 pub const CB_SETEDITSEL: UINT = 0x0142; 5905 pub const CB_ADDSTRING: UINT = 0x0143; 5906 pub const CB_DELETESTRING: UINT = 0x0144; 5907 pub const CB_DIR: UINT = 0x0145; 5908 pub const CB_GETCOUNT: UINT = 0x0146; 5909 pub const CB_GETCURSEL: UINT = 0x0147; 5910 pub const CB_GETLBTEXT: UINT = 0x0148; 5911 pub const CB_GETLBTEXTLEN: UINT = 0x0149; 5912 pub const CB_INSERTSTRING: UINT = 0x014A; 5913 pub const CB_RESETCONTENT: UINT = 0x014B; 5914 pub const CB_FINDSTRING: UINT = 0x014C; 5915 pub const CB_SELECTSTRING: UINT = 0x014D; 5916 pub const CB_SETCURSEL: UINT = 0x014E; 5917 pub const CB_SHOWDROPDOWN: UINT = 0x014F; 5918 pub const CB_GETITEMDATA: UINT = 0x0150; 5919 pub const CB_SETITEMDATA: UINT = 0x0151; 5920 pub const CB_GETDROPPEDCONTROLRECT: UINT = 0x0152; 5921 pub const CB_SETITEMHEIGHT: UINT = 0x0153; 5922 pub const CB_GETITEMHEIGHT: UINT = 0x0154; 5923 pub const CB_SETEXTENDEDUI: UINT = 0x0155; 5924 pub const CB_GETEXTENDEDUI: UINT = 0x0156; 5925 pub const CB_GETDROPPEDSTATE: UINT = 0x0157; 5926 pub const CB_FINDSTRINGEXACT: UINT = 0x0158; 5927 pub const CB_SETLOCALE: UINT = 0x0159; 5928 pub const CB_GETLOCALE: UINT = 0x015A; 5929 pub const CB_GETTOPINDEX: UINT = 0x015b; 5930 pub const CB_SETTOPINDEX: UINT = 0x015c; 5931 pub const CB_GETHORIZONTALEXTENT: UINT = 0x015d; 5932 pub const CB_SETHORIZONTALEXTENT: UINT = 0x015e; 5933 pub const CB_GETDROPPEDWIDTH: UINT = 0x015f; 5934 pub const CB_SETDROPPEDWIDTH: UINT = 0x0160; 5935 pub const CB_INITSTORAGE: UINT = 0x0161; 5936 pub const CB_MULTIPLEADDSTRING: UINT = 0x0163; 5937 pub const CB_GETCOMBOBOXINFO: UINT = 0x0164; 5938 pub const CB_MSGMAX: UINT = 0x0165; 5939 pub const SBS_HORZ: DWORD = 0x0000; 5940 pub const SBS_VERT: DWORD = 0x0001; 5941 pub const SBS_TOPALIGN: DWORD = 0x0002; 5942 pub const SBS_LEFTALIGN: DWORD = 0x0002; 5943 pub const SBS_BOTTOMALIGN: DWORD = 0x0004; 5944 pub const SBS_RIGHTALIGN: DWORD = 0x0004; 5945 pub const SBS_SIZEBOXTOPLEFTALIGN: DWORD = 0x0002; 5946 pub const SBS_SIZEBOXBOTTOMRIGHTALIGN: DWORD = 0x0004; 5947 pub const SBS_SIZEBOX: DWORD = 0x0008; 5948 pub const SBS_SIZEGRIP: DWORD = 0x0010; 5949 pub const SBM_SETPOS: UINT = 0x00E0; 5950 pub const SBM_GETPOS: UINT = 0x00E1; 5951 pub const SBM_SETRANGE: UINT = 0x00E2; 5952 pub const SBM_SETRANGEREDRAW: UINT = 0x00E6; 5953 pub const SBM_GETRANGE: UINT = 0x00E3; 5954 pub const SBM_ENABLE_ARROWS: UINT = 0x00E4; 5955 pub const SBM_SETSCROLLINFO: UINT = 0x00E9; 5956 pub const SBM_GETSCROLLINFO: UINT = 0x00EA; 5957 pub const SBM_GETSCROLLBARINFO: UINT = 0x00EB; 5958 pub const SIF_RANGE: UINT = 0x0001; 5959 pub const SIF_PAGE: UINT = 0x0002; 5960 pub const SIF_POS: UINT = 0x0004; 5961 pub const SIF_DISABLENOSCROLL: UINT = 0x0008; 5962 pub const SIF_TRACKPOS: UINT = 0x0010; 5963 pub const SIF_ALL: UINT = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS; 5964 STRUCT!{struct SCROLLINFO { 5965 cbSize: UINT, 5966 fMask: UINT, 5967 nMin: c_int, 5968 nMax: c_int, 5969 nPage: UINT, 5970 nPos: c_int, 5971 nTrackPos: c_int, 5972 }} 5973 pub type LPSCROLLINFO = *mut SCROLLINFO; 5974 pub type LPCSCROLLINFO = *const SCROLLINFO; 5975 extern "system" { 5976 pub fn SetScrollInfo( 5977 hwnd: HWND, 5978 nBar: c_int, 5979 lpsi: *const SCROLLINFO, 5980 redraw: BOOL, 5981 ) -> c_int; 5982 pub fn GetScrollInfo( 5983 hwnd: HWND, 5984 nBar: c_int, 5985 lpsi: *mut SCROLLINFO, 5986 ) -> BOOL; 5987 } 5988 pub const MDITILE_VERTICAL: UINT = 0x0000; 5989 pub const MDITILE_HORIZONTAL: UINT = 0x0001; 5990 pub const MDITILE_SKIPDISABLED: UINT = 0x0002; 5991 pub const MDITILE_ZORDER: UINT = 0x0004; 5992 //11776 5993 extern "system" { 5994 pub fn DefFrameProcA( 5995 hwnd: HWND, 5996 hwndMDIClient: HWND, 5997 uMsg: UINT, 5998 wParam: WPARAM, 5999 lParam: LPARAM, 6000 ) -> LRESULT; 6001 pub fn DefFrameProcW( 6002 hwnd: HWND, 6003 hwndMDIClient: HWND, 6004 uMsg: UINT, 6005 wParam: WPARAM, 6006 lParam: LPARAM, 6007 ) -> LRESULT; 6008 pub fn DefMDIChildProcA( 6009 hwnd: HWND, 6010 uMsg: UINT, 6011 wParam: WPARAM, 6012 lParam: LPARAM, 6013 ) -> LRESULT; 6014 pub fn DefMDIChildProcW( 6015 hwnd: HWND, 6016 uMsg: UINT, 6017 wParam: WPARAM, 6018 lParam: LPARAM, 6019 ) -> LRESULT; 6020 pub fn ArrangeIconicWindows( 6021 hWnd: HWND, 6022 ) -> UINT; 6023 pub fn CreateMDIWindowA( 6024 lpClassName: LPCSTR, 6025 lpWindowName: LPCSTR, 6026 dwStyle: DWORD, 6027 X: c_int, 6028 Y: c_int, 6029 nWidth: c_int, 6030 nHeight: c_int, 6031 hWndParent: HWND, 6032 hInstance: HINSTANCE, 6033 lParam: LPARAM, 6034 ) -> HWND; 6035 pub fn CreateMDIWindowW( 6036 lpClassName: LPCWSTR, 6037 lpWindowName: LPCWSTR, 6038 dwStyle: DWORD, 6039 X: c_int, 6040 Y: c_int, 6041 nWidth: c_int, 6042 nHeight: c_int, 6043 hWndParent: HWND, 6044 hInstance: HINSTANCE, 6045 lParam: LPARAM, 6046 ) -> HWND; 6047 pub fn CascadeWindows( 6048 hwndParent: HWND, 6049 wHow: UINT, 6050 lpRect: *const RECT, 6051 cKids: UINT, 6052 lpKids: *const HWND, 6053 ) -> WORD; 6054 } 6055 //12016 6056 extern "system" { 6057 pub fn WinHelpA( 6058 hWndMain: HWND, 6059 lpszHelp: LPCSTR, 6060 uCommand: UINT, 6061 dwData: ULONG_PTR, 6062 ) -> BOOL; 6063 pub fn WinHelpW( 6064 hWndMain: HWND, 6065 lpszHelp: LPCWSTR, 6066 uCommand: UINT, 6067 dwData: ULONG_PTR, 6068 ) -> BOOL; 6069 } 6070 //12083 6071 pub const SPI_GETBEEP: UINT = 0x0001; 6072 pub const SPI_SETBEEP: UINT = 0x0002; 6073 pub const SPI_GETMOUSE: UINT = 0x0003; 6074 pub const SPI_SETMOUSE: UINT = 0x0004; 6075 pub const SPI_GETBORDER: UINT = 0x0005; 6076 pub const SPI_SETBORDER: UINT = 0x0006; 6077 pub const SPI_GETKEYBOARDSPEED: UINT = 0x000A; 6078 pub const SPI_SETKEYBOARDSPEED: UINT = 0x000B; 6079 pub const SPI_LANGDRIVER: UINT = 0x000C; 6080 pub const SPI_ICONHORIZONTALSPACING: UINT = 0x000D; 6081 pub const SPI_GETSCREENSAVETIMEOUT: UINT = 0x000E; 6082 pub const SPI_SETSCREENSAVETIMEOUT: UINT = 0x000F; 6083 pub const SPI_GETSCREENSAVEACTIVE: UINT = 0x0010; 6084 pub const SPI_SETSCREENSAVEACTIVE: UINT = 0x0011; 6085 pub const SPI_GETGRIDGRANULARITY: UINT = 0x0012; 6086 pub const SPI_SETGRIDGRANULARITY: UINT = 0x0013; 6087 pub const SPI_SETDESKWALLPAPER: UINT = 0x0014; 6088 pub const SPI_SETDESKPATTERN: UINT = 0x0015; 6089 pub const SPI_GETKEYBOARDDELAY: UINT = 0x0016; 6090 pub const SPI_SETKEYBOARDDELAY: UINT = 0x0017; 6091 pub const SPI_ICONVERTICALSPACING: UINT = 0x0018; 6092 pub const SPI_GETICONTITLEWRAP: UINT = 0x0019; 6093 pub const SPI_SETICONTITLEWRAP: UINT = 0x001A; 6094 pub const SPI_GETMENUDROPALIGNMENT: UINT = 0x001B; 6095 pub const SPI_SETMENUDROPALIGNMENT: UINT = 0x001C; 6096 pub const SPI_SETDOUBLECLKWIDTH: UINT = 0x001D; 6097 pub const SPI_SETDOUBLECLKHEIGHT: UINT = 0x001E; 6098 pub const SPI_GETICONTITLELOGFONT: UINT = 0x001F; 6099 pub const SPI_SETDOUBLECLICKTIME: UINT = 0x0020; 6100 pub const SPI_SETMOUSEBUTTONSWAP: UINT = 0x0021; 6101 pub const SPI_SETICONTITLELOGFONT: UINT = 0x0022; 6102 pub const SPI_GETFASTTASKSWITCH: UINT = 0x0023; 6103 pub const SPI_SETFASTTASKSWITCH: UINT = 0x0024; 6104 pub const SPI_SETDRAGFULLWINDOWS: UINT = 0x0025; 6105 pub const SPI_GETDRAGFULLWINDOWS: UINT = 0x0026; 6106 pub const SPI_GETNONCLIENTMETRICS: UINT = 0x0029; 6107 pub const SPI_SETNONCLIENTMETRICS: UINT = 0x002A; 6108 pub const SPI_GETMINIMIZEDMETRICS: UINT = 0x002B; 6109 pub const SPI_SETMINIMIZEDMETRICS: UINT = 0x002C; 6110 pub const SPI_GETICONMETRICS: UINT = 0x002D; 6111 pub const SPI_SETICONMETRICS: UINT = 0x002E; 6112 pub const SPI_SETWORKAREA: UINT = 0x002F; 6113 pub const SPI_GETWORKAREA: UINT = 0x0030; 6114 pub const SPI_SETPENWINDOWS: UINT = 0x0031; 6115 pub const SPI_GETHIGHCONTRAST: UINT = 0x0042; 6116 pub const SPI_SETHIGHCONTRAST: UINT = 0x0043; 6117 pub const SPI_GETKEYBOARDPREF: UINT = 0x0044; 6118 pub const SPI_SETKEYBOARDPREF: UINT = 0x0045; 6119 pub const SPI_GETSCREENREADER: UINT = 0x0046; 6120 pub const SPI_SETSCREENREADER: UINT = 0x0047; 6121 pub const SPI_GETANIMATION: UINT = 0x0048; 6122 pub const SPI_SETANIMATION: UINT = 0x0049; 6123 pub const SPI_GETFONTSMOOTHING: UINT = 0x004A; 6124 pub const SPI_SETFONTSMOOTHING: UINT = 0x004B; 6125 pub const SPI_SETDRAGWIDTH: UINT = 0x004C; 6126 pub const SPI_SETDRAGHEIGHT: UINT = 0x004D; 6127 pub const SPI_SETHANDHELD: UINT = 0x004E; 6128 pub const SPI_GETLOWPOWERTIMEOUT: UINT = 0x004F; 6129 pub const SPI_GETPOWEROFFTIMEOUT: UINT = 0x0050; 6130 pub const SPI_SETLOWPOWERTIMEOUT: UINT = 0x0051; 6131 pub const SPI_SETPOWEROFFTIMEOUT: UINT = 0x0052; 6132 pub const SPI_GETLOWPOWERACTIVE: UINT = 0x0053; 6133 pub const SPI_GETPOWEROFFACTIVE: UINT = 0x0054; 6134 pub const SPI_SETLOWPOWERACTIVE: UINT = 0x0055; 6135 pub const SPI_SETPOWEROFFACTIVE: UINT = 0x0056; 6136 pub const SPI_SETCURSORS: UINT = 0x0057; 6137 pub const SPI_SETICONS: UINT = 0x0058; 6138 pub const SPI_GETDEFAULTINPUTLANG: UINT = 0x0059; 6139 pub const SPI_SETDEFAULTINPUTLANG: UINT = 0x005A; 6140 pub const SPI_SETLANGTOGGLE: UINT = 0x005B; 6141 pub const SPI_GETWINDOWSEXTENSION: UINT = 0x005C; 6142 pub const SPI_SETMOUSETRAILS: UINT = 0x005D; 6143 pub const SPI_GETMOUSETRAILS: UINT = 0x005E; 6144 pub const SPI_SETSCREENSAVERRUNNING: UINT = 0x0061; 6145 pub const SPI_SCREENSAVERRUNNING: UINT = SPI_SETSCREENSAVERRUNNING; 6146 pub const SPI_GETFILTERKEYS: UINT = 0x0032; 6147 pub const SPI_SETFILTERKEYS: UINT = 0x0033; 6148 pub const SPI_GETTOGGLEKEYS: UINT = 0x0034; 6149 pub const SPI_SETTOGGLEKEYS: UINT = 0x0035; 6150 pub const SPI_GETMOUSEKEYS: UINT = 0x0036; 6151 pub const SPI_SETMOUSEKEYS: UINT = 0x0037; 6152 pub const SPI_GETSHOWSOUNDS: UINT = 0x0038; 6153 pub const SPI_SETSHOWSOUNDS: UINT = 0x0039; 6154 pub const SPI_GETSTICKYKEYS: UINT = 0x003A; 6155 pub const SPI_SETSTICKYKEYS: UINT = 0x003B; 6156 pub const SPI_GETACCESSTIMEOUT: UINT = 0x003C; 6157 pub const SPI_SETACCESSTIMEOUT: UINT = 0x003D; 6158 pub const SPI_GETSERIALKEYS: UINT = 0x003E; 6159 pub const SPI_SETSERIALKEYS: UINT = 0x003F; 6160 pub const SPI_GETSOUNDSENTRY: UINT = 0x0040; 6161 pub const SPI_SETSOUNDSENTRY: UINT = 0x0041; 6162 pub const SPI_GETSNAPTODEFBUTTON: UINT = 0x005F; 6163 pub const SPI_SETSNAPTODEFBUTTON: UINT = 0x0060; 6164 pub const SPI_GETMOUSEHOVERWIDTH: UINT = 0x0062; 6165 pub const SPI_SETMOUSEHOVERWIDTH: UINT = 0x0063; 6166 pub const SPI_GETMOUSEHOVERHEIGHT: UINT = 0x0064; 6167 pub const SPI_SETMOUSEHOVERHEIGHT: UINT = 0x0065; 6168 pub const SPI_GETMOUSEHOVERTIME: UINT = 0x0066; 6169 pub const SPI_SETMOUSEHOVERTIME: UINT = 0x0067; 6170 pub const SPI_GETWHEELSCROLLLINES: UINT = 0x0068; 6171 pub const SPI_SETWHEELSCROLLLINES: UINT = 0x0069; 6172 pub const SPI_GETMENUSHOWDELAY: UINT = 0x006A; 6173 pub const SPI_SETMENUSHOWDELAY: UINT = 0x006B; 6174 pub const SPI_GETWHEELSCROLLCHARS: UINT = 0x006C; 6175 pub const SPI_SETWHEELSCROLLCHARS: UINT = 0x006D; 6176 pub const SPI_GETSHOWIMEUI: UINT = 0x006E; 6177 pub const SPI_SETSHOWIMEUI: UINT = 0x006F; 6178 pub const SPI_GETMOUSESPEED: UINT = 0x0070; 6179 pub const SPI_SETMOUSESPEED: UINT = 0x0071; 6180 pub const SPI_GETSCREENSAVERRUNNING: UINT = 0x0072; 6181 pub const SPI_GETDESKWALLPAPER: UINT = 0x0073; 6182 pub const SPI_GETAUDIODESCRIPTION: UINT = 0x0074; 6183 pub const SPI_SETAUDIODESCRIPTION: UINT = 0x0075; 6184 pub const SPI_GETSCREENSAVESECURE: UINT = 0x0076; 6185 pub const SPI_SETSCREENSAVESECURE: UINT = 0x0077; 6186 pub const SPI_GETHUNGAPPTIMEOUT: UINT = 0x0078; 6187 pub const SPI_SETHUNGAPPTIMEOUT: UINT = 0x0079; 6188 pub const SPI_GETWAITTOKILLTIMEOUT: UINT = 0x007A; 6189 pub const SPI_SETWAITTOKILLTIMEOUT: UINT = 0x007B; 6190 pub const SPI_GETWAITTOKILLSERVICETIMEOUT: UINT = 0x007C; 6191 pub const SPI_SETWAITTOKILLSERVICETIMEOUT: UINT = 0x007D; 6192 pub const SPI_GETMOUSEDOCKTHRESHOLD: UINT = 0x007E; 6193 pub const SPI_SETMOUSEDOCKTHRESHOLD: UINT = 0x007F; 6194 pub const SPI_GETPENDOCKTHRESHOLD: UINT = 0x0080; 6195 pub const SPI_SETPENDOCKTHRESHOLD: UINT = 0x0081; 6196 pub const SPI_GETWINARRANGING: UINT = 0x0082; 6197 pub const SPI_SETWINARRANGING: UINT = 0x0083; 6198 pub const SPI_GETMOUSEDRAGOUTTHRESHOLD: UINT = 0x0084; 6199 pub const SPI_SETMOUSEDRAGOUTTHRESHOLD: UINT = 0x0085; 6200 pub const SPI_GETPENDRAGOUTTHRESHOLD: UINT = 0x0086; 6201 pub const SPI_SETPENDRAGOUTTHRESHOLD: UINT = 0x0087; 6202 pub const SPI_GETMOUSESIDEMOVETHRESHOLD: UINT = 0x0088; 6203 pub const SPI_SETMOUSESIDEMOVETHRESHOLD: UINT = 0x0089; 6204 pub const SPI_GETPENSIDEMOVETHRESHOLD: UINT = 0x008A; 6205 pub const SPI_SETPENSIDEMOVETHRESHOLD: UINT = 0x008B; 6206 pub const SPI_GETDRAGFROMMAXIMIZE: UINT = 0x008C; 6207 pub const SPI_SETDRAGFROMMAXIMIZE: UINT = 0x008D; 6208 pub const SPI_GETSNAPSIZING: UINT = 0x008E; 6209 pub const SPI_SETSNAPSIZING: UINT = 0x008F; 6210 pub const SPI_GETDOCKMOVING: UINT = 0x0090; 6211 pub const SPI_SETDOCKMOVING: UINT = 0x0091; 6212 pub const SPI_GETACTIVEWINDOWTRACKING: UINT = 0x1000; 6213 pub const SPI_SETACTIVEWINDOWTRACKING: UINT = 0x1001; 6214 pub const SPI_GETMENUANIMATION: UINT = 0x1002; 6215 pub const SPI_SETMENUANIMATION: UINT = 0x1003; 6216 pub const SPI_GETCOMBOBOXANIMATION: UINT = 0x1004; 6217 pub const SPI_SETCOMBOBOXANIMATION: UINT = 0x1005; 6218 pub const SPI_GETLISTBOXSMOOTHSCROLLING: UINT = 0x1006; 6219 pub const SPI_SETLISTBOXSMOOTHSCROLLING: UINT = 0x1007; 6220 pub const SPI_GETGRADIENTCAPTIONS: UINT = 0x1008; 6221 pub const SPI_SETGRADIENTCAPTIONS: UINT = 0x1009; 6222 pub const SPI_GETKEYBOARDCUES: UINT = 0x100A; 6223 pub const SPI_SETKEYBOARDCUES: UINT = 0x100B; 6224 pub const SPI_GETMENUUNDERLINES: UINT = SPI_GETKEYBOARDCUES; 6225 pub const SPI_SETMENUUNDERLINES: UINT = SPI_SETKEYBOARDCUES; 6226 pub const SPI_GETACTIVEWNDTRKZORDER: UINT = 0x100C; 6227 pub const SPI_SETACTIVEWNDTRKZORDER: UINT = 0x100D; 6228 pub const SPI_GETHOTTRACKING: UINT = 0x100E; 6229 pub const SPI_SETHOTTRACKING: UINT = 0x100F; 6230 pub const SPI_GETMENUFADE: UINT = 0x1012; 6231 pub const SPI_SETMENUFADE: UINT = 0x1013; 6232 pub const SPI_GETSELECTIONFADE: UINT = 0x1014; 6233 pub const SPI_SETSELECTIONFADE: UINT = 0x1015; 6234 pub const SPI_GETTOOLTIPANIMATION: UINT = 0x1016; 6235 pub const SPI_SETTOOLTIPANIMATION: UINT = 0x1017; 6236 pub const SPI_GETTOOLTIPFADE: UINT = 0x1018; 6237 pub const SPI_SETTOOLTIPFADE: UINT = 0x1019; 6238 pub const SPI_GETCURSORSHADOW: UINT = 0x101A; 6239 pub const SPI_SETCURSORSHADOW: UINT = 0x101B; 6240 pub const SPI_GETMOUSESONAR: UINT = 0x101C; 6241 pub const SPI_SETMOUSESONAR: UINT = 0x101D; 6242 pub const SPI_GETMOUSECLICKLOCK: UINT = 0x101E; 6243 pub const SPI_SETMOUSECLICKLOCK: UINT = 0x101F; 6244 pub const SPI_GETMOUSEVANISH: UINT = 0x1020; 6245 pub const SPI_SETMOUSEVANISH: UINT = 0x1021; 6246 pub const SPI_GETFLATMENU: UINT = 0x1022; 6247 pub const SPI_SETFLATMENU: UINT = 0x1023; 6248 pub const SPI_GETDROPSHADOW: UINT = 0x1024; 6249 pub const SPI_SETDROPSHADOW: UINT = 0x1025; 6250 pub const SPI_GETBLOCKSENDINPUTRESETS: UINT = 0x1026; 6251 pub const SPI_SETBLOCKSENDINPUTRESETS: UINT = 0x1027; 6252 pub const SPI_GETUIEFFECTS: UINT = 0x103E; 6253 pub const SPI_SETUIEFFECTS: UINT = 0x103F; 6254 pub const SPI_GETDISABLEOVERLAPPEDCONTENT: UINT = 0x1040; 6255 pub const SPI_SETDISABLEOVERLAPPEDCONTENT: UINT = 0x1041; 6256 pub const SPI_GETCLIENTAREAANIMATION: UINT = 0x1042; 6257 pub const SPI_SETCLIENTAREAANIMATION: UINT = 0x1043; 6258 pub const SPI_GETCLEARTYPE: UINT = 0x1048; 6259 pub const SPI_SETCLEARTYPE: UINT = 0x1049; 6260 pub const SPI_GETSPEECHRECOGNITION: UINT = 0x104A; 6261 pub const SPI_SETSPEECHRECOGNITION: UINT = 0x104B; 6262 pub const SPI_GETFOREGROUNDLOCKTIMEOUT: UINT = 0x2000; 6263 pub const SPI_SETFOREGROUNDLOCKTIMEOUT: UINT = 0x2001; 6264 pub const SPI_GETACTIVEWNDTRKTIMEOUT: UINT = 0x2002; 6265 pub const SPI_SETACTIVEWNDTRKTIMEOUT: UINT = 0x2003; 6266 pub const SPI_GETFOREGROUNDFLASHCOUNT: UINT = 0x2004; 6267 pub const SPI_SETFOREGROUNDFLASHCOUNT: UINT = 0x2005; 6268 pub const SPI_GETCARETWIDTH: UINT = 0x2006; 6269 pub const SPI_SETCARETWIDTH: UINT = 0x2007; 6270 pub const SPI_GETMOUSECLICKLOCKTIME: UINT = 0x2008; 6271 pub const SPI_SETMOUSECLICKLOCKTIME: UINT = 0x2009; 6272 pub const SPI_GETFONTSMOOTHINGTYPE: UINT = 0x200A; 6273 pub const SPI_SETFONTSMOOTHINGTYPE: UINT = 0x200B; 6274 pub const FE_FONTSMOOTHINGSTANDARD: UINT = 0x0001; 6275 pub const FE_FONTSMOOTHINGCLEARTYPE: UINT = 0x0002; 6276 pub const SPI_GETFONTSMOOTHINGCONTRAST: UINT = 0x200C; 6277 pub const SPI_SETFONTSMOOTHINGCONTRAST: UINT = 0x200D; 6278 pub const SPI_GETFOCUSBORDERWIDTH: UINT = 0x200E; 6279 pub const SPI_SETFOCUSBORDERWIDTH: UINT = 0x200F; 6280 pub const SPI_GETFOCUSBORDERHEIGHT: UINT = 0x2010; 6281 pub const SPI_SETFOCUSBORDERHEIGHT: UINT = 0x2011; 6282 pub const SPI_GETFONTSMOOTHINGORIENTATION: UINT = 0x2012; 6283 pub const SPI_SETFONTSMOOTHINGORIENTATION: UINT = 0x2013; 6284 pub const FE_FONTSMOOTHINGORIENTATIONBGR: UINT = 0x0000; 6285 pub const FE_FONTSMOOTHINGORIENTATIONRGB: UINT = 0x0001; 6286 pub const SPI_GETMINIMUMHITRADIUS: UINT = 0x2014; 6287 pub const SPI_SETMINIMUMHITRADIUS: UINT = 0x2015; 6288 pub const SPI_GETMESSAGEDURATION: UINT = 0x2016; 6289 pub const SPI_SETMESSAGEDURATION: UINT = 0x2017; 6290 //12472 6291 pub const SPIF_UPDATEINIFILE: UINT = 0x0001; 6292 pub const SPIF_SENDWININICHANGE: UINT = 0x0002; 6293 pub const SPIF_SENDCHANGE: UINT = SPIF_SENDWININICHANGE; 6294 //12484 6295 STRUCT!{struct NONCLIENTMETRICSA { 6296 cbSize: UINT, 6297 iBorderWidth: c_int, 6298 iScrollWidth: c_int, 6299 iScrollHeight: c_int, 6300 iCaptionWidth: c_int, 6301 iCaptionHeight: c_int, 6302 lfCaptionFont: LOGFONTA, 6303 iSmCaptionWidth: c_int, 6304 iSmCaptionHeight: c_int, 6305 lfSmCaptionFont: LOGFONTA, 6306 iMenuWidth: c_int, 6307 iMenuHeight: c_int, 6308 lfMenuFont: LOGFONTA, 6309 lfStatusFont: LOGFONTA, 6310 lfMessageFont: LOGFONTA, 6311 iPaddedBorderWidth: c_int, 6312 }} 6313 pub type LPNONCLIENTMETRICSA = *mut NONCLIENTMETRICSA; 6314 STRUCT!{struct NONCLIENTMETRICSW { 6315 cbSize: UINT, 6316 iBorderWidth: c_int, 6317 iScrollWidth: c_int, 6318 iScrollHeight: c_int, 6319 iCaptionWidth: c_int, 6320 iCaptionHeight: c_int, 6321 lfCaptionFont: LOGFONTW, 6322 iSmCaptionWidth: c_int, 6323 iSmCaptionHeight: c_int, 6324 lfSmCaptionFont: LOGFONTW, 6325 iMenuWidth: c_int, 6326 iMenuHeight: c_int, 6327 lfMenuFont: LOGFONTW, 6328 lfStatusFont: LOGFONTW, 6329 lfMessageFont: LOGFONTW, 6330 iPaddedBorderWidth: c_int, 6331 }} 6332 pub type LPNONCLIENTMETRICSW = *mut NONCLIENTMETRICSW; 6333 //12598 6334 STRUCT!{struct ANIMATIONINFO { 6335 cbSize: UINT, 6336 iMinAnimate: c_int, 6337 }} 6338 pub type LPANIMATIONINFO = *mut ANIMATIONINFO; 6339 //12638 6340 STRUCT!{struct HIGHCONTRASTA { 6341 cbSize: UINT, 6342 dwFlags: DWORD, 6343 lpszDefaultScheme: LPSTR, 6344 }} 6345 pub type LPHIGHCONTRASTA = *mut HIGHCONTRASTA; 6346 STRUCT!{struct HIGHCONTRASTW { 6347 cbSize: UINT, 6348 dwFlags: DWORD, 6349 lpszDefaultScheme: LPWSTR, 6350 }} 6351 pub type LPHIGHCONTRASTW = *mut HIGHCONTRASTW; 6352 pub const HCF_HIGHCONTRASTON: DWORD = 0x00000001; 6353 pub const HCF_AVAILABLE: DWORD = 0x00000002; 6354 pub const HCF_HOTKEYACTIVE: DWORD = 0x00000004; 6355 pub const HCF_CONFIRMHOTKEY: DWORD = 0x00000008; 6356 pub const HCF_HOTKEYSOUND: DWORD = 0x00000010; 6357 pub const HCF_INDICATOR: DWORD = 0x00000020; 6358 pub const HCF_HOTKEYAVAILABLE: DWORD = 0x00000040; 6359 pub const HCF_LOGONDESKTOP: DWORD = 0x00000100; 6360 pub const HCF_DEFAULTDESKTOP: DWORD = 0x00000200; 6361 pub const CDS_UPDATEREGISTRY: DWORD = 0x00000001; 6362 pub const CDS_TEST: DWORD = 0x00000002; 6363 pub const CDS_FULLSCREEN: DWORD = 0x00000004; 6364 pub const CDS_GLOBAL: DWORD = 0x00000008; 6365 pub const CDS_SET_PRIMARY: DWORD = 0x00000010; 6366 pub const CDS_VIDEOPARAMETERS: DWORD = 0x00000020; 6367 pub const CDS_ENABLE_UNSAFE_MODES: DWORD = 0x00000100; 6368 pub const CDS_DISABLE_UNSAFE_MODES: DWORD = 0x00000200; 6369 pub const CDS_RESET: DWORD = 0x40000000; 6370 pub const CDS_RESET_EX: DWORD = 0x20000000; 6371 pub const CDS_NORESET: DWORD = 0x10000000; 6372 pub const DISP_CHANGE_SUCCESSFUL: LONG = 0; 6373 pub const DISP_CHANGE_RESTART: LONG = 1; 6374 pub const DISP_CHANGE_FAILED: LONG = -1; 6375 pub const DISP_CHANGE_BADMODE: LONG = -2; 6376 pub const DISP_CHANGE_NOTUPDATED: LONG = -3; 6377 pub const DISP_CHANGE_BADFLAGS: LONG = -4; 6378 pub const DISP_CHANGE_BADPARAM: LONG = -5; 6379 pub const DISP_CHANGE_BADDUALVIEW: LONG = -6; 6380 extern "system" { 6381 pub fn ChangeDisplaySettingsA( 6382 lpDevMode: *mut DEVMODEA, 6383 dwFlags: DWORD, 6384 ) -> LONG; 6385 pub fn ChangeDisplaySettingsW( 6386 lpDevMode: *mut DEVMODEW, 6387 dwFlags: DWORD, 6388 ) -> LONG; 6389 pub fn ChangeDisplaySettingsExA( 6390 lpszDeviceName: LPCSTR, 6391 lpDevMode: *mut DEVMODEA, 6392 hwnd: HWND, 6393 dwFlags: DWORD, 6394 lParam: LPVOID, 6395 ) -> LONG; 6396 pub fn ChangeDisplaySettingsExW( 6397 lpszDeviceName: LPCWSTR, 6398 lpDevMode: *mut DEVMODEW, 6399 hwnd: HWND, 6400 dwFlags: DWORD, 6401 lParam: LPVOID, 6402 ) -> LONG; 6403 } 6404 pub const ENUM_CURRENT_SETTINGS: DWORD = 0xFFFFFFFF; 6405 pub const ENUM_REGISTRY_SETTINGS: DWORD = 0xFFFFFFFE; 6406 extern "system" { 6407 pub fn EnumDisplaySettingsA( 6408 lpszDeviceName: LPCSTR, 6409 iModeNum: DWORD, 6410 lpDevMode: *mut DEVMODEA, 6411 ) -> BOOL; 6412 pub fn EnumDisplaySettingsW( 6413 lpszDeviceName: LPCWSTR, 6414 iModeNum: DWORD, 6415 lpDevMode: *mut DEVMODEW, 6416 ) -> BOOL; 6417 pub fn EnumDisplaySettingsExA( 6418 lpszDeviceName: LPCSTR, 6419 iModeNum: DWORD, 6420 lpDevMode: *mut DEVMODEA, 6421 dwFlags: DWORD, 6422 ) -> BOOL; 6423 pub fn EnumDisplaySettingsExW( 6424 lpszDeviceName: LPCWSTR, 6425 iModeNum: DWORD, 6426 lpDevMode: *mut DEVMODEW, 6427 dwFlags: DWORD, 6428 ) -> BOOL; 6429 } 6430 pub const EDS_RAWMODE: DWORD = 0x00000002; 6431 pub const EDS_ROTATEDMODE: DWORD = 0x00000004; 6432 extern "system" { 6433 pub fn EnumDisplayDevicesA( 6434 lpDevice: LPCSTR, 6435 iDevNum: DWORD, 6436 lpDisplayDevice: PDISPLAY_DEVICEA, 6437 dwFlags: DWORD, 6438 ) -> BOOL; 6439 pub fn EnumDisplayDevicesW( 6440 lpDevice: LPCWSTR, 6441 iDevNum: DWORD, 6442 lpDisplayDevice: PDISPLAY_DEVICEW, 6443 dwFlags: DWORD, 6444 ) -> BOOL; 6445 } 6446 pub const EDD_GET_DEVICE_INTERFACE_NAME: DWORD = 0x00000001; 6447 extern "system" { 6448 pub fn SystemParametersInfoA( 6449 uiAction: UINT, 6450 uiParam: UINT, 6451 pvParam: PVOID, 6452 fWinIni: UINT, 6453 ) -> BOOL; 6454 pub fn SystemParametersInfoW( 6455 uiAction: UINT, 6456 uiParam: UINT, 6457 pvParam: PVOID, 6458 fWinIni: UINT, 6459 ) -> BOOL; 6460 pub fn SystemParametersInfoForDpi( 6461 uiAction: UINT, 6462 uiParam: UINT, 6463 pvParam: PVOID, 6464 fWinIni: UINT, 6465 dpi: UINT, 6466 ) -> BOOL; 6467 } 6468 //13191 6469 extern "system" { 6470 pub fn SetLastErrorEx( 6471 dwErrCode: DWORD, 6472 dwType: DWORD, 6473 ); 6474 pub fn InternalGetWindowText( 6475 hWnd: HWND, 6476 pString: LPWSTR, 6477 cchMaxCount: c_int, 6478 ) -> c_int; 6479 pub fn EndTask( 6480 hWnd: HWND, 6481 fShutDown: BOOL, 6482 fForce: BOOL, 6483 ) -> BOOL; 6484 pub fn CancelShutdown() -> BOOL; 6485 } 6486 pub const MONITOR_DEFAULTTONULL: DWORD = 0x00000000; 6487 pub const MONITOR_DEFAULTTOPRIMARY: DWORD = 0x00000001; 6488 pub const MONITOR_DEFAULTTONEAREST: DWORD = 0x00000002; 6489 extern "system" { 6490 pub fn MonitorFromPoint( 6491 pt: POINT, 6492 dwFlags: DWORD, 6493 ) -> HMONITOR; 6494 pub fn MonitorFromRect( 6495 lprc: LPCRECT, 6496 dwFlags: DWORD, 6497 ) -> HMONITOR; 6498 pub fn MonitorFromWindow( 6499 hwnd: HWND, 6500 dwFlags: DWORD, 6501 ) -> HMONITOR; 6502 } 6503 pub const MONITORINFOF_PRIMARY: DWORD = 1; 6504 pub const CCHDEVICENAME: usize = 32; 6505 STRUCT!{struct MONITORINFO { 6506 cbSize: DWORD, 6507 rcMonitor: RECT, 6508 rcWork: RECT, 6509 dwFlags: DWORD, 6510 }} 6511 pub type LPMONITORINFO = *mut MONITORINFO; 6512 STRUCT!{struct MONITORINFOEXA { 6513 cbSize: DWORD, 6514 rcMonitor: RECT, 6515 rcWork: RECT, 6516 dwFlags: DWORD, 6517 szDevice: [CHAR; CCHDEVICENAME], 6518 }} 6519 pub type LPMONITORINFOEXA = *mut MONITORINFOEXA; 6520 STRUCT!{struct MONITORINFOEXW { 6521 cbSize: DWORD, 6522 rcMonitor: RECT, 6523 rcWork: RECT, 6524 dwFlags: DWORD, 6525 szDevice: [WCHAR; CCHDEVICENAME], 6526 }} 6527 pub type LPMONITORINFOEXW = *mut MONITORINFOEXW; 6528 extern "system" { 6529 pub fn GetMonitorInfoA( 6530 hMonitor: HMONITOR, 6531 lpmi: LPMONITORINFO, 6532 ) -> BOOL; 6533 pub fn GetMonitorInfoW( 6534 hMonitor: HMONITOR, 6535 lpmi: LPMONITORINFO, 6536 ) -> BOOL; 6537 } 6538 FN!{stdcall MONITORENUMPROC( 6539 HMONITOR, 6540 HDC, 6541 LPRECT, 6542 LPARAM, 6543 ) -> BOOL} 6544 extern "system" { 6545 pub fn EnumDisplayMonitors( 6546 hdc: HDC, 6547 lprcClip: LPCRECT, 6548 lpfnEnum: MONITORENUMPROC, 6549 dwData: LPARAM, 6550 ) -> BOOL; 6551 pub fn NotifyWinEvent( 6552 event: DWORD, 6553 hwnd: HWND, 6554 idObject: LONG, 6555 idChild: LONG, 6556 ); 6557 } 6558 FN!{stdcall WINEVENTPROC( 6559 HWINEVENTHOOK, 6560 DWORD, 6561 HWND, 6562 LONG, 6563 LONG, 6564 DWORD, 6565 DWORD, 6566 ) -> ()} 6567 extern "system" { 6568 pub fn SetWinEventHook( 6569 eventMin: DWORD, 6570 eventMax: DWORD, 6571 hmodWinEventProc: HMODULE, 6572 pfnWinEventProc: WINEVENTPROC, 6573 idProcess: DWORD, 6574 idThread: DWORD, 6575 dwFlags: DWORD, 6576 ) -> HWINEVENTHOOK; 6577 pub fn IsWinEventHookInstalled( 6578 event: DWORD, 6579 ) -> BOOL; 6580 } 6581 pub const WINEVENT_OUTOFCONTEXT: UINT = 0x0000; 6582 pub const WINEVENT_SKIPOWNTHREAD: UINT = 0x0001; 6583 pub const WINEVENT_SKIPOWNPROCESS: UINT = 0x0002; 6584 pub const WINEVENT_INCONTEXT: UINT = 0x0004; 6585 extern "system" { 6586 pub fn UnhookWinEvent( 6587 hWinEventHook: HWINEVENTHOOK, 6588 ) -> BOOL; 6589 } 6590 pub const CHILDID_SELF: LONG = 0; 6591 pub const INDEXID_OBJECT: LONG = 0; 6592 pub const INDEXID_CONTAINER: LONG = 0; 6593 pub const OBJID_WINDOW: LONG = 0x0000; 6594 pub const OBJID_SYSMENU: LONG = 0xFFFFFFFF; 6595 pub const OBJID_TITLEBAR: LONG = 0xFFFFFFFE; 6596 pub const OBJID_MENU: LONG = 0xFFFFFFFD; 6597 pub const OBJID_CLIENT: LONG = 0xFFFFFFFC; 6598 pub const OBJID_VSCROLL: LONG = 0xFFFFFFFB; 6599 pub const OBJID_HSCROLL: LONG = 0xFFFFFFFA; 6600 pub const OBJID_SIZEGRIP: LONG = 0xFFFFFFF9; 6601 pub const OBJID_CARET: LONG = 0xFFFFFFF8; 6602 pub const OBJID_CURSOR: LONG = 0xFFFFFFF7; 6603 pub const OBJID_ALERT: LONG = 0xFFFFFFF6; 6604 pub const OBJID_SOUND: LONG = 0xFFFFFFF5; 6605 pub const OBJID_QUERYCLASSNAMEIDX: LONG = 0xFFFFFFF4; 6606 pub const OBJID_NATIVEOM: LONG = 0xFFFFFFF0; 6607 pub const EVENT_MIN: UINT = 0x0001; 6608 pub const EVENT_MAX: UINT = 0x7FFFFFFF; 6609 pub const EVENT_SYSTEM_SOUND: UINT = 0x0001; 6610 pub const EVENT_SYSTEM_ALERT: UINT = 0x0002; 6611 pub const EVENT_SYSTEM_FOREGROUND: UINT = 0x0003; 6612 pub const EVENT_SYSTEM_MENUSTART: UINT = 0x0004; 6613 pub const EVENT_SYSTEM_MENUEND: UINT = 0x0005; 6614 pub const EVENT_SYSTEM_MENUPOPUPSTART: UINT = 0x0006; 6615 pub const EVENT_SYSTEM_MENUPOPUPEND: UINT = 0x0007; 6616 pub const EVENT_SYSTEM_CAPTURESTART: UINT = 0x0008; 6617 pub const EVENT_SYSTEM_CAPTUREEND: UINT = 0x0009; 6618 pub const EVENT_SYSTEM_MOVESIZESTART: UINT = 0x000A; 6619 pub const EVENT_SYSTEM_MOVESIZEEND: UINT = 0x000B; 6620 pub const EVENT_SYSTEM_CONTEXTHELPSTART: UINT = 0x000C; 6621 pub const EVENT_SYSTEM_CONTEXTHELPEND: UINT = 0x000D; 6622 pub const EVENT_SYSTEM_DRAGDROPSTART: UINT = 0x000E; 6623 pub const EVENT_SYSTEM_DRAGDROPEND: UINT = 0x000F; 6624 pub const EVENT_SYSTEM_DIALOGSTART: UINT = 0x0010; 6625 pub const EVENT_SYSTEM_DIALOGEND: UINT = 0x0011; 6626 pub const EVENT_SYSTEM_SCROLLINGSTART: UINT = 0x0012; 6627 pub const EVENT_SYSTEM_SCROLLINGEND: UINT = 0x0013; 6628 pub const EVENT_SYSTEM_SWITCHSTART: UINT = 0x0014; 6629 pub const EVENT_SYSTEM_SWITCHEND: UINT = 0x0015; 6630 pub const EVENT_SYSTEM_MINIMIZESTART: UINT = 0x0016; 6631 pub const EVENT_SYSTEM_MINIMIZEEND: UINT = 0x0017; 6632 pub const EVENT_SYSTEM_DESKTOPSWITCH: UINT = 0x0020; 6633 pub const EVENT_SYSTEM_SWITCHER_APPGRABBED: UINT = 0x0024; 6634 pub const EVENT_SYSTEM_SWITCHER_APPOVERTARGET: UINT = 0x0025; 6635 pub const EVENT_SYSTEM_SWITCHER_APPDROPPED: UINT = 0x0026; 6636 pub const EVENT_SYSTEM_SWITCHER_CANCELLED: UINT = 0x0027; 6637 pub const EVENT_SYSTEM_IME_KEY_NOTIFICATION: UINT = 0x0029; 6638 pub const EVENT_SYSTEM_END: UINT = 0x00FF; 6639 pub const EVENT_OEM_DEFINED_START: UINT = 0x0101; 6640 pub const EVENT_OEM_DEFINED_END: UINT = 0x01FF; 6641 pub const EVENT_UIA_EVENTID_START: UINT = 0x4E00; 6642 pub const EVENT_UIA_EVENTID_END: UINT = 0x4EFF; 6643 pub const EVENT_UIA_PROPID_START: UINT = 0x7500; 6644 pub const EVENT_UIA_PROPID_END: UINT = 0x75FF; 6645 pub const EVENT_CONSOLE_CARET: UINT = 0x4001; 6646 pub const EVENT_CONSOLE_UPDATE_REGION: UINT = 0x4002; 6647 pub const EVENT_CONSOLE_UPDATE_SIMPLE: UINT = 0x4003; 6648 pub const EVENT_CONSOLE_UPDATE_SCROLL: UINT = 0x4004; 6649 pub const EVENT_CONSOLE_LAYOUT: UINT = 0x4005; 6650 pub const EVENT_CONSOLE_START_APPLICATION: UINT = 0x4006; 6651 pub const EVENT_CONSOLE_END_APPLICATION: UINT = 0x4007; 6652 #[cfg(target_pointer_width = "64")] 6653 pub const CONSOLE_APPLICATION_16BIT: LONG = 0x0000; 6654 #[cfg(target_pointer_width = "32")] 6655 pub const CONSOLE_APPLICATION_16BIT: LONG = 0x0001; 6656 pub const CONSOLE_CARET_SELECTION: LONG = 0x0001; 6657 pub const CONSOLE_CARET_VISIBLE: LONG = 0x0002; 6658 pub const EVENT_CONSOLE_END: UINT = 0x40FF; 6659 pub const EVENT_OBJECT_CREATE: UINT = 0x8000; 6660 pub const EVENT_OBJECT_DESTROY: UINT = 0x8001; 6661 pub const EVENT_OBJECT_SHOW: UINT = 0x8002; 6662 pub const EVENT_OBJECT_HIDE: UINT = 0x8003; 6663 pub const EVENT_OBJECT_REORDER: UINT = 0x8004; 6664 pub const EVENT_OBJECT_FOCUS: UINT = 0x8005; 6665 pub const EVENT_OBJECT_SELECTION: UINT = 0x8006; 6666 pub const EVENT_OBJECT_SELECTIONADD: UINT = 0x8007; 6667 pub const EVENT_OBJECT_SELECTIONREMOVE: UINT = 0x8008; 6668 pub const EVENT_OBJECT_SELECTIONWITHIN: UINT = 0x8009; 6669 pub const EVENT_OBJECT_STATECHANGE: UINT = 0x800A; 6670 pub const EVENT_OBJECT_LOCATIONCHANGE: UINT = 0x800B; 6671 pub const EVENT_OBJECT_NAMECHANGE: UINT = 0x800C; 6672 pub const EVENT_OBJECT_DESCRIPTIONCHANGE: UINT = 0x800D; 6673 pub const EVENT_OBJECT_VALUECHANGE: UINT = 0x800E; 6674 pub const EVENT_OBJECT_PARENTCHANGE: UINT = 0x800F; 6675 pub const EVENT_OBJECT_HELPCHANGE: UINT = 0x8010; 6676 pub const EVENT_OBJECT_DEFACTIONCHANGE: UINT = 0x8011; 6677 pub const EVENT_OBJECT_ACCELERATORCHANGE: UINT = 0x8012; 6678 pub const EVENT_OBJECT_INVOKED: UINT = 0x8013; 6679 pub const EVENT_OBJECT_TEXTSELECTIONCHANGED: UINT = 0x8014; 6680 pub const EVENT_OBJECT_CONTENTSCROLLED: UINT = 0x8015; 6681 pub const EVENT_SYSTEM_ARRANGMENTPREVIEW: UINT = 0x8016; 6682 pub const EVENT_OBJECT_CLOAKED: UINT = 0x8017; 6683 pub const EVENT_OBJECT_UNCLOAKED: UINT = 0x8018; 6684 pub const EVENT_OBJECT_LIVEREGIONCHANGED: UINT = 0x8019; 6685 pub const EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED: UINT = 0x8020; 6686 pub const EVENT_OBJECT_DRAGSTART: UINT = 0x8021; 6687 pub const EVENT_OBJECT_DRAGCANCEL: UINT = 0x8022; 6688 pub const EVENT_OBJECT_DRAGCOMPLETE: UINT = 0x8023; 6689 pub const EVENT_OBJECT_DRAGENTER: UINT = 0x8024; 6690 pub const EVENT_OBJECT_DRAGLEAVE: UINT = 0x8025; 6691 pub const EVENT_OBJECT_DRAGDROPPED: UINT = 0x8026; 6692 pub const EVENT_OBJECT_IME_SHOW: UINT = 0x8027; 6693 pub const EVENT_OBJECT_IME_HIDE: UINT = 0x8028; 6694 pub const EVENT_OBJECT_IME_CHANGE: UINT = 0x8029; 6695 pub const EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED: UINT = 0x8030; 6696 pub const EVENT_OBJECT_END: UINT = 0x80FF; 6697 pub const EVENT_AIA_START: UINT = 0xA000; 6698 pub const EVENT_AIA_END: UINT = 0xAFFF; 6699 pub const ALERT_SYSTEM_INFORMATIONAL: LONG = 1; 6700 pub const ALERT_SYSTEM_WARNING: LONG = 2; 6701 pub const ALERT_SYSTEM_ERROR: LONG = 3; 6702 pub const ALERT_SYSTEM_QUERY: LONG = 4; 6703 pub const ALERT_SYSTEM_CRITICAL: LONG = 5; 6704 pub const CALERT_SYSTEM: LONG = 6; 6705 STRUCT!{struct GUITHREADINFO { 6706 cbSize: DWORD, 6707 flags: DWORD, 6708 hwndActive: HWND, 6709 hwndFocus: HWND, 6710 hwndCapture: HWND, 6711 hwndMenuOwner: HWND, 6712 hwndMoveSize: HWND, 6713 hwndCaret: HWND, 6714 rcCaret: RECT, 6715 }} 6716 pub type PGUITHREADINFO = *mut GUITHREADINFO; 6717 pub type LPGUITHREADINFO = *mut GUITHREADINFO; 6718 pub const GUI_CARETBLINKING: DWORD = 0x00000001; 6719 pub const GUI_INMOVESIZE: DWORD = 0x00000002; 6720 pub const GUI_INMENUMODE: DWORD = 0x00000004; 6721 pub const GUI_SYSTEMMENUMODE: DWORD = 0x00000008; 6722 pub const GUI_POPUPMENUMODE: DWORD = 0x00000010; 6723 #[cfg(target_arch = "x86_64")] 6724 pub const GUI_16BITTASK: DWORD = 0x00000000; 6725 #[cfg(target_arch = "x86")] 6726 pub const GUI_16BITTASK: DWORD = 0x00000020; 6727 extern "system" { 6728 pub fn GetGUIThreadInfo( 6729 idThread: DWORD, 6730 pgui: PGUITHREADINFO, 6731 ) -> BOOL; 6732 pub fn BlockInput( 6733 fBlockIt: BOOL, 6734 ) -> BOOL; 6735 } 6736 pub const USER_DEFAULT_SCREEN_DPI: LONG = 96; 6737 extern "system" { 6738 pub fn SetProcessDPIAware() -> BOOL; 6739 pub fn IsProcessDPIAware() -> BOOL; 6740 pub fn SetThreadDpiAwarenessContext( 6741 dpiContext: DPI_AWARENESS_CONTEXT, 6742 ) -> DPI_AWARENESS_CONTEXT; 6743 pub fn GetThreadDpiAwarenessContext() -> DPI_AWARENESS_CONTEXT; 6744 pub fn GetWindowDpiAwarenessContext( 6745 hwnd: HWND, 6746 ) -> DPI_AWARENESS_CONTEXT; 6747 pub fn GetAwarenessFromDpiAwarenessContext( 6748 value: DPI_AWARENESS_CONTEXT, 6749 ) -> DPI_AWARENESS; 6750 pub fn GetDpiFromDpiAwarenessContext( 6751 value: DPI_AWARENESS_CONTEXT, 6752 ) -> UINT; 6753 pub fn AreDpiAwarenessContextsEqual( 6754 dpiContextA: DPI_AWARENESS_CONTEXT, 6755 dpiContextB: DPI_AWARENESS_CONTEXT, 6756 ) -> BOOL; 6757 pub fn IsValidDpiAwarenessContext( 6758 value: DPI_AWARENESS_CONTEXT, 6759 ) -> BOOL; 6760 pub fn GetDpiForWindow( 6761 hwnd: HWND, 6762 ) -> UINT; 6763 pub fn GetDpiForSystem() -> UINT; 6764 pub fn GetSystemDpiForProcess( 6765 hProcess: HANDLE, 6766 ) -> UINT; 6767 pub fn EnableNonClientDpiScaling( 6768 hwnd: HWND, 6769 ) -> BOOL; 6770 pub fn SetProcessDpiAwarenessContext( 6771 value: DPI_AWARENESS_CONTEXT, 6772 ) -> BOOL; 6773 pub fn SetThreadDpiHostingBehavior( 6774 value: DPI_HOSTING_BEHAVIOR, 6775 ) -> DPI_HOSTING_BEHAVIOR; 6776 pub fn GetThreadDpiHostingBehavior() -> DPI_HOSTING_BEHAVIOR; 6777 pub fn GetWindowDpiHostingBehavior( 6778 hwnd: HWND, 6779 ) -> DPI_HOSTING_BEHAVIOR; 6780 pub fn GetWindowModuleFileNameA( 6781 hWnd: HWND, 6782 lpszFileName: LPCSTR, 6783 cchFileNameMax: UINT, 6784 ) -> UINT; 6785 pub fn GetWindowModuleFileNameW( 6786 hWnd: HWND, 6787 lpszFileName: LPWSTR, 6788 cchFileNameMax: UINT, 6789 ) -> UINT; 6790 } 6791 pub const STATE_SYSTEM_UNAVAILABLE: DWORD = 0x00000001; 6792 pub const STATE_SYSTEM_SELECTED: DWORD = 0x00000002; 6793 pub const STATE_SYSTEM_FOCUSED: DWORD = 0x00000004; 6794 pub const STATE_SYSTEM_PRESSED: DWORD = 0x00000008; 6795 pub const STATE_SYSTEM_CHECKED: DWORD = 0x00000010; 6796 pub const STATE_SYSTEM_MIXED: DWORD = 0x00000020; 6797 pub const STATE_SYSTEM_INDETERMINATE: DWORD = STATE_SYSTEM_MIXED; 6798 pub const STATE_SYSTEM_READONLY: DWORD = 0x00000040; 6799 pub const STATE_SYSTEM_HOTTRACKED: DWORD = 0x00000080; 6800 pub const STATE_SYSTEM_DEFAULT: DWORD = 0x00000100; 6801 pub const STATE_SYSTEM_EXPANDED: DWORD = 0x00000200; 6802 pub const STATE_SYSTEM_COLLAPSED: DWORD = 0x00000400; 6803 pub const STATE_SYSTEM_BUSY: DWORD = 0x00000800; 6804 pub const STATE_SYSTEM_FLOATING: DWORD = 0x00001000; 6805 pub const STATE_SYSTEM_MARQUEED: DWORD = 0x00002000; 6806 pub const STATE_SYSTEM_ANIMATED: DWORD = 0x00004000; 6807 pub const STATE_SYSTEM_INVISIBLE: DWORD = 0x00008000; 6808 pub const STATE_SYSTEM_OFFSCREEN: DWORD = 0x00010000; 6809 pub const STATE_SYSTEM_SIZEABLE: DWORD = 0x00020000; 6810 pub const STATE_SYSTEM_MOVEABLE: DWORD = 0x00040000; 6811 pub const STATE_SYSTEM_SELFVOICING: DWORD = 0x00080000; 6812 pub const STATE_SYSTEM_FOCUSABLE: DWORD = 0x00100000; 6813 pub const STATE_SYSTEM_SELECTABLE: DWORD = 0x00200000; 6814 pub const STATE_SYSTEM_LINKED: DWORD = 0x00400000; 6815 pub const STATE_SYSTEM_TRAVERSED: DWORD = 0x00800000; 6816 pub const STATE_SYSTEM_MULTISELECTABLE: DWORD = 0x01000000; 6817 pub const STATE_SYSTEM_EXTSELECTABLE: DWORD = 0x02000000; 6818 pub const STATE_SYSTEM_ALERT_LOW: DWORD = 0x04000000; 6819 pub const STATE_SYSTEM_ALERT_MEDIUM: DWORD = 0x08000000; 6820 pub const STATE_SYSTEM_ALERT_HIGH: DWORD = 0x10000000; 6821 pub const STATE_SYSTEM_PROTECTED: DWORD = 0x20000000; 6822 pub const STATE_SYSTEM_VALID: DWORD = 0x3fffffff; 6823 pub const CCHILDREN_TITLEBAR: usize = 5; 6824 pub const CCHILDREN_SCROLLBAR: usize = 5; 6825 STRUCT!{struct CURSORINFO { 6826 cbSize: DWORD, 6827 flags: DWORD, 6828 hCursor: HCURSOR, 6829 ptScreenPos: POINT, 6830 }} 6831 pub type PCURSORINFO = *mut CURSORINFO; 6832 pub type LPCURSORINFO = *mut CURSORINFO; 6833 pub const CURSOR_SHOWING: DWORD = 0x00000001; 6834 pub const CURSOR_SUPPRESSED: DWORD = 0x00000002; 6835 extern "system" { 6836 pub fn GetCursorInfo( 6837 pci: PCURSORINFO, 6838 ) -> BOOL; 6839 } 6840 STRUCT!{struct WINDOWINFO { 6841 cbSize: DWORD, 6842 rcWindow: RECT, 6843 rcClient: RECT, 6844 dwStyle: DWORD, 6845 dwExStyle: DWORD, 6846 dwWindowStatus: DWORD, 6847 cxWindowBorders: UINT, 6848 cyWindowBorders: UINT, 6849 atomWindowType: ATOM, 6850 wCreatorVersion: WORD, 6851 }} 6852 pub type PWINDOWINFO = *mut WINDOWINFO; 6853 pub type LPWINDOWINFO = *mut WINDOWINFO; 6854 pub const WS_ACTIVECAPTION: DWORD = 0x0001; 6855 extern "system" { 6856 pub fn GetWindowInfo( 6857 hwnd: HWND, 6858 pwi: PWINDOWINFO, 6859 ) -> BOOL; 6860 } 6861 STRUCT!{struct TITLEBARINFO { 6862 cbSize: DWORD, 6863 rcTitleBar: RECT, 6864 rgstate: [DWORD; CCHILDREN_TITLEBAR + 1], 6865 }} 6866 pub type PTITLEBARINFO = *mut TITLEBARINFO; 6867 pub type LPTITLEBARINFO = *mut TITLEBARINFO; 6868 extern "system" { 6869 pub fn GetTitleBarInfo( 6870 hwnd: HWND, 6871 pti: PTITLEBARINFO, 6872 ) -> BOOL; 6873 } 6874 STRUCT!{struct TITLEBARINFOEX { 6875 cbSize: DWORD, 6876 rcTitleBar: RECT, 6877 rgstate: [DWORD; CCHILDREN_TITLEBAR + 1], 6878 rgrect: [RECT; CCHILDREN_TITLEBAR + 1], 6879 }} 6880 pub type PTITLEBARINFOEX = *mut TITLEBARINFOEX; 6881 pub type LPTITLEBARINFOEX = *mut TITLEBARINFOEX; 6882 STRUCT!{struct MENUBARINFO { 6883 cbSize: DWORD, 6884 rcBar: RECT, 6885 hMenu: HMENU, 6886 hwndMenu: HWND, 6887 BitFields: BOOL, 6888 }} 6889 BITFIELD!{MENUBARINFO BitFields: BOOL [ 6890 fBarFocused set_fBarFocused[0..1], 6891 fFocused set_fFocused[1..2], 6892 ]} 6893 pub type PMENUBARINFO = *mut MENUBARINFO; 6894 pub type LPMENUBARINFO = *mut MENUBARINFO; 6895 extern "system" { 6896 pub fn GetMenuBarInfo( 6897 hwnd: HWND, 6898 idObject: LONG, 6899 idItem: LONG, 6900 pmbi: PMENUBARINFO, 6901 ) -> BOOL; 6902 } 6903 STRUCT!{struct SCROLLBARINFO { 6904 cbSize: DWORD, 6905 rcScrollBar: RECT, 6906 dxyLineButton: c_int, 6907 xyThumbTop: c_int, 6908 xyThumbBottom: c_int, 6909 reserved: c_int, 6910 rgstate: [DWORD; CCHILDREN_SCROLLBAR + 1], 6911 }} 6912 pub type PSCROLLBARINFO = *mut SCROLLBARINFO; 6913 pub type LPSCROLLBARINFO = *mut SCROLLBARINFO; 6914 extern "system" { 6915 pub fn GetScrollBarInfo( 6916 hwnd: HWND, 6917 idObject: LONG, 6918 psbi: PSCROLLBARINFO, 6919 ) -> BOOL; 6920 } 6921 STRUCT!{struct COMBOBOXINFO { 6922 cbSize: DWORD, 6923 rcItem: RECT, 6924 rcButton: RECT, 6925 stateButton: DWORD, 6926 hwndCombo: HWND, 6927 hwndItem: HWND, 6928 hwndList: HWND, 6929 }} 6930 pub type PCOMBOBOXINFO = *mut COMBOBOXINFO; 6931 pub type LPCOMBOBOXINFO = *mut COMBOBOXINFO; 6932 extern "system" { 6933 pub fn GetComboBoxInfo( 6934 hwndCombo: HWND, 6935 pcbi: PCOMBOBOXINFO, 6936 ) -> BOOL; 6937 } 6938 pub const GA_PARENT: UINT = 1; 6939 pub const GA_ROOT: UINT = 2; 6940 pub const GA_ROOTOWNER: UINT = 3; 6941 extern "system" { 6942 pub fn GetAncestor( 6943 hwnd: HWND, 6944 gaFlags: UINT, 6945 ) -> HWND; 6946 pub fn RealChildWindowFromPoint( 6947 hwndParent: HWND, 6948 ptParentClientCoords: POINT, 6949 ) -> HWND; 6950 pub fn RealGetWindowClassA( 6951 hwnd: HWND, 6952 ptszClassName: LPSTR, 6953 cchClassNameMax: UINT, 6954 ) -> UINT; 6955 pub fn RealGetWindowClassW( 6956 hwnd: HWND, 6957 ptszClassName: LPWSTR, 6958 cchClassNameMax: UINT, 6959 ) -> UINT; 6960 } 6961 STRUCT!{struct ALTTABINFO { 6962 cbSize: DWORD, 6963 cItems: c_int, 6964 cColumns: c_int, 6965 cRows: c_int, 6966 iColFocus: c_int, 6967 iRowFocus: c_int, 6968 cxItem: c_int, 6969 cyItem: c_int, 6970 ptStart: POINT, 6971 }} 6972 pub type PALTTABINFO = *mut ALTTABINFO; 6973 pub type LPALTTABINFO = *mut ALTTABINFO; 6974 extern "system" { 6975 pub fn GetAltTabInfoA( 6976 hwnd: HWND, 6977 iItem: c_int, 6978 pati: PALTTABINFO, 6979 pszItemText: LPSTR, 6980 cchItemText: UINT, 6981 ) -> BOOL; 6982 pub fn GetAltTabInfoW( 6983 hwnd: HWND, 6984 iItem: c_int, 6985 pati: PALTTABINFO, 6986 pszItemText: LPWSTR, 6987 cchItemText: UINT, 6988 ) -> BOOL; 6989 pub fn GetListBoxInfo( 6990 hwnd: HWND, 6991 ) -> DWORD; 6992 pub fn LockWorkStation() -> BOOL; 6993 pub fn UserHandleGrantAccess( 6994 hUserHandle: HANDLE, 6995 hJob: HANDLE, 6996 bGrant: BOOL, 6997 ) -> BOOL; 6998 } 6999 DECLARE_HANDLE!{HRAWINPUT, HRAWINPUT__} 7000 #[inline] 7001 pub fn GET_RAWINPUT_CODE_WPARAM(wParam: WPARAM) -> WPARAM { wParam & 0xff } 7002 pub const RIM_INPUT: WPARAM = 0; 7003 pub const RIM_INPUTSINK: WPARAM = 1; 7004 STRUCT!{struct RAWINPUTHEADER { 7005 dwType: DWORD, 7006 dwSize: DWORD, 7007 hDevice: HANDLE, 7008 wParam: WPARAM, 7009 }} 7010 pub type PRAWINPUTHEADER = *mut RAWINPUTHEADER; 7011 pub type LPRAWINPUTHEADER = *mut RAWINPUTHEADER; 7012 pub const RIM_TYPEMOUSE: DWORD = 0; 7013 pub const RIM_TYPEKEYBOARD: DWORD = 1; 7014 pub const RIM_TYPEHID: DWORD = 2; 7015 STRUCT!{struct RAWMOUSE { 7016 usFlags: USHORT, 7017 memory_padding: USHORT, // 16bit Padding for 32bit align in following union 7018 usButtonFlags: USHORT, 7019 usButtonData: USHORT, 7020 ulRawButtons: ULONG, 7021 lLastX: LONG, 7022 lLastY: LONG, 7023 ulExtraInformation: ULONG, 7024 }} 7025 pub type PRAWMOUSE = *mut RAWMOUSE; 7026 pub type LPRAWMOUSE = *mut RAWMOUSE; 7027 pub const RI_MOUSE_LEFT_BUTTON_DOWN: USHORT = 0x0001; 7028 pub const RI_MOUSE_LEFT_BUTTON_UP: USHORT = 0x0002; 7029 pub const RI_MOUSE_RIGHT_BUTTON_DOWN: USHORT = 0x0004; 7030 pub const RI_MOUSE_RIGHT_BUTTON_UP: USHORT = 0x0008; 7031 pub const RI_MOUSE_MIDDLE_BUTTON_DOWN: USHORT = 0x0010; 7032 pub const RI_MOUSE_MIDDLE_BUTTON_UP: USHORT = 0x0020; 7033 pub const RI_MOUSE_BUTTON_1_DOWN: USHORT = RI_MOUSE_LEFT_BUTTON_DOWN; 7034 pub const RI_MOUSE_BUTTON_1_UP: USHORT = RI_MOUSE_LEFT_BUTTON_UP; 7035 pub const RI_MOUSE_BUTTON_2_DOWN: USHORT = RI_MOUSE_RIGHT_BUTTON_DOWN; 7036 pub const RI_MOUSE_BUTTON_2_UP: USHORT = RI_MOUSE_RIGHT_BUTTON_UP; 7037 pub const RI_MOUSE_BUTTON_3_DOWN: USHORT = RI_MOUSE_MIDDLE_BUTTON_DOWN; 7038 pub const RI_MOUSE_BUTTON_3_UP: USHORT = RI_MOUSE_MIDDLE_BUTTON_UP; 7039 pub const RI_MOUSE_BUTTON_4_DOWN: USHORT = 0x0040; 7040 pub const RI_MOUSE_BUTTON_4_UP: USHORT = 0x0080; 7041 pub const RI_MOUSE_BUTTON_5_DOWN: USHORT = 0x0100; 7042 pub const RI_MOUSE_BUTTON_5_UP: USHORT = 0x0200; 7043 pub const RI_MOUSE_WHEEL: USHORT = 0x0400; 7044 pub const MOUSE_MOVE_RELATIVE: USHORT = 0; 7045 pub const MOUSE_MOVE_ABSOLUTE: USHORT = 1; 7046 pub const MOUSE_VIRTUAL_DESKTOP: USHORT = 0x02; 7047 pub const MOUSE_ATTRIBUTES_CHANGED: USHORT = 0x04; 7048 pub const MOUSE_MOVE_NOCOALESCE: USHORT = 0x08; 7049 STRUCT!{struct RAWKEYBOARD { 7050 MakeCode: USHORT, 7051 Flags: USHORT, 7052 Reserved: USHORT, 7053 VKey: USHORT, 7054 Message: UINT, 7055 ExtraInformation: ULONG, 7056 }} 7057 pub type PRAWKEYBOARD = *mut RAWKEYBOARD; 7058 pub type LPRAWKEYBOARD = *mut RAWKEYBOARD; 7059 pub const KEYBOARD_OVERRUN_MAKE_CODE: DWORD = 0xFF; 7060 pub const RI_KEY_MAKE: DWORD = 0; 7061 pub const RI_KEY_BREAK: DWORD = 1; 7062 pub const RI_KEY_E0: DWORD = 2; 7063 pub const RI_KEY_E1: DWORD = 4; 7064 pub const RI_KEY_TERMSRV_SET_LED: DWORD = 8; 7065 pub const RI_KEY_TERMSRV_SHADOW: DWORD = 0x10; 7066 STRUCT!{struct RAWHID { 7067 dwSizeHid: DWORD, 7068 dwCount: DWORD, 7069 bRawData: [BYTE; 1], 7070 }} 7071 pub type PRAWHID = *mut RAWHID; 7072 pub type LPRAWHID = *mut RAWHID; 7073 UNION!{union RAWINPUT_data { 7074 [u32; 6], 7075 mouse mouse_mut: RAWMOUSE, 7076 keyboard keyboard_mut: RAWKEYBOARD, 7077 hid hid_mut: RAWHID, 7078 }} 7079 STRUCT!{struct RAWINPUT { 7080 header: RAWINPUTHEADER, 7081 data: RAWINPUT_data, 7082 }} 7083 pub type PRAWINPUT = *mut RAWINPUT; 7084 pub type LPRAWINPUT = *mut RAWINPUT; 7085 pub const RID_INPUT: DWORD = 0x10000003; 7086 pub const RID_HEADER: DWORD = 0x10000005; 7087 extern "system" { 7088 pub fn GetRawInputData( 7089 hRawInput: HRAWINPUT, 7090 uiCommand: UINT, 7091 pData: LPVOID, 7092 pcbSize: PUINT, 7093 cbSizeHeader: UINT, 7094 ) -> UINT; 7095 } 7096 pub const RIDI_PREPARSEDDATA: DWORD = 0x20000005; 7097 pub const RIDI_DEVICENAME: DWORD = 0x20000007; 7098 pub const RIDI_DEVICEINFO: DWORD = 0x2000000b; 7099 STRUCT!{struct RID_DEVICE_INFO_MOUSE { 7100 dwId: DWORD, 7101 dwNumberOfButtons: DWORD, 7102 dwSampleRate: DWORD, 7103 fHasHorizontalWheel: BOOL, 7104 }} 7105 pub type PRID_DEVICE_INFO_MOUSE = *mut RID_DEVICE_INFO_MOUSE; 7106 STRUCT!{struct RID_DEVICE_INFO_KEYBOARD { 7107 dwType: DWORD, 7108 dwSubType: DWORD, 7109 dwKeyboardMode: DWORD, 7110 dwNumberOfFunctionKeys: DWORD, 7111 dwNumberOfIndicators: DWORD, 7112 dwNumberOfKeysTotal: DWORD, 7113 }} 7114 pub type PRID_DEVICE_INFO_KEYBOARD = *mut RID_DEVICE_INFO_KEYBOARD; 7115 STRUCT!{struct RID_DEVICE_INFO_HID { 7116 dwVendorId: DWORD, 7117 dwProductId: DWORD, 7118 dwVersionNumber: DWORD, 7119 usUsagePage: USHORT, 7120 usUsage: USHORT, 7121 }} 7122 pub type PRID_DEVICE_INFO_HID = *mut RID_DEVICE_INFO_HID; 7123 UNION!{union RID_DEVICE_INFO_u { 7124 [u32; 6], 7125 mouse mouse_mut: RID_DEVICE_INFO_MOUSE, 7126 keyboard keyboard_mut: RID_DEVICE_INFO_KEYBOARD, 7127 hid hid_mut: RID_DEVICE_INFO_HID, 7128 }} 7129 STRUCT!{struct RID_DEVICE_INFO { 7130 cbSize: DWORD, 7131 dwType: DWORD, 7132 u: RID_DEVICE_INFO_u, 7133 }} 7134 pub type PRID_DEVICE_INFO = *mut RID_DEVICE_INFO; 7135 pub type LPRID_DEVICE_INFO = *mut RID_DEVICE_INFO; 7136 extern "system" { 7137 pub fn GetRawInputDeviceInfoA( 7138 hDevice: HANDLE, 7139 uiCommand: UINT, 7140 pData: LPVOID, 7141 pcbSize: PUINT, 7142 ) -> UINT; 7143 pub fn GetRawInputDeviceInfoW( 7144 hDevice: HANDLE, 7145 uiCommand: UINT, 7146 pData: LPVOID, 7147 pcbSize: PUINT, 7148 ) -> UINT; 7149 pub fn GetRawInputBuffer( 7150 pData: PRAWINPUT, 7151 pcbSize: PUINT, 7152 cbSizeHeader: UINT, 7153 ) -> UINT; 7154 } 7155 STRUCT!{struct RAWINPUTDEVICE { 7156 usUsagePage: USHORT, 7157 usUsage: USHORT, 7158 dwFlags: DWORD, 7159 hwndTarget: HWND, 7160 }} 7161 pub type PRAWINPUTDEVICE = *mut RAWINPUTDEVICE; 7162 pub type LPRAWINPUTDEVICE = *mut RAWINPUTDEVICE; 7163 pub type PCRAWINPUTDEVICE = *const RAWINPUTDEVICE; 7164 pub const RIDEV_REMOVE: DWORD = 0x00000001; 7165 pub const RIDEV_EXCLUDE: DWORD = 0x00000010; 7166 pub const RIDEV_PAGEONLY: DWORD = 0x00000020; 7167 pub const RIDEV_NOLEGACY: DWORD = 0x00000030; 7168 pub const RIDEV_INPUTSINK: DWORD = 0x00000100; 7169 pub const RIDEV_CAPTUREMOUSE: DWORD = 0x00000200; 7170 pub const RIDEV_NOHOTKEYS: DWORD = 0x00000200; 7171 pub const RIDEV_APPKEYS: DWORD = 0x00000400; 7172 pub const RIDEV_EXINPUTSINK: DWORD = 0x00001000; 7173 pub const RIDEV_DEVNOTIFY: DWORD = 0x00002000; 7174 pub const RIDEV_EXMODEMASK: DWORD = 0x000000F0; 7175 pub const GIDC_ARRIVAL: DWORD = 1; 7176 pub const GIDC_REMOVAL: DWORD = 2; 7177 extern "system" { 7178 pub fn RegisterRawInputDevices( 7179 pRawInputDevices: PCRAWINPUTDEVICE, 7180 uiNumDevices: UINT, 7181 cbSize: UINT, 7182 ) -> BOOL; 7183 pub fn GetRegisteredRawInputDevices( 7184 pRawInputDevices: PRAWINPUTDEVICE, 7185 puiNumDevices: PUINT, 7186 cbSize: UINT, 7187 ) -> UINT; 7188 } 7189 STRUCT!{struct RAWINPUTDEVICELIST { 7190 hDevice: HANDLE, 7191 dwType: DWORD, 7192 }} 7193 pub type PRAWINPUTDEVICELIST = *mut RAWINPUTDEVICELIST; 7194 extern "system" { 7195 pub fn GetRawInputDeviceList( 7196 pRawInputDeviceList: PRAWINPUTDEVICELIST, 7197 puiNumDevices: PUINT, 7198 cbSize: UINT, 7199 ) -> UINT; 7200 pub fn DefRawInputProc( 7201 paRawInput: *mut PRAWINPUT, 7202 nInput: INT, 7203 cbSizeHeader: UINT, 7204 ) -> LRESULT; 7205 pub fn ChangeWindowMessageFilter( 7206 message: UINT, 7207 dwFlag: DWORD, 7208 ) -> BOOL; 7209 } 7210 //15165 7211 STRUCT!{struct CHANGEFILTERSTRUCT { 7212 cbSize: DWORD, 7213 ExtStatus: DWORD, 7214 }} 7215 extern "system" { 7216 pub fn ChangeWindowMessageFilterEx( 7217 hwnd: HWND, 7218 message: UINT, 7219 action: DWORD, 7220 pChangeFilterStruct: PCHANGEFILTERSTRUCT, 7221 ) -> BOOL; 7222 } 7223 pub type PCHANGEFILTERSTRUCT = *mut CHANGEFILTERSTRUCT; 7224 //15427 7225 pub const NID_INTEGRATED_TOUCH: UINT = 0x00000001; 7226 pub const NID_EXTERNAL_TOUCH: UINT = 0x00000002; 7227 pub const NID_INTEGRATED_PEN: UINT = 0x00000004; 7228 pub const NID_EXTERNAL_PEN: UINT = 0x00000008; 7229 pub const NID_MULTI_INPUT: UINT = 0x00000040; 7230 pub const NID_READY: UINT = 0x00000080; 7231 pub const MAX_STR_BLOCKREASON: usize = 256; 7232 extern "system" { 7233 pub fn ShutdownBlockReasonCreate( 7234 hWnd: HWND, 7235 pwszReason: LPCWSTR, 7236 ) -> BOOL; 7237 pub fn ShutdownBlockReasonQuery( 7238 hWnd: HWND, 7239 pwszBuff: LPWSTR, 7240 pcchBuff: *mut DWORD, 7241 ) -> BOOL; 7242 pub fn ShutdownBlockReasonDestroy( 7243 hWnd: HWND, 7244 ) -> BOOL; 7245 } 7246 //15615 7247 extern "system" { 7248 pub fn IsImmersiveProcess( 7249 hProcess: HANDLE, 7250 ) -> BOOL; 7251 } 7252