struct POINT X dd ? Y dd ? ends struct RECT Left dd ? Top dd ? Right dd ? Bottom dd ? ends struct TBOX width dw ? x dw ? height dw ? y dw ? sel.x db ? pos.x db ? ofs.x db ? length db ? text rb 255 ends struct SCROLLBAR Top dd ? Size dd ? ends struct EDITOR FilePath db PATHL dup(?) FileName dd ? Bounds RECT Lines dd ? Lines.Size dd ? Lines.Count dd ? Columns.Count dd ? Caret POINT SelStart POINT TopLeft POINT VScroll SCROLLBAR HScroll SCROLLBAR Gutter.Width dd ? Gutter.Visible db ? AsmMode db ? Modified db ? db ? ends struct EDITOR_LINE_DATA Size dd ? Flags dw ? ends EDITOR_LINE_FLAG_MOFIFIED = 0x0001 EDITOR_LINE_FLAG_SAVED = 0x0002 struct TABITEM Editor EDITOR ends struct TABCTL Bounds RECT Items dd ? Items.Count dd ? Items.Left dd ? Current TABITEM Current.Ptr dd ? Default.Ptr dd ? Buttons.First dd ? Buttons.Last dd ? Style db ? db 3 dup(?) ends virtual at -20 POPUP: .actions dd ? .data dd ? .acc_ofs dd ? .size: .height dw ? .width dw ? .pos: .y dw ? .x dw ? end virtual macro popup_res _name,[_lang,_title,_accel,_action] { common local s1,s2,m1,m2,c1,c2 m1 = 0 m2 = 0 c1 = 0 c2 = 0 if used _name dd _name#.actions dd _name#.data dd ? dw ? ; height dw ? ; width dw ? ; y dw ? ; x _name: forward if (lang eq _lang) | (_lang eq @!) db 1 end if common .data: forward if (lang eq _lang) | (_lang eq @!) if _title eq '-' db 1,'-' c2 = c2+2 else virtual at 0 db _title s1 = $ end virtual if m1 < s1 m1 = s1 end if virtual at 0 db _accel s2 = $ end virtual if m2 < s2 m2 = s2 end if db s1,_title,s2,_accel c1 = c1+1 end if end if common db 0 align 4 .actions: forward if (lang eq _lang) | (_lang eq @!) if (_action eq ) dd 0 else dd _name#.#_action end if end if common .size = $-_name+20 .max_title = m1 .max_accel = m2 .cnt_item = c1 .cnt_sep = c2 if (m2 = 0) m2 = -2 end if store word (m1*6+m2*6+6*8) at _name+POPUP.width store word (c1*POP_IHEIGHT+c2*POP_SHEIGHT+4) at _name+POPUP.height store dword (((m1+2)*6-1)*65536) at _name+POPUP.acc_ofs end if } macro menubar_res _name,[_lang,_title,_popup,_onshow] { common local s,m,c,x m = 0 c = 0 x = 2 if used _name _name: forward if lang eq _lang virtual at 0 db _title s = $ end virtual if m < s m = s end if dw (s+2)*6,x,ATOPH-1,0 db s,_title c = c+1 x = x + (s+2)*6 end if common db 0 align 4 .popups: forward if lang eq _lang dd _popup end if common align 4 .onshow: forward if lang eq _lang dd _onshow end if common .size = $-_name .max_title = m .cnt_item = c .width = x-7 end if } ;// MOUSE EVENTS MEV_LDOWN = 1 MEV_LUP = 2 MEV_RDOWN = 3 MEV_RUP = 4 MEV_WHEEL = 5 MEV_MOVE = 6 ;// KEY MODIFIERS KM_SHIFT = 0x00010000 KM_CTRL = 0x00020000 KM_ALT = 0x00040000 KM_CTRLSHIFT = 0x00030000 KM_ALTSHIFT = 0x00050000 KM_CTRLALT = 0x00060000 KM_CTRLALTSHIFT = 0x00070000 ;// KEY CODES KEY_ESCAPE = 0x00000001 KEY_SNAPSHOT = 0x00000137 KEY_PAUSE = 0x0000021D KEY_F1 = 0x0000003B KEY_F2 = 0x0000003C KEY_F3 = 0x0000003D KEY_F4 = 0x0000003E KEY_F5 = 0x0000003F KEY_F6 = 0x00000040 KEY_F7 = 0x00000041 KEY_F8 = 0x00000042 KEY_F9 = 0x00000043 KEY_F10 = 0x00000044 KEY_F11 = 0x00000057 KEY_F12 = 0x00000058 KEY_TILDE = 0x00000029 KEY_MINUS = 0x0000000C KEY_EQUAL = 0x0000000D KEY_BACKSPACE = 0x0000000E KEY_TAB = 0x0000000F KEY_SQBRACE1 = 0x0000001A KEY_SQBRACE2 = 0x0000001B KEY_SLASH1 = 0x00000035 KEY_SLASH2 = 0x0000002B KEY_SEMICOLON = 0x00000027 KEY_QUOTE = 0x00000028 KEY_COMMA = 0x00000033 KEY_DOT = 0x00000034 KEY_SPACE = 0x00000039 KEY_1 = 0x00000002 KEY_2 = 0x00000003 KEY_3 = 0x00000004 KEY_4 = 0x00000005 KEY_5 = 0x00000006 KEY_6 = 0x00000007 KEY_7 = 0x00000008 KEY_8 = 0x00000009 KEY_9 = 0x0000000A KEY_0 = 0x0000000B KEY_A = 0x0000001E KEY_B = 0x00000030 KEY_C = 0x0000002E KEY_D = 0x00000020 KEY_E = 0x00000012 KEY_F = 0x00000021 KEY_G = 0x00000022 KEY_H = 0x00000023 KEY_I = 0x00000017 KEY_J = 0x00000024 KEY_K = 0x00000025 KEY_L = 0x00000026 KEY_M = 0x00000032 KEY_N = 0x00000031 KEY_O = 0x00000018 KEY_P = 0x00000019 KEY_Q = 0x00000010 KEY_R = 0x00000013 KEY_S = 0x0000001F KEY_T = 0x00000014 KEY_U = 0x00000016 KEY_V = 0x0000002F KEY_W = 0x00000011 KEY_X = 0x0000002D KEY_Y = 0x00000015 KEY_Z = 0x0000002C KEY_CAPSLK = 0x0000003A KEY_SCRLK = 0x00000046 KEY_NUMLK = 0x00000069 KEY_RETURN = 0x0000001C KEY_NUMRETURN = 0x0000011C KEY_LCONTROL = 0x0000001D KEY_RCONTROL = 0x0000011D KEY_LSHIFT = 0x0000002A KEY_RSHIFT = 0x00000036 KEY_LALT = 0x00000038 KEY_RALT = 0x00000138 KEY_LWIN = 0x0000015B KEY_RWIN = 0x0000015C KEY_APPS = 0x0000015D KEY_INSERT = 0x00000152 KEY_DELETE = 0x00000153 KEY_HOME = 0x00000147 KEY_END = 0x0000014F KEY_PAGEUP = 0x00000149 KEY_PAGEDOWN = 0x00000151 KEY_UP = 0x00000148 KEY_LEFT = 0x0000014B KEY_RIGHT = 0x0000014D KEY_DOWN = 0x00000150 KEY_DIVIDE = 0x00000135 KEY_MULTIPLY = 0x00000037 KEY_SUBTRACT = 0x0000004A KEY_ADD = 0x0000004E KEY_SEPARATOR = 0x00000053 KEY_NUM1 = 0x0000004F KEY_NUM2 = 0x00000050 KEY_NUM3 = 0x00000051 KEY_NUM4 = 0x0000004B KEY_NUM5 = 0x0000004C KEY_NUM6 = 0x0000004D KEY_NUM7 = 0x00000047 KEY_NUM8 = 0x00000048 KEY_NUM9 = 0x00000049 KEY_NUM0 = 0x00000052 ;// EXTENDED KEY CODES (MULTIMEDIA KEYBOARDS) KEY_MYDOCUMENTS = 0x0000014C KEY_MYPICTURES = 0x00000164 KEY_MYMUSIC = 0x0000013C KEY_MUTE = 0x00000120 KEY_PLAYPAUSE = 0x00000122 KEY_STOP = 0x00000124 KEY_VOLUMEUP = 0x00000130 KEY_VOLUMEDOWN = 0x0000013E KEY_PREVSONG = 0x00000110 KEY_NEXTSONG = 0x00000119 KEY_MEDIA = 0x0000016D KEY_MAIL = 0x0000016C KEY_WEBHOME = 0x00000132 KEY_MESSENGER = 0x00000105 KEY_CALCULATOR = 0x00000121 KEY_LOGOFF = 0x00000116 KEY_SLEEP = 0x0000015F