1 // Permission is hereby granted, free of charge, to any person obtaining 2 // a copy of this software and associated documentation files (the 3 // "Software"), to deal in the Software without restriction, including 4 // without limitation the rights to use, copy, modify, merge, publish, 5 // distribute, sublicense, and/or sell copies of the Software, and to 6 // permit persons to whom the Software is furnished to do so, subject to 7 // the following conditions: 8 // 9 // The above copyright notice and this permission notice shall be 10 // included in all copies or substantial portions of the Software. 11 // 12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 // 20 // Copyright (c) 2004-2006 Novell, Inc. 21 // 22 // Authors: 23 // Peter Bartok pbartok@novell.com 24 // 25 // *** When you make some changes to this file, dont forget to update Tests/TestHelper class *** 26 27 // NOT COMPLETE 28 29 using System; 30 using System.Drawing; 31 using System.Runtime.InteropServices; 32 33 #if PUBLIC_TYPES 34 namespace Mono.Winforms 35 #else 36 namespace System.Windows.Forms 37 #endif 38 { 39 [Flags] 40 #if PUBLIC_TYPES 41 public 42 #else 43 internal 44 #endif 45 enum WindowStyles : int { 46 WS_OVERLAPPED = 0x00000000, 47 WS_POPUP = unchecked((int)0x80000000), 48 WS_CHILD = 0x40000000, 49 WS_MINIMIZE = 0x20000000, 50 WS_VISIBLE = 0x10000000, 51 WS_DISABLED = 0x08000000, 52 WS_CLIPSIBLINGS = 0x04000000, 53 WS_CLIPCHILDREN = 0x02000000, 54 WS_MAXIMIZE = 0x01000000, 55 WS_CAPTION = 0x00C00000, // == WS_BORDER | WS_DLGFRAME 56 WS_BORDER = 0x00800000, 57 WS_DLGFRAME = 0x00400000, 58 WS_VSCROLL = 0x00200000, 59 WS_HSCROLL = 0x00100000, 60 WS_SYSMENU = 0x00080000, 61 WS_THICKFRAME = 0x00040000, 62 WS_GROUP = 0x00020000, 63 WS_TABSTOP = 0x00010000, 64 WS_MINIMIZEBOX = 0x00020000, 65 WS_MAXIMIZEBOX = 0x00010000, 66 WS_TILED = 0x00000000, 67 WS_ICONIC = 0x20000000, 68 WS_SIZEBOX = 0x00040000, 69 WS_POPUPWINDOW = unchecked((int)0x80880000), 70 WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, 71 WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, 72 WS_CHILDWINDOW = WS_CHILD, 73 } 74 75 [Flags] 76 #if PUBLIC_TYPES 77 public 78 #else 79 internal 80 #endif 81 enum WindowExStyles : int { 82 // Extended Styles 83 WS_EX_DLGMODALFRAME = 0x00000001, 84 WS_EX_DRAGDETECT = 0x00000002, 85 WS_EX_NOPARENTNOTIFY = 0x00000004, 86 WS_EX_TOPMOST = 0x00000008, 87 WS_EX_ACCEPTFILES = 0x00000010, 88 WS_EX_TRANSPARENT = 0x00000020, 89 90 WS_EX_MDICHILD = 0x00000040, 91 WS_EX_TOOLWINDOW = 0x00000080, 92 WS_EX_WINDOWEDGE = 0x00000100, 93 WS_EX_CLIENTEDGE = 0x00000200, 94 WS_EX_CONTEXTHELP = 0x00000400, 95 96 WS_EX_RIGHT = 0x00001000, 97 WS_EX_LEFT = 0x00000000, 98 WS_EX_RTLREADING = 0x00002000, 99 WS_EX_LTRREADING = 0x00000000, 100 WS_EX_LEFTSCROLLBAR = 0x00004000, 101 WS_EX_LAYERED = 0x00080000, 102 WS_EX_RIGHTSCROLLBAR = 0x00000000, 103 104 WS_EX_CONTROLPARENT = 0x00010000, 105 WS_EX_STATICEDGE = 0x00020000, 106 WS_EX_APPWINDOW = 0x00040000, 107 WS_EX_NOINHERITLAYOUT = 0x00100000, 108 WS_EX_LAYOUTRTL = 0x00400000, 109 WS_EX_COMPOSITED = 0x02000000, 110 WS_EX_NOACTIVATE = 0x08000000, 111 112 WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE, 113 WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST 114 } 115 116 [Flags] 117 #if PUBLIC_TYPES 118 public 119 #else 120 internal 121 #endif 122 enum ToolBarStyles : int { 123 TBSTYLE_TOOLTIPS = 0x100, 124 TBSTYLE_FLAT = 0x800, 125 TBSTYLE_LIST = 0x1000, 126 TBSTYLE_TRANSPARENT = 0x8000 127 } 128 129 #if PUBLIC_TYPES 130 public 131 #else 132 internal 133 #endif 134 enum Msg { 135 WM_NULL = 0x0000, 136 WM_CREATE = 0x0001, 137 WM_DESTROY = 0x0002, 138 WM_MOVE = 0x0003, 139 WM_SIZE = 0x0005, 140 WM_ACTIVATE = 0x0006, 141 WM_SETFOCUS = 0x0007, 142 WM_KILLFOCUS = 0x0008, 143 // public const uint WM_SETVISIBLE = 0x0009; 144 WM_ENABLE = 0x000A, 145 WM_SETREDRAW = 0x000B, 146 WM_SETTEXT = 0x000C, 147 WM_GETTEXT = 0x000D, 148 WM_GETTEXTLENGTH = 0x000E, 149 WM_PAINT = 0x000F, 150 WM_CLOSE = 0x0010, 151 WM_QUERYENDSESSION = 0x0011, 152 WM_QUIT = 0x0012, 153 WM_QUERYOPEN = 0x0013, 154 WM_ERASEBKGND = 0x0014, 155 WM_SYSCOLORCHANGE = 0x0015, 156 WM_ENDSESSION = 0x0016, 157 // public const uint WM_SYSTEMERROR = 0x0017; 158 WM_SHOWWINDOW = 0x0018, 159 WM_CTLCOLOR = 0x0019, 160 WM_WININICHANGE = 0x001A, 161 WM_SETTINGCHANGE = 0x001A, 162 WM_DEVMODECHANGE = 0x001B, 163 WM_ACTIVATEAPP = 0x001C, 164 WM_FONTCHANGE = 0x001D, 165 WM_TIMECHANGE = 0x001E, 166 WM_CANCELMODE = 0x001F, 167 WM_SETCURSOR = 0x0020, 168 WM_MOUSEACTIVATE = 0x0021, 169 WM_CHILDACTIVATE = 0x0022, 170 WM_QUEUESYNC = 0x0023, 171 WM_GETMINMAXINFO = 0x0024, 172 WM_PAINTICON = 0x0026, 173 WM_ICONERASEBKGND = 0x0027, 174 WM_NEXTDLGCTL = 0x0028, 175 // public const uint WM_ALTTABACTIVE = 0x0029; 176 WM_SPOOLERSTATUS = 0x002A, 177 WM_DRAWITEM = 0x002B, 178 WM_MEASUREITEM = 0x002C, 179 WM_DELETEITEM = 0x002D, 180 WM_VKEYTOITEM = 0x002E, 181 WM_CHARTOITEM = 0x002F, 182 WM_SETFONT = 0x0030, 183 WM_GETFONT = 0x0031, 184 WM_SETHOTKEY = 0x0032, 185 WM_GETHOTKEY = 0x0033, 186 // public const uint WM_FILESYSCHANGE = 0x0034; 187 // public const uint WM_ISACTIVEICON = 0x0035; 188 // public const uint WM_QUERYPARKICON = 0x0036; 189 WM_QUERYDRAGICON = 0x0037, 190 WM_COMPAREITEM = 0x0039, 191 // public const uint WM_TESTING = 0x003a; 192 // public const uint WM_OTHERWINDOWCREATED = 0x003c; 193 WM_GETOBJECT = 0x003D, 194 // public const uint WM_ACTIVATESHELLWINDOW = 0x003e; 195 WM_COMPACTING = 0x0041, 196 WM_COMMNOTIFY = 0x0044 , 197 WM_WINDOWPOSCHANGING = 0x0046, 198 WM_WINDOWPOSCHANGED = 0x0047, 199 WM_POWER = 0x0048, 200 WM_COPYDATA = 0x004A, 201 WM_CANCELJOURNAL = 0x004B, 202 WM_NOTIFY = 0x004E, 203 WM_INPUTLANGCHANGEREQUEST = 0x0050, 204 WM_INPUTLANGCHANGE = 0x0051, 205 WM_TCARD = 0x0052, 206 WM_HELP = 0x0053, 207 WM_USERCHANGED = 0x0054, 208 WM_NOTIFYFORMAT = 0x0055, 209 WM_CONTEXTMENU = 0x007B, 210 WM_STYLECHANGING = 0x007C, 211 WM_STYLECHANGED = 0x007D, 212 WM_DISPLAYCHANGE = 0x007E, 213 WM_GETICON = 0x007F, 214 215 // Non-Client messages 216 WM_SETICON = 0x0080, 217 WM_NCCREATE = 0x0081, 218 WM_NCDESTROY = 0x0082, 219 WM_NCCALCSIZE = 0x0083, 220 WM_NCHITTEST = 0x0084, 221 WM_NCPAINT = 0x0085, 222 WM_NCACTIVATE = 0x0086, 223 WM_GETDLGCODE = 0x0087, 224 WM_SYNCPAINT = 0x0088, 225 // public const uint WM_SYNCTASK = 0x0089; 226 WM_NCMOUSEMOVE = 0x00A0, 227 WM_NCLBUTTONDOWN = 0x00A1, 228 WM_NCLBUTTONUP = 0x00A2, 229 WM_NCLBUTTONDBLCLK = 0x00A3, 230 WM_NCRBUTTONDOWN = 0x00A4, 231 WM_NCRBUTTONUP = 0x00A5, 232 WM_NCRBUTTONDBLCLK = 0x00A6, 233 WM_NCMBUTTONDOWN = 0x00A7, 234 WM_NCMBUTTONUP = 0x00A8, 235 WM_NCMBUTTONDBLCLK = 0x00A9, 236 // public const uint WM_NCXBUTTONDOWN = 0x00ab; 237 // public const uint WM_NCXBUTTONUP = 0x00ac; 238 // public const uint WM_NCXBUTTONDBLCLK = 0x00ad; 239 WM_KEYDOWN = 0x0100, 240 WM_KEYFIRST = 0x0100, 241 WM_KEYUP = 0x0101, 242 WM_CHAR = 0x0102, 243 WM_DEADCHAR = 0x0103, 244 WM_SYSKEYDOWN = 0x0104, 245 WM_SYSKEYUP = 0x0105, 246 WM_SYSCHAR = 0x0106, 247 WM_SYSDEADCHAR = 0x0107, 248 WM_KEYLAST = 0x0108, 249 WM_IME_STARTCOMPOSITION = 0x010D, 250 WM_IME_ENDCOMPOSITION = 0x010E, 251 WM_IME_COMPOSITION = 0x010F, 252 WM_IME_KEYLAST = 0x010F, 253 WM_INITDIALOG = 0x0110, 254 WM_COMMAND = 0x0111, 255 WM_SYSCOMMAND = 0x0112, 256 WM_TIMER = 0x0113, 257 WM_HSCROLL = 0x0114, 258 WM_VSCROLL = 0x0115, 259 WM_INITMENU = 0x0116, 260 WM_INITMENUPOPUP = 0x0117, 261 // public const uint WM_SYSTIMER = 0x0118; 262 WM_MENUSELECT = 0x011F, 263 WM_MENUCHAR = 0x0120, 264 WM_ENTERIDLE = 0x0121, 265 WM_MENURBUTTONUP = 0x0122, 266 WM_MENUDRAG = 0x0123, 267 WM_MENUGETOBJECT = 0x0124, 268 WM_UNINITMENUPOPUP = 0x0125, 269 WM_MENUCOMMAND = 0x0126, 270 271 WM_CHANGEUISTATE = 0x0127, 272 WM_UPDATEUISTATE = 0x0128, 273 WM_QUERYUISTATE = 0x0129, 274 275 // public const uint WM_LBTRACKPOINT = 0x0131; 276 WM_CTLCOLORMSGBOX = 0x0132, 277 WM_CTLCOLOREDIT = 0x0133, 278 WM_CTLCOLORLISTBOX = 0x0134, 279 WM_CTLCOLORBTN = 0x0135, 280 WM_CTLCOLORDLG = 0x0136, 281 WM_CTLCOLORSCROLLBAR = 0x0137, 282 WM_CTLCOLORSTATIC = 0x0138, 283 WM_MOUSEMOVE = 0x0200, 284 WM_MOUSEFIRST = 0x0200, 285 WM_LBUTTONDOWN = 0x0201, 286 WM_LBUTTONUP = 0x0202, 287 WM_LBUTTONDBLCLK = 0x0203, 288 WM_RBUTTONDOWN = 0x0204, 289 WM_RBUTTONUP = 0x0205, 290 WM_RBUTTONDBLCLK = 0x0206, 291 WM_MBUTTONDOWN = 0x0207, 292 WM_MBUTTONUP = 0x0208, 293 WM_MBUTTONDBLCLK = 0x0209, 294 WM_MOUSEWHEEL = 0x020A, 295 WM_MOUSELAST = 0x020D, 296 // public const uint WM_XBUTTONDOWN = 0x020B; 297 // public const uint WM_XBUTTONUP = 0x020C; 298 // public const uint WM_XBUTTONDBLCLK = 0x020D; 299 WM_PARENTNOTIFY = 0x0210, 300 WM_ENTERMENULOOP = 0x0211, 301 WM_EXITMENULOOP = 0x0212, 302 WM_NEXTMENU = 0x0213, 303 WM_SIZING = 0x0214, 304 WM_CAPTURECHANGED = 0x0215, 305 WM_MOVING = 0x0216, 306 // public const uint WM_POWERBROADCAST = 0x0218; 307 WM_DEVICECHANGE = 0x0219, 308 WM_MDICREATE = 0x0220, 309 WM_MDIDESTROY = 0x0221, 310 WM_MDIACTIVATE = 0x0222, 311 WM_MDIRESTORE = 0x0223, 312 WM_MDINEXT = 0x0224, 313 WM_MDIMAXIMIZE = 0x0225, 314 WM_MDITILE = 0x0226, 315 WM_MDICASCADE = 0x0227, 316 WM_MDIICONARRANGE = 0x0228, 317 WM_MDIGETACTIVE = 0x0229, 318 /* D&D messages */ 319 // public const uint WM_DROPOBJECT = 0x022A; 320 // public const uint WM_QUERYDROPOBJECT = 0x022B; 321 // public const uint WM_BEGINDRAG = 0x022C; 322 // public const uint WM_DRAGLOOP = 0x022D; 323 // public const uint WM_DRAGSELECT = 0x022E; 324 // public const uint WM_DRAGMOVE = 0x022F; 325 WM_MDISETMENU = 0x0230, 326 WM_ENTERSIZEMOVE = 0x0231, 327 WM_EXITSIZEMOVE = 0x0232, 328 WM_DROPFILES = 0x0233, 329 WM_MDIREFRESHMENU = 0x0234, 330 WM_IME_SETCONTEXT = 0x0281, 331 WM_IME_NOTIFY = 0x0282, 332 WM_IME_CONTROL = 0x0283, 333 WM_IME_COMPOSITIONFULL = 0x0284, 334 WM_IME_SELECT = 0x0285, 335 WM_IME_CHAR = 0x0286, 336 WM_IME_REQUEST = 0x0288, 337 WM_IME_KEYDOWN = 0x0290, 338 WM_IME_KEYUP = 0x0291, 339 WM_NCMOUSEHOVER = 0x02A0, 340 WM_MOUSEHOVER = 0x02A1, 341 WM_NCMOUSELEAVE = 0x02A2, 342 WM_MOUSELEAVE = 0x02A3, 343 WM_CUT = 0x0300, 344 WM_COPY = 0x0301, 345 WM_PASTE = 0x0302, 346 WM_CLEAR = 0x0303, 347 WM_UNDO = 0x0304, 348 WM_RENDERFORMAT = 0x0305, 349 WM_RENDERALLFORMATS = 0x0306, 350 WM_DESTROYCLIPBOARD = 0x0307, 351 WM_DRAWCLIPBOARD = 0x0308, 352 WM_PAINTCLIPBOARD = 0x0309, 353 WM_VSCROLLCLIPBOARD = 0x030A, 354 WM_SIZECLIPBOARD = 0x030B, 355 WM_ASKCBFORMATNAME = 0x030C, 356 WM_CHANGECBCHAIN = 0x030D, 357 WM_HSCROLLCLIPBOARD = 0x030E, 358 WM_QUERYNEWPALETTE = 0x030F, 359 WM_PALETTEISCHANGING = 0x0310, 360 WM_PALETTECHANGED = 0x0311, 361 WM_HOTKEY = 0x0312, 362 WM_PRINT = 0x0317, 363 WM_PRINTCLIENT = 0x0318, 364 WM_HANDHELDFIRST = 0x0358, 365 WM_HANDHELDLAST = 0x035F, 366 WM_AFXFIRST = 0x0360, 367 WM_AFXLAST = 0x037F, 368 WM_PENWINFIRST = 0x0380, 369 WM_PENWINLAST = 0x038F, 370 WM_APP = 0x8000, 371 WM_USER = 0x0400, 372 373 // Our "private" ones 374 WM_MOUSE_ENTER = 0x0401, 375 WM_ASYNC_MESSAGE = 0x0403, 376 WM_REFLECT = WM_USER + 0x1c00, 377 WM_CLOSE_INTERNAL = WM_USER + 0x1c01, 378 379 // private messages to support on-the-spot IME editing. 380 WM_XIM_PREEDITSTART = WM_USER + 0x1d00, 381 WM_XIM_PREEDITDONE = WM_USER + 0x1d01, 382 WM_XIM_PREEDITDRAW = WM_USER + 0x1d02, 383 WM_XIM_PREEDITCARET = WM_USER + 0x1d03, 384 385 // NotifyIcon (Systray) Balloon messages 386 NIN_BALLOONSHOW = WM_USER + 0x0002, 387 NIN_BALLOONHIDE = WM_USER + 0x0003, 388 NIN_BALLOONTIMEOUT = WM_USER + 0x0004, 389 NIN_BALLOONUSERCLICK = WM_USER + 0x0005 390 } 391 392 #if PUBLIC_TYPES 393 public 394 #else 395 internal 396 #endif 397 enum MsgButtons { 398 MK_LBUTTON = 0x0001, 399 MK_RBUTTON = 0x0002, 400 MK_SHIFT = 0x0004, 401 MK_CONTROL = 0x0008, 402 MK_MBUTTON = 0x0010, 403 MK_XBUTTON1 = 0x0020, 404 MK_XBUTTON2 = 0x0040, 405 } 406 407 #if PUBLIC_TYPES 408 public 409 #else 410 internal 411 #endif 412 enum MsgUIState { 413 UIS_SET = 1, 414 UIS_CLEAR = 2, 415 UIS_INITIALIZE = 3, 416 UISF_HIDEFOCUS = 0x1, 417 UISF_HIDEACCEL = 0x2, 418 UISF_ACTIVE = 0x4 419 } 420 421 [StructLayout(LayoutKind.Sequential)] 422 #if PUBLIC_TYPES 423 public 424 #else 425 internal 426 #endif 427 struct POINT { 428 public int x; 429 public int y; 430 POINTMono.Winforms.POINT431 public POINT (int x, int y) 432 { 433 this.x = x; 434 this.y = y; 435 } 436 ToPointMono.Winforms.POINT437 public Point ToPoint () 438 { 439 return new Point (x, y); 440 } 441 ToStringMono.Winforms.POINT442 public override string ToString () 443 { 444 return "Point {" + x.ToString () + ", " + y.ToString () + "}"; 445 } 446 } 447 448 [StructLayout(LayoutKind.Sequential)] 449 #if PUBLIC_TYPES 450 public 451 #else 452 internal 453 #endif 454 struct MSG { 455 internal IntPtr hwnd; 456 internal Msg message; 457 internal IntPtr wParam; 458 internal IntPtr lParam; 459 internal uint time; 460 internal POINT pt; 461 internal object refobject; 462 ToStringMono.Winforms.MSG463 public override string ToString () 464 { 465 return String.Format ("msg=0x{0:x} ({1}) hwnd=0x{2:x} wparam=0x{3:x} lparam=0x{4:x} pt={5}", (int) message, message.ToString (), hwnd.ToInt32 (), wParam.ToInt32 (), lParam.ToInt32 (), pt); 466 } 467 } 468 469 [Flags] 470 #if PUBLIC_TYPES 471 public 472 #else 473 internal 474 #endif 475 enum TransparencySupport { 476 None = 0x00, 477 Get = 0x01, 478 Set = 0x02, 479 GetSet = 0x03 480 } 481 482 #if PUBLIC_TYPES 483 public 484 #else 485 internal 486 #endif 487 enum WindowActiveFlags { 488 WA_INACTIVE = 0, 489 WA_ACTIVE = 1, 490 WA_CLICKACTIVE = 2 491 } 492 493 #if PUBLIC_TYPES 494 public 495 #else 496 internal 497 #endif 498 enum KeybdEventFlags { 499 None = 0, 500 ExtendedKey = 0x0001, 501 KeyUp = 0x0002 502 } 503 504 #if PUBLIC_TYPES 505 public 506 #else 507 internal 508 #endif 509 enum VirtualKeys { 510 VK_LBUTTON = 0x01, 511 VK_RBUTTON = 0x02, 512 VK_CANCEL = 0x03, 513 VK_MBUTTON = 0x04, 514 VK_XBUTTON1 = 0x05, 515 VK_XBUTTON2 = 0x06, 516 VK_BACK = 0x08, 517 VK_TAB = 0x09, 518 VK_CLEAR = 0x0C, 519 VK_RETURN = 0x0D, 520 VK_SHIFT = 0x10, 521 VK_CONTROL = 0x11, 522 VK_MENU = 0x12, 523 VK_PAUSE = 0x13, 524 VK_CAPITAL = 0x14, 525 VK_ESCAPE = 0x1B, 526 VK_CONVERT = 0x1C, 527 VK_NONCONVERT = 0x1D, 528 VK_SPACE = 0x20, 529 VK_PRIOR = 0x21, 530 VK_NEXT = 0x22, 531 VK_END = 0x23, 532 VK_HOME = 0x24, 533 VK_LEFT = 0x25, 534 VK_UP = 0x26, 535 VK_RIGHT = 0x27, 536 VK_DOWN = 0x28, 537 VK_SELECT = 0x29, 538 VK_PRINT = 0x2A, 539 VK_EXECUTE = 0x2B, 540 VK_SNAPSHOT = 0x2C, 541 VK_INSERT = 0x2D, 542 VK_DELETE = 0x2E, 543 VK_HELP = 0x2F, 544 VK_0 = 0x30, 545 VK_1 = 0x31, 546 VK_2 = 0x32, 547 VK_3 = 0x33, 548 VK_4 = 0x34, 549 VK_5 = 0x35, 550 VK_6 = 0x36, 551 VK_7 = 0x37, 552 VK_8 = 0x38, 553 VK_9 = 0x39, 554 VK_A = 0x41, 555 VK_B = 0x42, 556 VK_C = 0x43, 557 VK_D = 0x44, 558 VK_E = 0x45, 559 VK_F = 0x46, 560 VK_G = 0x47, 561 VK_H = 0x48, 562 VK_I = 0x49, 563 VK_J = 0x4A, 564 VK_K = 0x4B, 565 VK_L = 0x4C, 566 VK_M = 0x4D, 567 VK_N = 0x4E, 568 VK_O = 0x4F, 569 VK_P = 0x50, 570 VK_Q = 0x51, 571 VK_R = 0x52, 572 VK_S = 0x53, 573 VK_T = 0x54, 574 VK_U = 0x55, 575 VK_V = 0x56, 576 VK_W = 0x57, 577 VK_X = 0x58, 578 VK_Y = 0x59, 579 VK_Z = 0x5A, 580 VK_LWIN = 0x5B, 581 VK_RWIN = 0x5C, 582 VK_APPS = 0x5D, 583 VK_NUMPAD0 = 0x60, 584 VK_NUMPAD1 = 0x61, 585 VK_NUMPAD2 = 0x62, 586 VK_NUMPAD3 = 0x63, 587 VK_NUMPAD4 = 0x64, 588 VK_NUMPAD5 = 0x65, 589 VK_NUMPAD6 = 0x66, 590 VK_NUMPAD7 = 0x67, 591 VK_NUMPAD8 = 0x68, 592 VK_NUMPAD9 = 0x69, 593 VK_MULTIPLY = 0x6A, 594 VK_ADD = 0x6B, 595 VK_SEPARATOR = 0x6C, 596 VK_SUBTRACT = 0x6D, 597 VK_DECIMAL = 0x6E, 598 VK_DIVIDE = 0x6F, 599 VK_F1 = 0x70, 600 VK_F2 = 0x71, 601 VK_F3 = 0x72, 602 VK_F4 = 0x73, 603 VK_F5 = 0x74, 604 VK_F6 = 0x75, 605 VK_F7 = 0x76, 606 VK_F8 = 0x77, 607 VK_F9 = 0x78, 608 VK_F10 = 0x79, 609 VK_F11 = 0x7A, 610 VK_F12 = 0x7B, 611 VK_F13 = 0x7C, 612 VK_F14 = 0x7D, 613 VK_F15 = 0x7E, 614 VK_F16 = 0x7F, 615 VK_F17 = 0x80, 616 VK_F18 = 0x81, 617 VK_F19 = 0x82, 618 VK_F20 = 0x83, 619 VK_F21 = 0x84, 620 VK_F22 = 0x85, 621 VK_F23 = 0x86, 622 VK_F24 = 0x87, 623 VK_NUMLOCK = 0x90, 624 VK_SCROLL = 0x91, 625 VK_LSHIFT = 0xA0, 626 VK_RSHIFT = 0xA1, 627 VK_LCONTROL = 0xA2, 628 VK_RCONTROL = 0xA3, 629 VK_LMENU = 0xA4, 630 VK_RMENU = 0xA5, 631 VK_OEM_1 = 0xBA, 632 VK_OEM_PLUS = 0xBB, 633 VK_OEM_COMMA = 0xBC, 634 VK_OEM_MINUS = 0xBD, 635 VK_OEM_PERIOD = 0xBE, 636 VK_OEM_2 = 0xBF, 637 VK_OEM_3 = 0xC0, 638 VK_OEM_4 = 0xDB, 639 VK_OEM_5 = 0xDC, 640 VK_OEM_6 = 0xDD, 641 VK_OEM_7 = 0xDE, 642 VK_OEM_8 = 0xDF, 643 VK_OEM_AX = 0xE1, 644 VK_OEM_102 = 0xE2, 645 VK_ICO_HELP = 0xE3, 646 VK_ICO_00 = 0xE4, 647 VK_PROCESSKEY = 0xE5, 648 VK_OEM_ATTN = 0xF0, 649 VK_OEM_COPY = 0xF2, 650 VK_OEM_AUTO = 0xF3, 651 VK_OEM_ENLW = 0xF4, 652 VK_OEM_BACKTAB = 0xF5, 653 VK_ATTN = 0xF6, 654 VK_CRSEL = 0xF7, 655 VK_EXSEL = 0xF8, 656 VK_EREOF = 0xF9, 657 VK_PLAY = 0xFA, 658 VK_ZOOM = 0xFB, 659 VK_NONAME = 0xFC, 660 VK_PA1 = 0xFD, 661 VK_OEM_CLEAR = 0xFE, 662 } 663 664 #if PUBLIC_TYPES 665 public 666 #else 667 internal 668 #endif 669 enum TtyKeys { 670 XK_BackSpace = 0xff08, /* Back space, back char */ 671 XK_Tab = 0xff09, 672 XK_Linefeed = 0xff0a, /* Linefeed, LF */ 673 XK_Clear = 0xff0b, 674 XK_Return = 0xff0d, /* Return, enter */ 675 XK_Pause = 0xff13, /* Pause, hold */ 676 XK_Scroll_Lock = 0xff14, 677 XK_Sys_Req = 0xff15, 678 XK_Escape = 0xff1b, 679 XK_Delete = 0xffff /* Delete, rubout */ 680 } 681 682 #if PUBLIC_TYPES 683 public 684 #else 685 internal 686 #endif 687 enum MiscKeys { 688 XK_ISO_Lock = 0xfe01, 689 XK_ISO_Last_Group_Lock = 0xfe0f, 690 XK_Select = 0xff60, 691 XK_Print = 0xff61, 692 XK_Execute = 0xff62, 693 XK_Insert = 0xff63, 694 XK_Undo = 0xff65, 695 XK_Redo = 0xff66, 696 XK_Menu = 0xff67, 697 XK_Find = 0xff68, 698 XK_Cancel = 0xff69, 699 XK_Help = 0xff6a, 700 XK_Break = 0xff6b, 701 XK_Mode_switch = 0xff7e, 702 XK_script_switch = 0xff7e, 703 XK_Num_Lock = 0xff7f 704 } 705 706 #if PUBLIC_TYPES 707 public 708 #else 709 internal 710 #endif 711 enum KeypadKeys { 712 XK_KP_Space = 0xff80, 713 XK_KP_Tab = 0xff89, 714 XK_KP_Enter = 0xff8d, /* Enter */ 715 XK_KP_F1 = 0xff91, /* PF1, KP_A, ... */ 716 XK_KP_F2 = 0xff92, 717 XK_KP_F3 = 0xff93, 718 XK_KP_F4 = 0xff94, 719 XK_KP_Home = 0xff95, 720 XK_KP_Left = 0xff96, 721 XK_KP_Up = 0xff97, 722 XK_KP_Right = 0xff98, 723 XK_KP_Down = 0xff99, 724 XK_KP_Prior = 0xff9a, 725 XK_KP_Page_Up = 0xff9a, 726 XK_KP_Next = 0xff9b, 727 XK_KP_Page_Down = 0xff9b, 728 XK_KP_End = 0xff9c, 729 XK_KP_Begin = 0xff9d, 730 XK_KP_Insert = 0xff9e, 731 XK_KP_Delete = 0xff9f, 732 XK_KP_Equal = 0xffbd, /* Equals */ 733 XK_KP_Multiply = 0xffaa, 734 XK_KP_Add = 0xffab, 735 XK_KP_Separator = 0xffac, /* Separator, often comma */ 736 XK_KP_Subtract = 0xffad, 737 XK_KP_Decimal = 0xffae, 738 XK_KP_Divide = 0xffaf, 739 740 XK_KP_0 = 0xffb0, 741 XK_KP_1 = 0xffb1, 742 XK_KP_2 = 0xffb2, 743 XK_KP_3 = 0xffb3, 744 XK_KP_4 = 0xffb4, 745 XK_KP_5 = 0xffb5, 746 XK_KP_6 = 0xffb6, 747 XK_KP_7 = 0xffb7, 748 XK_KP_8 = 0xffb8, 749 XK_KP_9 = 0xffb9 750 } 751 752 #if PUBLIC_TYPES 753 public 754 #else 755 internal 756 #endif 757 enum DeadKeys { 758 XK_dead_grave = 0xfe50, 759 XK_dead_acute = 0xfe51, 760 XK_dead_circumflex = 0xfe52, 761 XK_dead_tilde = 0xfe53, 762 XK_dead_macron = 0xfe54, 763 XK_dead_breve = 0xfe55, 764 XK_dead_abovedot = 0xfe56, 765 XK_dead_diaeresis = 0xfe57, 766 XK_dead_abovering = 0xfe58, 767 XK_dead_doubleacute = 0xfe59, 768 XK_dead_caron = 0xfe5a, 769 XK_dead_cedilla = 0xfe5b, 770 XK_dead_ogonek = 0xfe5c, 771 XK_dead_iota = 0xfe5d, 772 XK_dead_voiced_sound = 0xfe5e, 773 XK_dead_semivoiced_sound = 0xfe5f, 774 XK_dead_belowdot = 0xfe60, 775 XK_dead_hook = 0xfe61, 776 XK_dead_horn = 0xfe62 777 778 } 779 780 [StructLayout(LayoutKind.Sequential)] 781 #if PUBLIC_TYPES 782 public 783 #else 784 internal 785 #endif 786 struct HELPINFO { 787 internal uint cbSize; 788 internal int iContextType; 789 internal int iCtrlId; 790 internal IntPtr hItemHandle; 791 internal uint dwContextId; 792 internal POINT MousePos; 793 } 794 795 #if PUBLIC_TYPES 796 public 797 #else 798 internal 799 #endif 800 enum PeekMessageFlags { 801 PM_NOREMOVE = 0x00000000, 802 PM_REMOVE = 0x00000001, 803 PM_NOYIELD = 0x00000002 804 } 805 806 #if PUBLIC_TYPES 807 public 808 #else 809 internal 810 #endif 811 enum StdCursor { 812 Default = 0, 813 AppStarting = 1, 814 Arrow = 2, 815 Cross = 3, 816 Hand = 4, 817 Help = 5, 818 HSplit = 6, 819 IBeam = 7, 820 No = 8, 821 NoMove2D = 9, 822 NoMoveHoriz = 10, 823 NoMoveVert = 11, 824 PanEast = 12, 825 PanNE = 13, 826 PanNorth = 14, 827 PanNW = 15, 828 PanSE = 16, 829 PanSouth = 17, 830 PanSW = 18, 831 PanWest = 19, 832 SizeAll = 20, 833 SizeNESW = 21, 834 SizeNS = 22, 835 SizeNWSE = 23, 836 SizeWE = 24, 837 UpArrow = 25, 838 VSplit = 26, 839 WaitCursor = 27 840 } 841 842 #if PUBLIC_TYPES 843 public 844 #else 845 internal 846 #endif 847 enum HitTest { 848 HTERROR = -2, 849 HTTRANSPARENT = -1, 850 HTNOWHERE = 0, 851 HTCLIENT = 1, 852 HTCAPTION = 2, 853 HTSYSMENU = 3, 854 HTGROWBOX = 4, 855 HTSIZE = HTGROWBOX, 856 HTMENU = 5, 857 HTHSCROLL = 6, 858 HTVSCROLL = 7, 859 HTMINBUTTON = 8, 860 HTMAXBUTTON = 9, 861 HTLEFT = 10, 862 HTRIGHT = 11, 863 HTTOP = 12, 864 HTTOPLEFT = 13, 865 HTTOPRIGHT = 14, 866 HTBOTTOM = 15, 867 HTBOTTOMLEFT = 16, 868 HTBOTTOMRIGHT = 17, 869 HTBORDER = 18, 870 HTREDUCE = HTMINBUTTON, 871 HTZOOM = HTMAXBUTTON, 872 HTSIZEFIRST = HTLEFT, 873 HTSIZELAST = HTBOTTOMRIGHT, 874 HTOBJECT = 19, 875 HTCLOSE = 20, 876 HTHELP = 21 877 } 878 879 #if PUBLIC_TYPES 880 public 881 #else 882 internal 883 #endif 884 enum TitleStyle { 885 None = 0, 886 Normal = 1, 887 Tool = 2 888 } 889 890 [StructLayout(LayoutKind.Sequential)] 891 #if PUBLIC_TYPES 892 public 893 #else 894 internal 895 #endif 896 struct BITMAPINFOHEADER { 897 internal uint biSize; 898 internal int biWidth; 899 internal int biHeight; 900 internal ushort biPlanes; 901 internal ushort biBitCount; 902 internal uint biCompression; 903 internal uint biSizeImage; 904 internal int biXPelsPerMeter; 905 internal int biYPelsPerMeter; 906 internal uint biClrUsed; 907 internal uint biClrImportant; 908 } 909 910 #if PUBLIC_TYPES 911 public 912 #else 913 internal 914 #endif 915 enum ClipboardFormats : ushort { 916 CF_TEXT = 1, 917 CF_BITMAP = 2, 918 CF_METAFILEPICT = 3, 919 CF_SYLK = 4, 920 CF_DIF = 5, 921 CF_TIFF = 6, 922 CF_OEMTEXT = 7, 923 CF_DIB = 8, 924 CF_PALETTE = 9, 925 CF_PENDATA = 10, 926 CF_RIFF = 11, 927 CF_WAVE = 12, 928 CF_UNICODETEXT = 13, 929 CF_ENHMETAFILE = 14, 930 CF_HDROP = 15, 931 CF_LOCALE = 16, 932 CF_DIBV5 = 17 933 } 934 935 [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] 936 #if PUBLIC_TYPES 937 public 938 #else 939 internal 940 #endif 941 struct MINMAXINFO { 942 internal POINT ptReserved; 943 internal POINT ptMaxSize; 944 internal POINT ptMaxPosition; 945 internal POINT ptMinTrackSize; 946 internal POINT ptMaxTrackSize; 947 } 948 949 [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] 950 #if PUBLIC_TYPES 951 public 952 #else 953 internal 954 #endif 955 struct KeyFilterData { 956 internal bool Down; 957 internal int keycode; 958 internal int keysym; 959 internal Keys ModifierKeys; 960 internal String str; 961 } 962 963 #if PUBLIC_TYPES 964 public 965 #else 966 internal 967 #endif 968 enum ScrollBarCommands { 969 SB_LINEUP = 0, 970 SB_LINELEFT = 0, 971 SB_LINEDOWN = 1, 972 SB_LINERIGHT = 1, 973 SB_PAGEUP = 2, 974 SB_PAGELEFT = 2, 975 SB_PAGEDOWN = 3, 976 SB_PAGERIGHT = 3, 977 SB_THUMBPOSITION = 4, 978 SB_THUMBTRACK = 5, 979 SB_TOP = 6, 980 SB_LEFT = 6, 981 SB_BOTTOM = 7, 982 SB_RIGHT = 7, 983 SB_ENDSCROLL = 8 984 } 985 986 #if PUBLIC_TYPES 987 public 988 #else 989 internal 990 #endif 991 enum ClipCombineMode { 992 RGN_AND = 1, 993 RGN_OR, 994 RGN_XOR, 995 RGN_DIFF, 996 RGN_COPY, 997 998 RGN_MIN = RGN_AND, 999 RGN_MAX = RGN_COPY 1000 } 1001 1002 #if PUBLIC_TYPES 1003 public 1004 #else 1005 internal 1006 #endif 1007 enum SystemCommands { 1008 SC_SIZE = 0xF000, 1009 SC_MOVE = 0xF010, 1010 SC_MINIMIZE = 0xF020, 1011 SC_MAXIMIZE = 0xF030, 1012 SC_NEXTWINDOW = 0xF040, 1013 SC_PREVWINDOW = 0xF050, 1014 SC_CLOSE = 0xF060, 1015 SC_VSCROLL = 0xF070, 1016 SC_HSCROLL = 0xF080, 1017 SC_MOUSEMENU = 0xF090, 1018 SC_KEYMENU = 0xF100, 1019 SC_ARRANGE = 0xF110, 1020 SC_RESTORE = 0xF120, 1021 SC_TASKLIST = 0xF130, 1022 SC_SCREENSAVE = 0xF140, 1023 SC_HOTKEY = 0xF150, 1024 SC_DEFAULT = 0xF160, 1025 SC_MONITORPOWER = 0xF170, 1026 SC_CONTEXTHELP = 0xF180 1027 } 1028 1029 #if PUBLIC_TYPES 1030 public 1031 #else 1032 internal 1033 #endif 1034 enum AlertType { 1035 Default = 1, 1036 Error = 2, 1037 Question = 3, 1038 Warning = 4, 1039 Information = 5 1040 } 1041 } 1042 1043