Subversion Repositories Kolibri OS

Rev

Rev 461 | Rev 483 | 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
;заголовок приложения
461 Lrz 6
use32           ; транслятор, использующий 32 разрядных команды
7
    org 0x0             ; базовый адрес кода, всегда 0x0
8
    db 'MENUET01'       ; идентификатор исполняемого файла (8 байт)
9
    dd 0x1              ; версия формата заголовка исполняемого файла
10
    dd start            ; адрес, на который система передаёт управление
11
                        ; после загрузки приложения в память
12
    dd i_end            ; размер приложения
13
    dd i_end and not 3  ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
14
    dd i_end and not 3  ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
15
    dd 0x0,0x0          ; указатель на строку с параметрами.
16
        include 'macros.inc'
17
        include 'editbox.inc'
468 Lrz 18
        use_edit_box structure_of_potock,22,5
234 Lrz 19
;Область кода
461 Lrz 20
start:                          ;Точка входа в программу
21
        mcall   40,0x27         ;установить маску для ожидаемых событий
22
 ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) и нажатие клавиши
234 Lrz 23
red_win:
461 Lrz 24
    call draw_window            ;первоначально необходимо нарисовать окно
25
still:                          ;основной обработчик
468 Lrz 26
        mcall   10              ;Ожидать события
461 Lrz 27
        cmp al,0x1    ;если изменилось положение окна
28
        jz red_win
29
        cmp al,0x2    ;если нажата клавиша то перейти
30
        jz key
31
        cmp al,0x3    ;если нажата кнопка то перейти
32
        jz button
33
        mouse_edit_boxes editboxes,editboxes_end
34
        jmp still    ;если ничего из перечисленного то снова в цикл
234 Lrz 35
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
36
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
37
button:
461 Lrz 38
        mcall   17      ;получить идентификатор нажатой клавиши
39
        test ah,ah              ;если в ah 0, то перейти на обработчик событий still
40
        jz  still
41
        mcall   -1
234 Lrz 42
key:
461 Lrz 43
        mcall   2       ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
44
        key_edit_boxes editboxes,editboxes_end
234 Lrz 45
    jmp still
46
 
47
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
461 Lrz 48
draw_window:            ;рисование окна приложения
49
        mcall   12,1
50
        mcall   0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
468 Lrz 51
        draw_edit_boxes editboxes,editboxes_end,use_f9,structure_of_potock  ;рисование edit box'ов
461 Lrz 52
        mcall   12,2
234 Lrz 53
    ret
54
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
55
;DATA данные
56
editboxes:
461 Lrz 57
edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
58
edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
59
edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
60
edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
234 Lrz 61
editboxes_end:
396 Lrz 62
data_of_code dd 0
461 Lrz 63
mouse_flag dd 0x0
468 Lrz 64
hed db   'EDITBOX optimization and retype  date 19.04.2007',0
461 Lrz 65
rb  256
234 Lrz 66
ed_buffer:
404 Lrz 67
;.1: rb 514;256
396 Lrz 68
.2: rb 101
69
.3: rb 11
70
.4: rb 3
71
;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0
234 Lrz 72
buffer_end:
449 Lrz 73
structure_of_potock:
461 Lrz 74
rb 1024 ;1 кб для получения общей структуры
343 Lrz 75
rb 1024
396 Lrz 76
i_end: