Subversion Repositories Kolibri OS

Rev

Rev 7508 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;; basic macros for EditBox ;;
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4. ed_width              equ [edi]      ; field width
  5. ed_left               equ [edi + 4]  ; left border X
  6. ed_top                equ [edi + 8]  ; top border Y
  7. ed_color              equ [edi + 12] ; field color
  8. shift_color           equ [edi + 16] ; select color
  9. ed_focus_border_color equ [edi + 20] ; border color active
  10. ed_blur_border_color  equ [edi + 24] ; border color inactive
  11. ed_text_color         equ [edi + 28] ; color and font (as in sysfunc 4)
  12. ed_max                equ [edi + 32] ; chars max
  13. ed_text               equ [edi + 36] ; buffer pointer
  14. ed_mouse_variable     equ [edi + 40] ; pointer
  15. ed_flags              equ [edi + 44]
  16. bp_flags              equ [ebp + 44]
  17. ed_size               equ [edi + 48] ; chars currently
  18. bp_size               equ [ebp + 48]
  19. ed_pos                equ [edi + 52] ; carret current position
  20. ed_offset             equ [edi + 56]
  21. cl_curs_x             equ [edi + 60] ; previous cursor X
  22. cl_curs_y             equ [edi + 62] ; previous cursor Y
  23. ed_shift_pos          equ [edi + 64] ; selection current position
  24. ed_shift_pos_old      equ [edi + 66] ; selection previous position
  25. ed_height             equ [edi + 68]
  26. ed_char_width         equ [edi + 72]
  27.  
  28. ed_struc_size = 76
  29.  
  30. ;;;;;;;;;;;;;;;;;;;;;;;
  31. ;; flags for EditBox ;;
  32. ;;;;;;;;;;;;;;;;;;;;;;;
  33. ed_pass         = 1     ; password mode
  34. ed_focus        = 2     ; active
  35. ed_shift        = 4     ; shift holded
  36. ed_shift_on     = 8     ; selection active
  37. ed_shift_bac    = 16    ; clear selection
  38. ed_left_fl      = 32
  39. ed_offset_fl    = 64
  40. ed_insert       = 128
  41. ed_mouse_on     = 256
  42. ed_ctrl_on      = 512
  43. ed_alt_on       = 400h
  44. ed_disabled     = 800h
  45. ed_always_focus = 4000h
  46. ed_figure_only  = 8000h
  47. ed_mous_adn_b   = ed_mouse_on or ed_shift_on or ed_shift_bac
  48. ed_shift_off    = not ed_shift
  49. ed_shift_mcl    = not ed_shift
  50. ed_shift_on_off = not ed_shift_on
  51. ed_shift_bac_cl = not ed_shift_bac
  52. ed_shift_cl     = not (ed_shift or ed_shift_on or ed_shift_bac)
  53. ed_right_fl     = not ed_left_fl
  54. ed_offset_cl    = not ed_offset_fl
  55. ed_insert_cl    = not ed_insert
  56. ed_mouse_on_off = not ed_mouse_on
  57. ed_ctrl_off     = not ed_ctrl_on
  58. ed_alt_off      = not ed_alt_on
  59.  
  60. struc  edit_box width,left,top,color,shift_color,focus_border_color,\
  61.        blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
  62. {
  63.   .width              dd width
  64.   .left               dd left
  65.   .top                dd top
  66.   .color              dd color
  67.   .shift_color        dd shift_color
  68.   .focus_border_color dd focus_border_color
  69.   .blur_border_color  dd blur_border_color
  70.   .text_color         dd text_color
  71.   .max                dd max
  72.   .text               dd text
  73.   .mouse_variable     dd mouse_variable
  74.   .flags              dd flags+0
  75.   .size               dd size+0
  76.   .pos                dd pos+0
  77.   .offset             dd 0
  78.   .cl_curs_x          dw 0
  79.   .cl_curs_y          dw 0
  80.   .shift              dw 0
  81.   .shift_old          dw 0
  82.   .height             dd 0
  83.   .char_width         dd 0
  84. }
  85.  
  86. macro edit_boxes_set_sys_color start,end,color_table
  87. {
  88.         mov     edi,start
  89.         mov     ecx,((end-start)/ed_struc_size)
  90.         mov     esi,color_table
  91.         mov     ebx,[esi+system_colors.work_graph]        
  92.         mov     eax,[esi+system_colors.work]
  93.         shr     eax,1
  94.         shr     ebx,1
  95.         and     eax,7F7F7Fh
  96.         and     ebx,7F7F7Fh
  97.         add     eax,ebx                
  98. @@:
  99.         mov     ed_focus_border_color,ebx        
  100.         mov     ed_blur_border_color,eax
  101.         mov     shift_color,dword 0A4C4E4h
  102.         and     ed_text_color,dword 0FF000000h
  103.         mov     ed_color,dword 0FFFFFFh
  104.         add     edi,ed_struc_size
  105.         loop    @b
  106. }
  107.  
  108.  
  109. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  110. ;Basic macros for use CheckBox                            ;
  111. ;Last change 17.01.2013                                   ;
  112. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  113. ch_text_margin equ [edi+8] ;=4 расстояние от прямоугольника чек бокса до надписи
  114. ch_color equ [edi+12]      ;цвет внутри checkbox
  115. ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
  116. ch_text_color   equ [edi+20] ;[edi+4]  ;цвет текста
  117. ch_text_ptr     equ [edi+24] ;указатель на начало текстовой строки
  118. ch_flags equ [edi+28]      ;флаги
  119.  
  120. ch_struc_size=36                ;размер структуры
  121. ch_flag_en=10b                  ;флаг установленного чек бокса.
  122. ch_flag_top=0x0                 ;флаг расположения текста вверху т.е. 3-й бит
  123. ch_flag_middle=100b             ;флаг расположения текста в центре т.е. 4-й бит.
  124. ch_flag_bottom=1000b            ;флаг расположения текста в низу т.е. по умолчанию принимается значение внизу т.е. отсуствие 3-го и 4-го бита
  125.  
  126. 2ch_left_s      equ [ebp]       ;кордината начала рисования по х
  127. 2ch_top_s       equ [ebp+4]     ;координата начала рисования по у
  128. 2ch_text_margin equ [ebp+8]     ;=4 расстояние от прямоугольника чек бокса до надписи
  129. 2ch_color       equ [ebp+12]    ;цвет внутри checkbox
  130. 2ch_border_color        equ [ebp+16]    ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
  131. 2ch_text_color  equ [ebp+20]    ;[edi+4]  ;цвет текста
  132. 2ch_text_ptr    equ [ebp+24]    ;указатель на начало текстовой строки
  133. 2ch_flags       equ [ebp+28]    ;флаги
  134. 2ch_sz_str      equ [ebp+32]    ;длинна строки, вычисляется при инициализации компонента
  135.  
  136. struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags
  137. {                               ;структура параметров для чек бокса
  138. .left_s         dd left_s       ;+0 положение по х dw + размер dw
  139. .top_s          dd top_s        ;+4 положение по у dw + размер dw
  140. .ch_text_margin dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи
  141. .color          dd color        ;цвет внутри чекбокса
  142. .border_color   dd border_color ;цвет рамки
  143. .text_color     dd text_color   ;цвет надписи
  144. .text           dd text         ;адрес в коде программы где расположен текст
  145. .flags          dd flags+0      ;флаги
  146. .size_of_str    dd 0x0          ;длинна строки, вычисляется при инициализации компонента
  147. }
  148.  
  149. ;Макрос проверки щелчка мышки над группой checkboxes.
  150. macro init_checkboxes2 start,end_cb
  151. {
  152. if start+ch_struc_size eq end_cb
  153.         ;когда один элемент
  154.         push    start                   ;указатель на checkbox
  155.         call    [init_checkbox] ;настройка checkbox'а
  156. else
  157.         ;когда несколько элементов
  158.         mov     ebp,start
  159.         mov     ecx,((end_cb-start)/ch_struc_size)
  160. @@:
  161.         push    ebp                     ;указатель на первый checkbox
  162.         call    [init_checkbox] ;настройка checkbox'ов
  163.         add     ebp,ch_struc_size
  164.         loop    @b
  165. end if
  166. }
  167.  
  168. ;Макрос проверки мышки группы checkboxes.
  169. macro checkboxes_mouse2 start,end_cb
  170. {
  171. if start+ch_struc_size eq end_cb
  172.         ;когда один элемент
  173.         push    start                   ;указатель на checkbox
  174.         call    [check_box_mouse]       ;макрос проверки мышки над checkbox'ом
  175. else
  176.         ;когда несколько элементов
  177.         mov     ebp,start
  178.         mov     ecx,((end_cb-start)/ch_struc_size)
  179. @@:
  180.         push    ebp                     ;указатель на первый checkbox
  181.         call    [check_box_mouse]       ;макрос проверки мышки над checkbox'ами
  182.         add     ebp,ch_struc_size
  183.         loop    @b
  184. end if
  185. }
  186.  
  187. ;Макрос отрисовки группы checkboxes.
  188. macro checkboxes_draw2 start,end_cb
  189. {
  190. if start+ch_struc_size eq end_cb
  191.         ;когда один элемент
  192.         push    start                   ;указатель на checkbox
  193.         call    [check_box_draw]        ;нарисовать checkbox
  194. else
  195.         ;когда несколько элементов
  196.         mov     ebp,start
  197.         mov     ecx,((end_cb-start)/ch_struc_size)
  198. @@:
  199.         push    ebp                     ;указатель на первый checkbox
  200.         call    [check_box_draw]        ;нарисовать checkbox'ы
  201.         add     ebp,ch_struc_size
  202.         loop    @b
  203. end if
  204. }
  205.  
  206. macro check_boxes_set_sys_color2 start,end,color_table
  207. {
  208.         mov     ebp,start
  209.         mov     ecx,((end-start)/ch_struc_size)
  210.         mov     esi,color_table
  211. @@:
  212.         push    dword [esi+32]          ;цвет текста в рабочей области окна
  213.         or      dword [esp],0x80000000  ;необходимо для вывода ASCIIZ строк
  214.         pop     dword 2ch_text_color
  215.         push    dword [esi+36]          ;цвет графики в окне (разделительные линии и т.п.)
  216.         pop     dword 2ch_border_color
  217.         add     ebp,ch_struc_size
  218.         loop    @b
  219. }
  220.  
  221.  
  222.  
  223. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  224. ;Basic macros for use OptionBox                           ;
  225. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  226.  
  227. struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
  228. {        ;структура параметров для чек бокса
  229. op_flag_en=10b
  230. .option_group   dd point_gr
  231. .left           dw left                 ;+0 ;положение по х
  232. .top            dw top                  ;положение по у
  233. .ch_text_margin dd op_text_margin       ;расстояние от прямоугольника чек бокса до надписи
  234. .ch_size        dd op_size              ;размер квадрата чек бокса, для примера 12
  235. .color          dd color                ;цвет внутри чекбокса
  236. .border_color   dd border_color         ;цвет рамки
  237. .text_color     dd text_color           ;цвет надписи
  238. .text           dd text                 ;адрес в коде программы где расположен текст
  239. .ch_text_length dd op_text_length       ;длинна строки с символами
  240. .flags          dd flags+0              ; флаги
  241. }
  242.  
  243. ;op_struc_size equ
  244. option_group equ [edi]
  245. op_left equ [edi+4]    ;координата начала рисования по х
  246. op_top equ [edi+6]     ;координата начала рисования по у
  247. op_text_margin equ [edi+8]      ;=4 расстояние от прямоугольника чек бокса до надписи
  248. op_size equ [edi+12]             ;12 размер квадрата чек бокса
  249. op_color equ [edi+16]
  250. op_border_color equ [edi+20] ; or [edi+4] ;цвет рамки optionbox ее можно задать самостоятельно
  251. op_text_color equ   [edi+24];[edi+4]  ;цвет текста
  252. op_text_ptr equ [edi+28]    ;указатель на начало текстовой строки
  253. op_text_length equ [edi+32]
  254. op_flags equ [edi+36]       ;флаги
  255.  
  256. macro option_boxes_set_sys_color color_table,group
  257. {
  258.         mov     ecx,group
  259.         mov     esi,color_table
  260.         mov     edi,[ecx]
  261.         mov     eax,[esi+24] ;цвет кнопки в рабочей области окна
  262.         mov     ebx,[esi+28] ;цвет текста на кнопке
  263. @@:
  264.         mov     op_border_color,eax
  265.         mov     op_color,ebx
  266.         push    dword [esi+32] ;цвет текста в рабочей области окна
  267.         pop     dword op_text_color
  268.         add     ecx,4
  269.         mov     edi,[ecx]
  270.         cmp     edi,0
  271.         jne     @b
  272. }
  273.  
  274. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  275. ;Basic macros for use TreeList                            ;
  276. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  277.  
  278. struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
  279.     col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
  280.     info_capt_len,el_focus, p_scroll,on_press {
  281. .box_left    dd box_l
  282. .box_top     dd box_t
  283. .box_width   dd box_w
  284. .box_height  dd box_h
  285. .data_info   dd 0
  286. .info_size   dw info_size
  287. .info_max_count dd info_max_count
  288. .style       dd style
  289. .data_nodes  dd 0
  290. .data_img    dd 0
  291. .img_cx      dw img_cx
  292. .img_cy      dw img_cy
  293. .data_img_sys dd 0
  294. .ch_tim      dd 0
  295. .tim_undo    dd 0
  296. .cur_pos     dd 0
  297. .col_bkg     dd col_bkg
  298. .col_zag     dd col_zag
  299. .col_txt     dd col_txt
  300. .capt_cy     dw capt_cy
  301. .info_capt_offs dw info_capt_offs
  302. .info_capt_len dw info_capt_len
  303. .el_focus    dd el_focus
  304. .p_scroll    dd p_scroll
  305. .on_press    dd on_press
  306. }
  307.  
  308. tl_box_left   equ dword[edi]
  309. tl_box_top    equ dword[edi+ 4]
  310. tl_box_width  equ dword[edi+ 8]
  311. tl_box_height equ dword[edi+12]
  312. tl_data_info  equ dword[edi+16] ;указатель на основные даные
  313. tl_info_size  equ  word[edi+20] ;размер данных выделяемых для каждого узла (пользовательськие данные + текст для подписи)
  314. tl_info_max_count equ dword[edi+22] ;максимальное количество узлов, которые можно добавить в элемент
  315. tl_style      equ dword[edi+26] ;стили элемента
  316. tl_data_nodes equ dword[edi+30] ;указатель на структуры узлов
  317. tl_data_img   equ dword[edi+34] ;указатель на изображения с иконками узлов
  318. tl_img_cx     equ  word[edi+38] ;ширина иконок
  319. tl_img_cy     equ  word[edi+40] ;высота иконок
  320. tl_data_img_sys equ dword[edi+42] ;указатель на системные изображения (стрелки, плюсики)
  321. tl_ch_tim     equ dword[edi+46] ;количество изменений в файле
  322. tl_tim_undo   equ dword[edi+50] ;количество отмененных действий
  323. tl_cur_pos    equ dword[edi+54] ;позиция курсора
  324. tl_col_bkg    equ dword[edi+58] ;цвет фона
  325. tl_col_zag    equ dword[edi+62] ;цвет заголовка
  326. tl_col_txt    equ dword[edi+66] ;цвет текста
  327. tl_capt_cy    equ  word[edi+70] ;высота подписи
  328. tl_info_capt_offs equ word[edi+72] ;сдвиг для начала текста (подписи узла)
  329. tl_info_capt_len equ word[edi+74] ;длинна текста подписи узла (если = 0 то до конца структуры)
  330. tl_el_focus   equ dword[edi+76] ;указатель на структуру элемента в фокусе
  331. tl_p_scroll   equ dword[edi+80] ;указатель на структуру скроллинга
  332. tl_on_press   equ dword[edi+84] ;указатель на функцию, которая вызывается при нажатии Enter
  333.  
  334. ;константы стиля
  335. tl_key_no_edit   equ   1b ;элемент нельзя редактировать на клавиатуре (изменять уровни, удалять)
  336. tl_draw_par_line equ  10b ;рисовать линии к родительскому узлу
  337. tl_list_box_mode equ 100b ;стиль не отображает уровни (как в ListBox все одного уровня)
  338. tl_cursor_pos_limited equ 8 ;перемещение курсора ограничено существующими узлами
  339.  
  340. ;константы для функций
  341. tl_err_save_memory_size equ  10b ;не хватает памяти для сохранения элемента
  342. tl_err_load_caption     equ   1b ;в памяти нет заголовка 'tree'
  343. tl_err_load_info_size   equ 100b ;не совпадает размер информационной структуры при открытии
  344. tl_load_mode_add        equ 0x20000 ;опция считывания в режиме добавления информации
  345. tl_save_load_heder_size equ 26 ;размер заголовка для записи/чтения элементов
  346. tl_offs_box equ 0 ;начало BOX структуры для tree_list
  347.  
  348. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  349. ;Basic macros for use TextEditor                          ;
  350. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  351.  
  352. ted_wnd_l equ dword[edi+ 0] ;окно редактора: отступ слева
  353. ted_wnd_t equ dword[edi+ 4] ;окно редактора: отступ сверху
  354. ted_wnd_w equ dword[edi+ 8] ;окно редактора: ширина
  355. ted_wnd_h equ dword[edi+12] ;окно редактора: высота
  356. ted_rec_l equ dword[edi+16] ;ширина панели в окне
  357. ted_rec_t equ dword[edi+20] ;высота панели в окне
  358. ted_rec_w equ dword[edi+24] ;ширина символа (знакоместа) в окне
  359. ted_rec_h equ dword[edi+28] ;высота символа (знакоместа) в окне
  360. ted_drag_m equ byte[edi+32] ;выделение от мыши
  361. ted_drag_k equ byte[edi+33] ;выделение от клавиатуры
  362. ted_sel_x0 equ dword[edi+34] ;координата выделения x0
  363. ted_sel_y0 equ dword[edi+38] ;координата выделения y0
  364. ted_sel_x1 equ dword[edi+42] ;координата выделения x1
  365. ted_sel_y1 equ dword[edi+46] ;координата выделения y1
  366. ;запасные координаты выделения
  367. ted_seln_x0 equ dword[edi+50]
  368. ted_seln_y0 equ dword[edi+54]
  369. ted_seln_x1 equ dword[edi+58]
  370. ted_seln_y1 equ dword[edi+62]
  371.  
  372. ted_tex     equ dword[edi+66] ;указатель на память для хранения текста
  373. ted_tex_1   equ dword[edi+70] ;указатель на 1-ю стркутру символа
  374. ted_tex_end equ dword[edi+74] ;указатель на последнюю структуру символа
  375. ted_cur_x   equ dword[edi+78] ;координата x курсора
  376. ted_cur_y   equ dword[edi+82] ;координата y курсора
  377. ted_max_chars equ dword[edi+86] ;максимальное число символов в одном документе
  378. ted_colors_text_count equ dword[edi+90] ;колличество цветов текста
  379. ted_key_words_count   equ dword[edi+94] ;колличество ключевых слов
  380. ted_color_cursor   equ dword[edi+98] ;цвет курсора
  381. ted_color_wnd_capt equ dword[edi+102] ;цвет полей вокруг окна
  382. ted_color_wnd_work equ dword[edi+106] ;цвет фона окна
  383. ted_color_wnd_bord equ dword[edi+110] ;цвет текста на полях
  384. ted_color_select   equ dword[edi+114] ;цвет выделения
  385. ted_color_cur_text equ dword[edi+118] ;цвет символа под курсором
  386. ted_color_wnd_text equ dword[edi+122] ;цвет текста в окне
  387. ted_syntax_file    equ dword[edi+126] ;указатель на начало файла синтаксиса
  388. ted_syntax_file_size equ dword[edi+130] ;максимальный размер файла синтаксиса
  389. ted_text_colors     equ dword[edi+134] ;указатель на массив цветов текста
  390. ted_help_text_f1    equ dword[edi+138] ;указатель на текст справки (по нажатии F1)
  391. ted_help_id         equ dword[edi+142] ;идентификатор для справки
  392. ted_key_words_data  equ dword[edi+146] ;указатель на структуры ключевых слов TexColViv
  393. ted_tim_ch          equ dword[edi+150] ;колличество изменений в файле
  394. ted_tim_undo        equ dword[edi+154] ;колличество отмененных действий
  395. ted_tim_ls          equ dword[edi+158] ;время последнего сохранения
  396. ted_tim_co          equ dword[edi+162] ;время последней цветовой разметки
  397. ted_el_focus        equ dword[edi+166] ;указатель на переменную элемента в фокусе
  398. ted_err_save        equ  byte[edi+170] ;ошибка сохранения файла
  399. ted_panel_id        equ  byte[edi+171] ;номер открытой панели
  400. ted_key_new         equ  byte[edi+172] ;символ, который будет добавлятся с клавиатуры
  401. ted_symbol_new_line equ  byte[edi+173] ;символ завершения строки
  402. ted_scr_w           equ dword[edi+174] ;вертикальный скроллинг
  403. ted_scr_h           equ dword[edi+178] ;горизонтальный скроллинг
  404. ted_arr_key_pos     equ dword[edi+182] ;указатель на массив позиций ключевых слов
  405. ted_buffer          equ dword[edi+186] ;указатель на буфер копирования/вставки
  406. ted_buffer_find     equ dword[edi+190] ;указатель на буфер для поиска
  407. ted_cur_ins         equ  byte[edi+194] ;режим работы курсора (обычный или замена)
  408. ted_mode_color      equ  byte[edi+195] ;режим выделения слов цветом (0-выкл. 1-вкл.)
  409. ted_mode_invis      equ  byte[edi+196] ;режим показа непечатаемых символов
  410. ted_gp_opt          equ  byte[edi+197] ;опции возвращаемые функцией ted_get_pos_by_cursor
  411. ted_fun_on_key_ctrl_all equ dword[edi+198] ;указатель на функцию вызываемую при нажатии Ctrl+N,O,F,S,H,G
  412. ;+202,+206,+210 зарезервировано
  413. ted_buffer_size       equ dword[edi+214] ;размер буфера копирования/вставки
  414. ted_fun_find_err      equ dword[edi+218] ;указатель на функцию вызываемую если поиск закончился неудачно
  415. ;ted_fun_init_synt_err equ dword[edi+222] ;указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
  416. ted_fun_draw_panel_buttons equ dword[edi+226] ;указатель на функцию рисования панели с кнопками
  417. ted_fun_draw_panels    equ dword[edi+230] ;указатель на функцию рисования панели поиска|...|синтаксиса
  418. ted_fun_save_err      equ dword[edi+238] ;указатель на функцию вызываемую если сохранение файла закончилось неудачно
  419. ted_increase_size     equ dword[edi+242] ;число символов на которые будет увечиваться память при нехватке
  420. ted_ptr_free_symb     equ dword[edi+246] ;указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
  421. ted_font_size         equ dword[edi+250] ;множитель для размера шрифта (при изменении нужно также изменять параметры ted_rec_w, ted_rec_h)
  422. ;------------------------------------------------------------------------------
  423. ted_opt_ed_move_cursor equ 1 ;двигать курсор после добавления текста
  424. ted_opt_ed_change_time equ 2 ;добавлять изменения при редактировании текста
  425. ted_offs_sel  equ 34 ;смещение структуры sel
  426. ted_offs_seln equ 50 ;смещение структуры seln
  427. ted_offs_count_colors equ 90 ;смещение переменной колличества цветов
  428. ted_offs_key_new equ 172
  429. ted_offs_symbol_new_line equ 173 ;смещение символа новой строки
  430. ;------------------------------------------------------------------------------
  431.  
  432.  
  433.  
  434. ; *** scroll bar constant ***
  435. sb_offs_size_x   equ  0
  436. sb_offs_start_x  equ  2
  437. sb_offs_size_y   equ  4
  438. sb_offs_start_y  equ  6
  439. sb_offs_max_area equ 16
  440. sb_offs_cur_area equ 20
  441. sb_offs_position equ 24
  442. sb_offs_bckg_col equ 28
  443. sb_offs_frnt_col equ 32
  444. sb_offs_line_col equ 36
  445. sb_offs_redraw   equ 40
  446. sb_offs_delta2   equ 46
  447. sb_offs_all_redraw equ 80
  448. ;------------------------------------------------------------------------------
  449.  
  450.  
  451. struc scrollbar xsize, xpos, ysize, ypos, btn_height, max, cur, pos, bgcol, frcol, linecol, ar_offset
  452. {
  453. .x_size         dw xsize
  454. .x_pos          dw xpos
  455. .y_size         dw ysize
  456. .y_pos          dw ypos
  457. .btn_height     dd btn_height
  458. .type           dd ?
  459. .max_area       dd max
  460. .cur_area       dd cur
  461. .position       dd pos
  462. .bg_color       dd bgcol
  463. .front_color    dd frcol
  464. .line_color     dd linecol
  465. .redraw         dd ?
  466. .delta          dw ?
  467. .delta2         dw ?
  468. .r_size_x       dw ?
  469. .r_start_x      dw ?
  470. .r_size_y       dw ?
  471. .r_start_y      dw ?
  472. .m_pos          dd ?
  473. .m_pos_2        dd ?
  474. .m_keys         dd ?
  475. .run_size       dd ?
  476. .position2      dd ?
  477. .work_size      dd ?
  478. .all_redraw     dd ?
  479. .ar_offset      dd ar_offset
  480. }
  481.  
  482. ; *** ProgressBar  constants *** ;
  483. PB_VALUE          equ +0
  484. PB_LEFT           equ +4
  485. PB_TOP            equ +8
  486. PB_WIDTH          equ +12
  487. PB_HEIGHT         equ +16
  488. PB_STYLE          equ +20
  489. PB_MIN            equ +24
  490. PB_MAX            equ +28
  491. PB_BACK_COLOR     equ +32
  492. PB_PROGRESS_COLOR equ +36
  493. PB_FRAME_COLOR    equ +40
  494.  
  495. ; *** Frame constants *** ;
  496. FR_STYLE         equ +0  ; Dword
  497. FR_WIDTH         equ +4  ; Word
  498. FR_LEFT          equ +6  ; Word
  499. FR_HEIGHT        equ +8  ; Word
  500. FR_TOP           equ +10 ; Word
  501. FR_OUTER_COLOR   equ +12 ; Dword
  502. FR_INNER_COLOR   equ +16 ; Dword
  503. FR_FLAGS         equ +20 ; Dword
  504. FR_TEXT          equ +24 ; Dword
  505. FR_TEXT_POSITION equ +28 ; Dword
  506. FR_FONT          equ +32 ; Dword
  507. FR_FONT_HEIGHT   equ +36 ; Dword
  508. FR_FORE_COLOR    equ +40 ; Dword
  509. FR_BACK_COLOR    equ +44 ; Dword
  510.  
  511. ; FR_FLAGS = [x][yyy][z]
  512. ; z        -  Caption
  513. ; yyy      -  BorderStyle
  514. ; x        -  BackStyle
  515. FR_CAPTION equ 00001b ; [z]
  516. FR_DOUBLE  equ 00000b ; [yyy]
  517. FR_RAISED  equ 00010b ; [yyy]
  518. FR_SUNKEN  equ 00100b ; [yyy]
  519. FR_ETCHED  equ 00110b ; [yyy]
  520. FR_RIDGED  equ 01000b ; [yyy]
  521. FR_FILLED  equ 10000b ; [x]
  522.  
  523. ; FR_TEXT_POSITION
  524. FR_TEXT_POS_BOTTOM equ 1
  525. FR_TEXT_POS_TOP    equ 0
  526.  
  527. ;-----------------------------------------------------------------------------
  528.  
  529. struc tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait
  530. {
  531.     .txt     dd  txt   ; указатель на текст asciiz, разделитель \r 13
  532.     .next    dd  next   ; следующиий tooltip в цепочке или 0
  533.     .zone_y  dw  zone_y   ; зона контроля (в 90% случаев совпадает с размером контрола)
  534.     .zone_x  dw  zone_x   ;
  535.     .zone_h  dw  zone_h   ;
  536.     .zone_w  dw  zone_w   ;
  537.     .col_txt dd  col_txt   ; цвет текста тултипа, включая размер SysFn4
  538.     .col_bkg dd  col_bkg   ; цвет фона тултипа
  539.     .tm_wait dw  tm_wait   ; время ожидания х10мс
  540. ;временные переменные
  541.     .font_sz dd  ?   ; font size
  542.     .mouse   dd  ?   ; предыдущее положение (x, y)
  543.     .tm_strt dd  ?   ; время запуска таймера (входа мыши в зону) х10мс
  544.     .video   dd  ?   ; память для сохраненного под тултипом
  545.     .video_y dw  ?    ; координаты запомненной области экрана, или 0 если пусто
  546.     .video_x dw  ?
  547.     .video_h dw  ?    ; размер предрасчитывается при init
  548.     .video_w dw  ?
  549. }
  550.