Subversion Repositories Kolibri OS

Rev

Rev 583 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
468 Lrz 1
;Распространяется по лицензии GPL  SEE YOU File FAQ.txt and HISTORY. Good Like!
234 Lrz 2
;Оптимизированный компонент EditBox (Исходный вариант от Maxxxx32)
3
;Оптимизация команд.
292 Lrz 4
;  - Теплов Алексей  www.lrz.land.ru
234 Lrz 5
;заголовок приложения
485 heavyiron 6
        include '..\..\..\..\macros.inc'
461 Lrz 7
        include 'editbox.inc'
491 Lrz 8
meos_app_start
483 Lrz 9
align 4
830 Lrz 10
        use_edit_box
234 Lrz 11
;Область кода
583 Lrz 12
code                            ;Точка входа в программу
461 Lrz 13
        mcall   40,0x27         ;установить маску для ожидаемых событий
583 Lrz 14
;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) и нажатие клавиши
234 Lrz 15
red_win:
461 Lrz 16
    call draw_window            ;первоначально необходимо нарисовать окно
483 Lrz 17
align 4
461 Lrz 18
still:                          ;основной обработчик
468 Lrz 19
        mcall   10              ;Ожидать события
583 Lrz 20
        dec  eax
21
        jz   red_win
22
        dec  eax
23
        jz   key
24
        dec  eax
25
        jz   button
461 Lrz 26
        mouse_edit_boxes editboxes,editboxes_end
27
        jmp still    ;если ничего из перечисленного то снова в цикл
234 Lrz 28
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29
button:
461 Lrz 30
        mcall   17      ;получить идентификатор нажатой клавиши
31
        test ah,ah              ;если в ah 0, то перейти на обработчик событий still
32
        jz  still
33
        mcall   -1
234 Lrz 34
key:
461 Lrz 35
        mcall   2       ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
36
        key_edit_boxes editboxes,editboxes_end
234 Lrz 37
    jmp still
38
 
39
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
483 Lrz 40
align 4
461 Lrz 41
draw_window:            ;рисование окна приложения
42
        mcall   12,1
43
        mcall   0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
830 Lrz 44
        draw_edit_boxes editboxes,editboxes_end  ;рисование edit box'ов
461 Lrz 45
        mcall   12,2
234 Lrz 46
    ret
47
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
48
;DATA данные
49
editboxes:
461 Lrz 50
edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
51
edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
52
edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
53
edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
234 Lrz 54
editboxes_end:
396 Lrz 55
data_of_code dd 0
461 Lrz 56
mouse_flag dd 0x0
830 Lrz 57
hed db   'EDITBOX optimization and retype  date 23.07.2008',0
461 Lrz 58
rb  256
234 Lrz 59
ed_buffer:
404 Lrz 60
;.1: rb 514;256
396 Lrz 61
.2: rb 101
62
.3: rb 11
63
.4: rb 3
64
;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0
234 Lrz 65
buffer_end:
483 Lrz 66
align 16
491 Lrz 67
meos_app_end
68
udata