1 jls.loader.provide('jls.win32.Window'); 2 3 jls.loader.requireLibrary('jls_win32'); 4 5 jls.loader.require('jls.gui.Event'); 6 jls.loader.require('jls.win32.Font'); 7 jls.loader.require('jls.win32.Pen'); 8 jls.loader.require('jls.win32.Brush'); 9 jls.loader.require('jls.win32.Image'); 10 11 jls.win32.Window = jls.lang.Class.create( 12 { 13 /* 14 * If the window has the WS_CAPTION style of dwStyle set, the specified name (if non-empty) appears in the window's title bar. 15 * If the window being created is a control (such as button, static control or edit control), lpszWindowName is used to specify the text of the control. 16 */ 17 // TODO Make arguments as a parameter object, keep classname? 18 initialize : function(classname, name, style, x, y, w, h, parent, menuOrId, exStyle, param) { 19 jls.win32.Window.initializeThreadWindow(); 20 // TODO Keep top level windows and destroy thread window when there is no more top level window 21 // TODO Add children to parent to avoid garbage collection 22 if (typeof style == 'undefined') { 23 style = parent ? jls.win32.Window.WS_CHILD | jls.win32.Window.WS_VISIBLE : jls.win32.Window.WS_OVERLAPPEDWINDOW; 24 } 25 this._no = jls.win32.Window._createWindow(classname, name, style, x, y, w, h, (parent ? parent._no : undefined), menuOrId, exStyle, param); 26 if (this._no == null) { 27 throw new jls.lang.Exception('Fail to create window'); 28 } 29 this._dc = null; 30 this._eventsHandlers = {}; 31 }, 32 isWindowVisible : function() { 33 return this._no.isWindowVisible(); 34 }, 35 show : function(mode) { 36 return this._no.show(mode); 37 }, 38 update : function() { 39 this._no.update(); 40 return this; 41 }, 42 validate : function() { 43 this._no.validateRect(); 44 return this; 45 }, 46 close : function(mode) { 47 this.sendMessage(jls.win32.Window.WM_CLOSE, 0, 0); 48 }, 49 handle : function() { 50 return this._no.handle(); 51 }, 52 getText : function() { 53 return this._no.getText(); 54 /*var length = this._no.sendMessage(jls.win32.Window.WM_GETTEXTLENGTH, 0, 0); 55 if (length <= 0) { 56 return ''; 57 } 58 var buffer = jls.lang.ByteBuffer.allocate(length + 1); 59 var len = this._no.sendMessage(jls.win32.Window.WM_GETTEXT, buffer.capacity(), buffer.byteArray()); 60 if (len <= 0) { 61 return ''; 62 } 63 buffer.clear(); 64 buffer.setLimit(len); 65 return buffer.getString();*/ 66 }, 67 setText : function(text) { 68 //this.sendMessage(jls.win32.Window.WM_SETTEXT , 0, text, true); 69 return this._no.setText(text); 70 }, 71 setIcon : function(icon, size) { 72 if (! ((icon instanceof jls.win32.Image) && (icon.getType() == jls.win32.Image.IMAGE_ICON))) { 73 throw new jls.lang.Exception(); 74 } 75 return this.sendMessage(jls.win32.Window.WM_SETICON, size || jls.win32.Window.ICON_SMALL, icon); 76 }, 77 setPosition : function(x, y, w, h, uiFlags, insertAfter) { 78 return this._no.setPosition(x, y, w, h, uiFlags, insertAfter); 79 }, 80 rect : function(client) { 81 return this._no.rect(client); 82 }, 83 setMenu : function(menu) { 84 if (! (menu instanceof jls.win32.Menu)) { 85 throw new jls.lang.Exception('Invalid menu argument'); 86 } 87 return this._no.setMenu(menu._no); 88 }, 89 /* 90 * TODO Add capture 91 * HWND WINAPI SetCapture(HWND hWnd); 92 * BOOL WINAPI ReleaseCapture(void); 93 * BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); 94 * WM_CAPTURECHANGED 95 */ 96 setCapture : function() { 97 this._no.setCapture(); 98 }, 99 trackMouseEvent : function(flags, hoverTime) { 100 flags = flags || jls.win32.Window.TME_LEAVE; 101 return this._no.trackMouseEvent(flags, hoverTime); 102 }, 103 getDeviceContext : function() { 104 if (this._dc == null) { 105 this._dc = new jls.win32.DeviceContext(this); 106 } 107 return this._dc; 108 }, 109 postMessage : function(uMsg, wParam, lParam, unicode, sct) { 110 if (jls.win32.Window._hasWin32NativeObject(wParam)) { 111 wParam = wParam._no; 112 } 113 if (jls.win32.Window._hasWin32NativeObject(lParam)) { 114 lParam = lParam._no; 115 } 116 return this._no.postMessage(uMsg, wParam, lParam, unicode, sct); 117 }, 118 sendMessage : function(uMsg, wParam, lParam, unicode, sct) { 119 if (jls.win32.Window._hasWin32NativeObject(wParam)) { 120 wParam = wParam._no; 121 } 122 if (jls.win32.Window._hasWin32NativeObject(lParam)) { 123 lParam = lParam._no; 124 } 125 return this._no.sendMessage(uMsg, wParam, lParam, unicode, sct); 126 }, 127 setWindowFunction : function(fn) { 128 this._no.setWindowFunction(fn || null); 129 return this; 130 } 131 }); 132 133 Object.extend(jls.win32.Window, 134 { 135 _threadWindow : null, 136 _thread : null, 137 _createWindow : function(classname, name, style, x, y, w, h, parent, menu, exStyle, param) { 138 return jls.win32.Window._threadWindow.sendMessage(jls.win32.Window.WM_CREATE_WINDOW, null, { 139 classname: classname, 140 name: name, 141 style: style, 142 x: x, 143 y: y, 144 w: w, 145 h: h, 146 parent: parent,// || jls.win32.Window._threadWindow, 147 menu: menu, 148 exStyle: exStyle, 149 param: param 150 }); 151 }, 152 _hasWin32NativeObject : function(obj) { 153 return (obj instanceof jls.win32.Font) || (obj instanceof jls.win32.Brush) || (obj instanceof jls.win32.Pen) || (obj instanceof jls.win32.Image); 154 }, 155 invokeAndWait : function(fn) { 156 jls.win32.Window.initializeThreadWindow(); 157 return jls.win32.Window._threadWindow.sendMessage(jls.win32.Window.WM_INVOKE, null, { 158 fn: fn 159 }); 160 }, 161 invokeLater : function(fn) { 162 jls.win32.Window.initializeThreadWindow(); 163 jls.win32.Window._threadWindow.postMessage(jls.win32.Window.WM_INVOKE, null, { 164 fn: fn 165 }); 166 }, 167 releaseCapture : function() { 168 _native.win32.Window.releaseCapture(); 169 }, 170 // TODO Move this function elsewhere 171 shellExecute : function(file, showCmd, directory, operation, parameters) { 172 _native.win32.shellExecute(file/*, showCmd, directory, operation, parameters*/); 173 }, 174 splitWord : function(value) { 175 return [(value >> 16) & 65535, value & 65535]; 176 }, 177 hiWord : function(value) { 178 return (value >> 16) & 65535; 179 }, 180 loWord : function(value) { 181 return value & 65535; 182 }, 183 makeWord : function(hi, lo) { 184 return ((hi & 65535) << 16) + (lo & 65535); 185 }, 186 getMessageName : function(message, from, prefix) { 187 from = from || jls.win32.Window; 188 prefix = prefix || 'WM_'; 189 for (var key in from) { 190 if (key.startsWith(prefix) && (from[key] == message)) { 191 return key; 192 } 193 } 194 return '0x' + message.toString(16); 195 }, 196 initializeThreadWindow : function() { 197 if (jls.win32.Window._threadWindow != null) { 198 return; 199 } 200 _native.win32.registerClass('JLSThreadWindowsClass'); 201 jls.win32.Window.WM_CREATE_WINDOW = jls.win32.Window.WM_JS_OBJECT; 202 jls.win32.Window.WM_INVOKE = jls.win32.Window.WM_JS_OBJECT + 1; 203 var mon = new jls.lang.Monitor(); 204 jls.win32.Window._thread = new jls.lang.Thread(); 205 jls.win32.Window._thread.run = function() { 206 jls.logger.trace('Create window thread'); 207 jls.win32.Window._threadWindow = new _native.win32.Window('JLSThreadWindowsClass', ''); 208 209 jls.win32.Window._threadWindow.setWindowFunction(function(iMsg, wParam, lParam) { 210 if (iMsg == jls.win32.Window.WM_DESTROY) { 211 jls.logger.debug('Destroying window'); 212 _native.win32.postQuitMessage(); 213 jls.logger.debug('...destroyed'); 214 return false; 215 } 216 if (iMsg == jls.win32.Window.WM_CREATE_WINDOW) { 217 if (typeof lParam == 'object') { 218 jls.logger.debug('create window...'); 219 var w = new _native.win32.Window(lParam.classname, lParam.name, lParam.style, 220 lParam.x, lParam.y, lParam.w, lParam.h, lParam.parent, lParam.menu, lParam.exStyle, lParam.param); 221 jls.logger.debug('...created'); 222 return w; 223 } else { 224 jls.logger.debug('invalid lParam type ' + (typeof lParam)); 225 } 226 } 227 if (iMsg == jls.win32.Window.WM_INVOKE) { 228 if ((typeof lParam == 'object') && ('fn' in lParam)) { 229 jls.logger.debug('Invoke'); 230 return lParam.fn(); 231 } else { 232 jls.logger.debug('invalid lParam type ' + (typeof lParam)); 233 } 234 } 235 }); 236 mon.notify(); 237 238 jls.logger.debug('Start polling win32 messages'); 239 _native.win32.pollMessage(); 240 jls.logger.debug('End polling win32 messages'); 241 } 242 jls.logger.debug('Start win32 messages polling thread'); 243 jls.win32.Window._thread.start(); 244 jls.logger.trace('Wait for polling to start...'); 245 mon.wait(); 246 jls.logger.debug('Window initialized'); 247 }, 248 destroyThreadWindow : function() { 249 if (jls.win32.Window._threadWindow == null) { 250 return; 251 } 252 jls.win32.Window._threadWindow.sendMessage(jls.win32.Window.WM_DESTROY); 253 jls.win32.Window._threadWindow = null; 254 }, 255 loadLibrary : function(name) { 256 return _native.win32.loadLibrary(name); 257 }, 258 registerClass : function(name, style, syscolor, icon) { 259 _native.win32.registerClass( 260 name, false, 261 style ? style : jls.win32.Window.CS_HREDRAW | jls.win32.Window.CS_VREDRAW, 262 syscolor ? syscolor : jls.win32.Window.COLOR_BTNFACE, 263 icon ? icon._no : undefined); 264 }, 265 266 CS_BYTEALIGNCLIENT: 0x1000, 267 CS_BYTEALIGNWINDOW: 0x2000, 268 CS_CLASSDC: 0x0040, 269 CS_DBLCLKS: 0x0008, 270 CS_DROPSHADOW: 0x00020000, 271 CS_GLOBALCLASS: 0x4000, 272 CS_HREDRAW: 0x0002, 273 CS_NOCLOSE: 0x0200, 274 CS_OWNDC: 0x0020, 275 CS_PARENTDC: 0x0080, 276 CS_SAVEBITS: 0x0800, 277 CS_VREDRAW: 0x0001, 278 279 /*COLOR_3DDKSHADOW: 21, 280 COLOR_3DFACE: 15, 281 COLOR_3DHIGHLIGHT: 20, 282 COLOR_3DHILIGHT: 20, 283 COLOR_3DLIGHT: 22, 284 COLOR_3DSHADOW: 16, 285 COLOR_ACTIVEBORDER: 10, 286 COLOR_ACTIVECAPTION: 2, 287 COLOR_APPWORKSPACE: 12, 288 COLOR_BACKGROUND: 1,*/ 289 COLOR_BTNFACE: 15, 290 /*COLOR_BTNHIGHLIGHT: 20, 291 COLOR_BTNHILIGHT: 20, 292 COLOR_BTNSHADOW: 16, 293 COLOR_BTNTEXT: 18, 294 COLOR_CAPTIONTEXT: 9, 295 COLOR_DESKTOP: 1, 296 COLOR_GRADIENTACTIVECAPTION: 27, 297 COLOR_GRADIENTINACTIVECAPTION: 28, 298 COLOR_GRAYTEXT: 17, 299 COLOR_HIGHLIGHT: 13, 300 COLOR_HIGHLIGHTTEXT: 14, 301 COLOR_HOTLIGHT: 26, 302 COLOR_INACTIVEBORDER: 11, 303 COLOR_INACTIVECAPTION: 3, 304 COLOR_INACTIVECAPTIONTEXT: 19, 305 COLOR_INFOBK: 24, 306 COLOR_INFOTEXT: 23, 307 COLOR_MENU: 4, 308 COLOR_MENUHILIGHT: 29, 309 COLOR_MENUBAR: 30, 310 COLOR_MENUTEXT: 7, 311 COLOR_SCROLLBAR: 0, 312 COLOR_WINDOW: 5, 313 COLOR_WINDOWFRAME: 6, 314 COLOR_WINDOWTEXT: 8,*/ 315 316 WS_BORDER : 0x00800000, 317 WS_CAPTION : 0x00c00000, 318 WS_CHILD : 0x40000000, 319 WS_CHILDWINDOW : 0x40000000, 320 WS_CLIPCHILDREN : 0x02000000, 321 WS_CLIPSIBLINGS : 0x04000000, 322 WS_DISABLED : 0x08000000, 323 WS_DLGFRAME : 0x00400000, 324 WS_GROUP : 0x00020000, 325 WS_HSCROLL : 0x00100000, 326 WS_MAXIMIZE : 0x01000000, 327 WS_MAXIMIZEBOX : 0x00010000, 328 WS_MINIMIZE : 0x20000000, 329 WS_MINIMIZEBOX : 0x00020000, 330 WS_OVERLAPPEDWINDOW : 0x00cf0000, 331 WS_POPUP : 0x80000000, 332 WS_POPUPWINDOW : 0x80880000, 333 WS_SYSMENU : 0x00080000, 334 WS_TABSTOP : 0x00010000, 335 WS_THICKFRAME : 0x00040000, 336 WS_VISIBLE : 0x10000000, 337 WS_VSCROLL : 0x00200000, 338 339 WS_EX_ACCEPTFILES : 0x00000010, 340 WS_EX_APPWINDOW : 0x00040000, 341 WS_EX_CLIENTEDGE : 0x00000200, 342 WS_EX_COMPOSITED : 0x02000000, 343 WS_EX_CONTEXTHELP : 0x00000400, 344 WS_EX_CONTROLPARENT : 0x00010000, 345 WS_EX_DLGMODALFRAME : 0x00000001, 346 WS_EX_LAYERED : 0x00080000, 347 WS_EX_LAYOUTRTL : 0x00400000, 348 WS_EX_LEFT : 0x00000000, 349 WS_EX_LEFTSCROLLBAR : 0x00004000, 350 WS_EX_LTRREADING : 0x00000000, 351 WS_EX_MDICHILD : 0x00000040, 352 WS_EX_NOACTIVATE : 0x08000000, 353 WS_EX_NOINHERITLAYOUT : 0x00100000, 354 WS_EX_NOPARENTNOTIFY : 0x00000004, 355 WS_EX_OVERLAPPEDWINDOW : 0x00000300, 356 WS_EX_PALETTEWINDOW : 0x00000188, 357 WS_EX_RIGHT : 0x00001000, 358 WS_EX_RIGHTSCROLLBAR : 0x00000000, 359 WS_EX_RTLREADING : 0x00002000, 360 WS_EX_STATICEDGE : 0x00020000, 361 WS_EX_TOOLWINDOW : 0x00000080, 362 WS_EX_TOPMOST : 0x00000008, 363 WS_EX_TRANSPARENT : 0x00000020, 364 WS_EX_WINDOWEDGE : 0x00000100, 365 /* 366 WM_CREATE : 0x00000001, 367 WM_CLOSE : 0x00000010, 368 WM_QUIT : 0x00000012, 369 WM_DESTROY : 0x00000002, 370 WM_COMMAND : 0x00000111, 371 WM_SYSCOMMAND : 0x00000112, 372 WM_MOUSEMOVE : 0x00000200, 373 WM_LBUTTONUP : 0x00000202, 374 WM_LBUTTONDOWN : 0x00000201, 375 WM_LBUTTONDBLCLK : 0x00000203, 376 WM_RBUTTONUP : 0x00000205, 377 WM_RBUTTONDOWN : 0x00000204, 378 WM_RBUTTONDBLCLK : 0x00000206, 379 WM_MBUTTONUP : 0x00000208, 380 WM_MBUTTONDOWN : 0x00000207, 381 WM_MBUTTONDBLCLK : 0x00000209, 382 WM_MOVE : 0x00000003, 383 WM_SIZE : 0x00000005, 384 WM_CHAR : 0x00000102, 385 WM_KEYUP : 0x00000101, 386 WM_KEYDOWN : 0x00000100, 387 WM_DROPFILES : 0x00000233, 388 WM_QUERYENDSESSION : 0x00000011, 389 WM_SETCURSOR : 0x00000020, 390 WM_SETFOCUS : 0x00000007, 391 WM_TIMER : 0x00000113, 392 WM_USER : 0x00000400, 393 WM_APP : 0x00008000, 394 WM_PAINT : 0x0000000f, 395 */ 396 WM_APP : 0x00008000, 397 WM_ACTIVATE : 0x00000006, 398 WM_ACTIVATEAPP : 0x0000001c, 399 WM_AFXFIRST : 0x00000360, 400 WM_AFXLAST : 0x0000037f, 401 WM_ASKCBFORMATNAME : 0x0000030c, 402 WM_CANCELJOURNAL : 0x0000004b, 403 WM_CANCELMODE : 0x0000001f, 404 WM_CAPTURECHANGED : 0x00000215, 405 WM_CHANGECBCHAIN : 0x0000030d, 406 WM_CHAR : 0x00000102, 407 WM_CHARTOITEM : 0x0000002f, 408 WM_CHILDACTIVATE : 0x00000022, 409 WM_CLEAR : 0x00000303, 410 WM_CLOSE : 0x00000010, 411 WM_COMMAND : 0x00000111, 412 WM_COMMNOTIFY : 0x00000044, 413 WM_COMPACTING : 0x00000041, 414 WM_COMPAREITEM : 0x00000039, 415 WM_CONTEXTMENU : 0x0000007b, 416 WM_COPY : 0x00000301, 417 WM_COPYDATA : 0x0000004a, 418 WM_CREATE : 0x00000001, 419 WM_CTLCOLORBTN : 0x00000135, 420 WM_CTLCOLORDLG : 0x00000136, 421 WM_CTLCOLOREDIT : 0x00000133, 422 WM_CTLCOLORLISTBOX : 0x00000134, 423 WM_CTLCOLORMSGBOX : 0x00000132, 424 WM_CTLCOLORSCROLLBAR : 0x00000137, 425 WM_CTLCOLORSTATIC : 0x00000138, // A static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the static control. 426 WM_CUT : 0x00000300, 427 WM_DEADCHAR : 0x00000103, 428 WM_DELETEITEM : 0x0000002d, 429 WM_DESTROY : 0x00000002, 430 WM_DESTROYCLIPBOARD : 0x00000307, 431 WM_DEVICECHANGE : 0x00000219, 432 WM_DEVMODECHANGE : 0x0000001b, 433 WM_DISPLAYCHANGE : 0x0000007e, 434 WM_DRAWCLIPBOARD : 0x00000308, 435 WM_DRAWITEM : 0x0000002b, 436 WM_DROPFILES : 0x00000233, 437 WM_ENABLE : 0x0000000a, 438 WM_ENDSESSION : 0x00000016, 439 WM_ENTERIDLE : 0x00000121, 440 WM_ENTERMENULOOP : 0x00000211, 441 WM_ENTERSIZEMOVE : 0x00000231, 442 WM_ERASEBKGND : 0x00000014, 443 WM_EXITMENULOOP : 0x00000212, 444 WM_EXITSIZEMOVE : 0x00000232, 445 WM_FONTCHANGE : 0x0000001d, 446 WM_GETDLGCODE : 0x00000087, 447 WM_GETFONT : 0x00000031, 448 WM_GETHOTKEY : 0x00000033, 449 WM_GETICON : 0x0000007f, 450 WM_GETMINMAXINFO : 0x00000024, 451 WM_GETTEXT : 0x0000000d, 452 WM_GETTEXTLENGTH : 0x0000000e, 453 WM_HANDHELDFIRST : 0x00000358, 454 WM_HANDHELDLAST : 0x0000035f, 455 WM_HELP : 0x00000053, 456 WM_HOTKEY : 0x00000312, 457 WM_HSCROLL : 0x00000114, 458 WM_HSCROLLCLIPBOARD : 0x0000030e, 459 WM_ICONERASEBKGND : 0x00000027, 460 WM_INITDIALOG : 0x00000110, 461 WM_INITMENU : 0x00000116, 462 WM_INITMENUPOPUP : 0x00000117, 463 WM_INPUTLANGCHANGE : 0x00000051, 464 WM_INPUTLANGCHANGEREQUEST: 0x00000050, 465 WM_KEYDOWN : 0x00000100, 466 WM_KEYUP : 0x00000101, 467 WM_KILLFOCUS : 0x00000008, 468 WM_MDIACTIVATE : 0x00000222, 469 WM_MDICASCADE : 0x00000227, 470 WM_MDICREATE : 0x00000220, 471 WM_MDIDESTROY : 0x00000221, 472 WM_MDIGETACTIVE : 0x00000229, 473 WM_MDIICONARRANGE : 0x00000228, 474 WM_MDIMAXIMIZE : 0x00000225, 475 WM_MDINEXT : 0x00000224, 476 WM_MDIREFRESHMENU : 0x00000234, 477 WM_MDIRESTORE : 0x00000223, 478 WM_MDISETMENU : 0x00000230, 479 WM_MDITILE : 0x00000226, 480 WM_MEASUREITEM : 0x0000002c, 481 WM_MENUCHAR : 0x00000120, 482 WM_MENUSELECT : 0x0000011f, 483 WM_NEXTMENU : 0x00000213, 484 WM_MOVE : 0x00000003, 485 WM_MOVING : 0x00000216, 486 WM_NCACTIVATE : 0x00000086, 487 WM_NCCALCSIZE : 0x00000083, 488 WM_NCCREATE : 0x00000081, 489 WM_NCDESTROY : 0x00000082, 490 WM_NCHITTEST : 0x00000084, 491 WM_NCLBUTTONDBLCLK : 0x000000a3, 492 WM_NCLBUTTONDOWN : 0x000000a1, 493 WM_NCLBUTTONUP : 0x000000a2, 494 WM_NCMBUTTONDBLCLK : 0x000000a9, 495 WM_NCMBUTTONDOWN : 0x000000a7, 496 WM_NCMBUTTONUP : 0x000000a8, 497 WM_NCMOUSEMOVE : 0x000000a0, 498 WM_NCPAINT : 0x00000085, 499 WM_NCRBUTTONDBLCLK : 0x000000a6, 500 WM_NCRBUTTONDOWN : 0x000000a4, 501 WM_NCRBUTTONUP : 0x000000a5, 502 WM_NEXTDLGCTL : 0x00000028, 503 WM_NEXTMENU : 0x00000213, 504 WM_NOTIFY : 0x0000004e, 505 WM_NOTIFYFORMAT : 0x00000055, 506 WM_NULL : 0x00000000, 507 WM_PAINT : 0x0000000f, 508 WM_PAINTCLIPBOARD : 0x00000309, 509 WM_PAINTICON : 0x00000026, 510 WM_PALETTECHANGED : 0x00000311, 511 WM_PALETTEISCHANGING : 0x00000310, 512 WM_PARENTNOTIFY : 0x00000210, 513 WM_PASTE : 0x00000302, 514 WM_PENWINFIRST : 0x00000380, 515 WM_PENWINLAST : 0x0000038f, 516 WM_POWER : 0x00000048, 517 WM_POWERBROADCAST : 0x00000218, 518 WM_PRINT : 0x00000317, 519 WM_PRINTCLIENT : 0x00000318, 520 WM_QUERYDRAGICON : 0x00000037, 521 WM_QUERYENDSESSION : 0x00000011, 522 WM_QUERYNEWPALETTE : 0x0000030f, 523 WM_QUERYOPEN : 0x00000013, 524 WM_QUEUESYNC : 0x00000023, 525 WM_QUIT : 0x00000012, 526 WM_RENDERALLFORMATS : 0x00000306, 527 WM_RENDERFORMAT : 0x00000305, 528 WM_SETCURSOR : 0x00000020, 529 WM_SETFOCUS : 0x00000007, 530 WM_SETFONT : 0x00000030, 531 WM_SETHOTKEY : 0x00000032, 532 WM_SETICON : 0x00000080, 533 WM_SETREDRAW : 0x0000000b, 534 WM_SETTEXT : 0x0000000c, 535 WM_SETTINGCHANGE : 0x0000001a, 536 WM_SHOWWINDOW : 0x00000018, 537 WM_SIZE : 0x00000005, 538 WM_SIZECLIPBOARD : 0x0000030b, 539 WM_SIZING : 0x00000214, 540 WM_SPOOLERSTATUS : 0x0000002a, 541 WM_STYLECHANGED : 0x0000007d, 542 WM_STYLECHANGING : 0x0000007c, 543 WM_SYSCHAR : 0x00000106, 544 WM_SYSCOLORCHANGE : 0x00000015, 545 WM_SYSCOMMAND : 0x00000112, 546 WM_SYSDEADCHAR : 0x00000107, 547 WM_SYSKEYDOWN : 0x00000104, 548 WM_SYSKEYUP : 0x00000105, 549 WM_TCARD : 0x00000052, 550 WM_THEMECHANGED : 0x0000031a, 551 WM_TIMECHANGE : 0x0000001e, 552 WM_TIMER : 0x00000113, 553 WM_UNDO : 0x00000304, 554 WM_USER : 0x00000400, 555 WM_USERCHANGED : 0x00000054, 556 WM_VKEYTOITEM : 0x0000002e, 557 WM_VSCROLL : 0x00000115, 558 WM_VSCROLLCLIPBOARD : 0x0000030a, 559 WM_WINDOWPOSCHANGED : 0x00000047, 560 WM_WINDOWPOSCHANGING : 0x00000046, 561 WM_WININICHANGE : 0x0000001a, 562 WM_KEYFIRST : 0x00000100, 563 WM_KEYLAST : 0x00000108, 564 WM_SYNCPAINT : 0x00000088, 565 WM_MOUSEACTIVATE : 0x00000021, 566 WM_MOUSEMOVE : 0x00000200, 567 WM_LBUTTONDOWN : 0x00000201, 568 WM_LBUTTONUP : 0x00000202, 569 WM_LBUTTONDBLCLK : 0x00000203, 570 WM_RBUTTONDOWN : 0x00000204, 571 WM_RBUTTONUP : 0x00000205, 572 WM_RBUTTONDBLCLK : 0x00000206, 573 WM_MBUTTONDOWN : 0x00000207, 574 WM_MBUTTONUP : 0x00000208, 575 WM_MBUTTONDBLCLK : 0x00000209, 576 WM_MOUSEWHEEL : 0x0000020a, 577 WM_MOUSEFIRST : 0x00000200, 578 WM_MOUSELAST : 0x0000020a, 579 WM_MOUSELAST : 0x0000020a, 580 WM_MOUSEHOVER : 0x000002a1, 581 WM_MOUSELEAVE : 0x000002a3, 582 583 TME_CANCEL : 0x80000000, 584 TME_HOVER : 0x00000001, 585 TME_LEAVE : 0x00000002, 586 TME_NONCLIENT : 0x00000010, 587 TME_QUERY : 0x40000000, 588 589 ICON_BIG : 1, 590 ICON_SMALL : 0, 591 592 MK_CONTROL : 0x0008, 593 MK_LBUTTON : 0x0001, 594 MK_MBUTTON : 0x0010, 595 MK_RBUTTON : 0x0002, 596 MK_SHIFT : 0x0004, 597 MK_XBUTTON1 : 0x0020, 598 MK_XBUTTON2 : 0x0040, 599 600 CW_USEDEFAULT : 0x80000000 601 }); 602 603 Object.inheritConstants(jls.win32.Window, _native.win32.Window); 604 605 /* 606 WC_BUTTON : 'Button', 607 WC_STATIC : 'Static', 608 WC_EDIT : 'Edit', 609 WC_LISTBOX : 'ListBox', 610 WC_COMBOBOX : 'ComboBox', 611 WC_SCROLLBAR : 'ScrollBar', 612 WC_COMBOBOXEX : 'ComboBoxEx32', 613 WC_HEADER : 'SysHeader32', 614 WC_IPADDRESS : 'SysIPAddress32', 615 WC_LISTVIEW : 'SysListView32', 616 WC_TABCONTROL : 'SysTabControl32', 617 WC_TREEVIEW : 'SysTreeView32', 618 WC_PAGESCROLLER : 'SysPager', 619 WC_NATIVEFONTCTL : 'NativeFontCtl', 620 RICHEDIT_CLASS : 'RichEdit20A', 621 PROGRESS_CLASS : 'msctls_progress32', 622 TRACKBAR_CLASS : 'msctls_trackbar32', 623 TOOLTIPS_CLASS : 'tooltips_class32', 624 */