1 jls.loader.provide('jls.win32.TabControl'); 2 3 jls.loader.require('jls.win32.Window'); 4 jls.loader.require('jls.lang.Struct'); 5 jls.loader.require('jls.lang.ByteBuffer'); 6 jls.loader.require('jls.lang.CharBuffer'); 7 8 jls.win32.TabControl = jls.lang.Class.create(jls.win32.Window, 9 { 10 initialize : function($super, title, style, x, y, w, h, parent, id, exStyle, param) { 11 $super(jls.win32.TabControl.CLASSNAME, title, style, x, y, w, h, parent, id, exStyle, param); 12 this._item = new jls.lang.Struct([ 13 {name: 'mask', type: 'UnsignedInt'}, 14 {name: 'dwState', type: 'SignedInt'}, 15 {name: 'dwStateMask', type: 'SignedInt'}, 16 {name: 'pszText', type: 'Pointer'}, 17 {name: 'cchTextMax', type: 'SignedInt'}, 18 {name: 'iImage', type: 'SignedInt'}, 19 {name: 'lParam', type: 'SignedInt'} 20 ]); 21 //this._textBuffer = jls.lang.ByteBuffer.allocate(256); 22 this._textBuffer = jls.lang.CharBuffer.allocate(256); 23 }, 24 getSelectedIndex : function() { 25 return this.sendMessage(jls.win32.TabControl.TCM_GETCURSEL, 0, 0); 26 }, 27 setSelectedIndex : function(index) { 28 this.sendMessage(jls.win32.TabControl.TCM_SETCURSEL, index, 0); 29 }, 30 insertItem : function(label, index) { 31 //jls.logger.warn('TabControl.insertItem("' + label + '")'); 32 this._textBuffer.clear(); 33 this._textBuffer.putString(label || ''); 34 //this._textBuffer.putByte(0); 35 this._textBuffer.putChar(0); 36 //this._item.put('mask', jls.win32.TabControl.TCIF_TEXT | jls.win32.TabControl.TCIF_IMAGE); 37 this._item.put('mask', jls.win32.TabControl.TCIF_TEXT); 38 //this._item.put('dwState', 0); 39 //this._item.put('dwStateMask', 0); 40 //jls.logger.warn('TabControl.insertItem() item: 0x' + this._item.buffer().byteArray().pointer().toString(16) + ', label: 0x' + this._textBuffer.byteArray().pointer().toString(16)); 41 this._item.put('pszText', this._textBuffer.byteArray().pointer()); 42 //this._item.put('cchTextMax', 0); 43 this._item.put('iImage', -1); 44 this._item.put('lParam', 0); 45 //return this.sendMessage(jls.win32.TabControl.TCM_INSERTITEMA, index || 0, this._item.buffer().byteArray()); 46 return this.sendMessage(jls.win32.TabControl.TCM_INSERTITEMW, index || 0, this._item.buffer().byteArray()); 47 } 48 }); 49 /* 50 typedef struct { 51 UINT mask; 52 #if (_WIN32_IE >= 0x0300) 53 DWORD dwState; 54 DWORD dwStateMask; 55 #else 56 UINT lpReserved1; 57 UINT lpReserved2; 58 #endif 59 LPTSTR pszText; 60 int cchTextMax; 61 int iImage; 62 LPARAM lParam; 63 } TCITEM, *LPTCITEM; 64 */ 65 Object.extend(jls.win32.TabControl, 66 { 67 TCS_FORCEICONLEFT : 0x00000010, 68 TCS_FORCELABELLEFT : 0x00000020, 69 TCS_TABS : 0x00000000, 70 TCS_BUTTONS : 0x00000100, 71 TCS_SINGLELINE : 0x00000000, 72 TCS_MULTILINE : 0x00000200, 73 TCS_RIGHTJUSTIFY : 0x00000000, 74 TCS_FIXEDWIDTH : 0x00000400, 75 TCS_RAGGEDRIGHT : 0x00000800, 76 TCS_FOCUSONBUTTONDOWN : 0x00001000, 77 TCS_OWNERDRAWFIXED : 0x00002000, 78 TCS_TOOLTIPS : 0x00004000, 79 TCS_FOCUSNEVER : 0x00008000, 80 81 TCIF_TEXT : 0x00000001, 82 TCIF_IMAGE : 0x00000002, 83 TCIF_RTLREADING : 0x00000004, 84 TCIF_PARAM : 0x00000008, 85 TCIS_BUTTONPRESSED : 0x00000001, 86 87 TCM_FIRST : 0x00001300, 88 TCM_GETIMAGELIST : 0x00001302, 89 TCM_SETIMAGELIST : 0x00001303, 90 TCM_GETITEMCOUNT : 0x00001304, 91 TCM_GETITEMA : 0x00001305, 92 TCM_GETITEMW : 0x0000133c, 93 TCM_SETITEMA : 0x00001306, 94 TCM_SETITEMW : 0x0000133d, 95 TCM_INSERTITEMA : 0x00001307, 96 TCM_INSERTITEMW : 0x0000133e, 97 TCM_DELETEITEM : 0x00001308, 98 TCM_DELETEALLITEMS : 0x00001309, 99 TCM_GETITEMRECT : 0x0000130a, 100 TCM_GETCURSEL : 0x0000130b, 101 TCM_SETCURSEL : 0x0000130c, 102 TCM_HITTEST : 0x0000130d, 103 TCM_SETITEMEXTRA : 0x0000130e, 104 TCM_ADJUSTRECT : 0x00001328, 105 TCM_SETITEMSIZE : 0x00001329, 106 TCM_REMOVEIMAGE : 0x0000132a, 107 TCM_SETPADDING : 0x0000132b, 108 TCM_GETROWCOUNT : 0x0000132c, 109 TCM_GETTOOLTIPS : 0x0000132d, 110 TCM_SETTOOLTIPS : 0x0000132e, 111 TCM_GETCURFOCUS : 0x0000132f, 112 TCM_SETCURFOCUS : 0x00001330, 113 TCM_SETMINTABWIDTH : 0x00001331, 114 TCM_DESELECTALL : 0x00001332, 115 TCN_KEYDOWN : 0xfffffdda, 116 TCN_SELCHANGE : 0xfffffdd9, 117 TCN_SELCHANGING : 0xfffffdd8, 118 119 CLASSNAME: 'SysTabControl32' 120 }); 121