Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
806 Lrz 1
;Libray from Editbox
2
; SEE YOU File FAQ.txt and HISTORY. Good Like!
3
;;;;;;;;;;;;;;;;;;
4
 
5
format MS COFF
6
 
7
public EXPORTS
8
 
9
section '.flat' code readable align 16
10
include 'macros.inc'
11
include 'editbox.mac'    ;макрос который должен облегчить жизнь :) специально для editbox
12
 
13
edit_box:
14
ed_width        equ [edi]               ;ширина компонента
15
ed_left         equ [edi+4]             ;положение по оси х
16
ed_top          equ [edi+8]             ;положение по оси у
17
ed_color        equ [edi+12]            ;цвет фона компонента
18
shift_color     equ [edi+16]            ;=0x6a9480 для примера возьем желеный цвет бокса
19
ed_focus_border_color   equ [edi+20]    ;цвет рамки компонента
20
ed_blur_border_color    equ [edi+24]    ;цвет не активного компонента
21
ed_text_color   equ [edi+28]            ;цвет текста
22
ed_max          equ [edi+32]                    ;кол-во символов которые можно максимально ввести
23
ed_text         equ [edi+36]                    ;указатель на буфер
24
ed_flags        equ [edi+40]            ;флаги
25
ed_size equ [edi+44]                    ;кол-во символов
26
ed_pos  equ [edi+48]                    ;позиция курсора
27
ed_offset       equ [edi+52]            ;смещение
28
cl_curs_x       equ [edi+56]            ;предыдущее координата курсора по х
29
cl_curs_y       equ [edi+60]            ;предыдущее координата курсора по у
30
ed_shift_pos    equ [edi+64]            ;положение курсора
31
ed_shift_pos_old equ [edi+68]           ;старое положение курсора
32
.draw:
830 Lrz 33
        pushad
806 Lrz 34
;--- рисуем рамку ---
35
        mov     edi,dword [esp+36]
36
        call    .draw_border            ; Функция стабильна
37
.draw_bg_cursor_text:
38
;--- изменяем смещение, если надо ---
39
        call    .check_offset           ;вычисление позиции курсора стабильна
40
;--- рисуем внутреннюю область ---
41
        call    .draw_bg                ;нарисовать прямоугольник рабочей области
42
;---- рисуем выделение, по shift если есть
43
        call    .draw_shift
44
.draw_cursor_text:
45
;--- рисуем курсор ---
46
        ;--- может его не надо рисовать ----
47
        test    word ed_flags,ed_focus
48
        je     @f
49
        call    .draw_cursor
50
@@:
51
        call    .draw_text
52
;        ret
53
;;;;;;;;;;;;;;;;;;;;;;;;;;
54
;Общий выход из editbox для всех функций и пост обработчиков
55
;;;;;;;;;;;;;;;;;;;;;;;;;;
56
.editbox_exit:
830 Lrz 57
        popad
806 Lrz 58
        ret 4
59
 
60
;==========================================================
61
;=== обработка клавиатуры =================================
62
;==========================================================
63
edit_box_key:
830 Lrz 64
pushad
806 Lrz 65
        mov     edi,dword [esp+36]
66
        test    word ed_flags,ed_focus ; если не в фокусе, выходим
67
        je      edit_box.editbox_exit
68
        test    word ed_flags,ed_mouse_on
69
        jne     edit_box.editbox_exit
70
 
71
;Проверка нажат shift ?
72
        call    edit_box_key.check_shift
73
;----------------------------------------------------------
74
;--- проверяем, что нажато --------------------------------
75
;----------------------------------------------------------
76
use_key_process  backspase,delete,left,right,home,end,insert
77
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
78
;Заглушка на обработку клавиш вверх и вниз т.е. при обнаружении этих кодов происходит выход из обработчика
79
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
80
use_key_no_process   up,down,esc
81
;--- нажата другая клавиша ---
82
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
83
;Проверка установлен ли флаг при котором нужно выводить только цифры в нужном боксе если такойнеобходимости нет нужно закоментировать макрос
84
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
85
use_key_figures_only
86
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
87
;проверка на shift был ли нажат
88
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
89
are_key_shift_press
90
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
91
; проверяем, находится ли курсор в конце + дальнейшая обработка
92
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
93
are_key_cur_end
94
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
95
;Обработка клавиш insert,delete.backspase,home,end,left,right
96
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
97
use_work_key
98
 
99
;==========================================================
100
;=== обработка мыши =======================================
101
;==========================================================
102
;save for stdcall ebx,esi,edi,ebp
103
edit_box_mouse:
830 Lrz 104
pushad
806 Lrz 105
        mov     edi,dword [esp+36]
106
;debug
107
;----------------------------------------------------------
108
;--- получаем состояние кнопок мыши -----------------------
109
;----------------------------------------------------------
110
        mcall   37,2
111
;----------------------------------------------------------
112
;--- проверяем состояние ----------------------------------
113
;----------------------------------------------------------
114
        test    eax,1
115
        jnz     edit_box_mouse.mouse_left_button
116
        and     word ed_flags,ed_mouse_on_off
117
        xor     ebx,ebx
118
        mov     dword [mouse_flag],ebx
119
        jmp     edit_box.editbox_exit
120
.mouse_left_button:
121
;----------------------------------------------------------
122
;--- блокировка от фокусировки в других боксах при попадании на них курсора
123
;----------------------------------------------------------
124
        mov     eax,dword [mouse_flag]
125
        test    eax,eax
126
        jz      @f
127
        cmp     eax,edi
128
        je      @f
129
        jmp     edit_box_mouse._blur
130
;----------------------------------------------------------
131
;--- получаем координаты мыши относительно 0 т.е всей области экрана
132
;----------------------------------------------------------
830 Lrz 133
@@:     mcall   37,1
806 Lrz 134
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
135
;Функция обработки  мышки получение координат и проверка их + выделения
136
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
137
use_work_mouse
138
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
139
;Общие функции обработки
140
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
141
use_general_func
142
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
143
;Функции для работы с key
144
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
145
use_key_func
146
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
147
;Функции для работы с mouse
148
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
830 Lrz 149
use_mouse_func
806 Lrz 150
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
151
;Bit mask from editbox
152
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
153
ed_figure_only= 1000000000000000b   ;одни символы
154
ed_always_focus= 100000000000000b
155
ed_focus=                     10b   ;фокус приложения
156
ed_shift_on=                1000b   ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift
157
ed_shift_on_off=1111111111110111b
158
ed_shift=                    100b   ;включается при нажатии на shift т.е. если нажимаю
159
ed_shift_off=   1111111111111011b
160
ed_shift_bac=              10000b   ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение
161
ed_shift_bac_cl=1111111111101111b   ;очистка при удалении выделения
162
ed_shift_cl=    1111111111100011b
163
ed_shift_mcl=   1111111111111011b
164
ed_left_fl=               100000b
165
ed_right_fl=    1111111111011111b
166
ed_offset_fl=            1000000b
167
ed_offset_cl=   1111111110111111b
168
ed_insert=              10000000b
169
ed_insert_cl=   1111111101111111b
170
ed_mouse_on =          100000000b
171
ed_mous_adn_b=         100011000b
172
ed_mouse_on_off=1111111011111111b
173
ed_height=14 ; высота
174
 
175
;----------------------------------------------------
176
;CheckBox
177
;----------------------------------------------------
178
check_box_draw:
179
;ch_struc_size=24
180
ch_left equ [edi]    ;координата начала рисования по х
181
ch_top equ [edi+2]   ;координата начала рисования по у
182
ch_text_margin equ [edi+4]      ;=4 расстояние от прямоугольника чек бокса до надписи
183
ch_size equ [edi+8]             ;12 размер квадрата чек бокса
184
ch_color equ [edi+12]
185
ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
186
ch_text_color equ   [edi+20];[edi+4]  ;цвет текста
187
ch_text_ptr equ [edi+24]    ;указатель на начало текстовой строки
188
ch_text_length equ [edi+28]
189
ch_flags equ [edi+32]       ;флаги
190
 
191
       pusha   ;сохраним все регистры
192
       mov     edi,dword [esp+36]
193
       mov eax,13
194
       movzx ebx,word ch_left
195
       shl ebx,16
196
       add ebx,ch_size
197
       mov ecx,ch_top
198
       shl ecx,16
199
       add ecx,dword ch_size
200
       mov edx,dword ch_border_color
201
       mcall ;рисуем рамку
202
 
203
       mov edx,dword ch_color
204
       add ebx,1 shl 16 - 2
205
       add ecx,1 shl 16 - 2
206
       mcall ;закрашиваем внутренности чекбокса
207
 
208
       test dword ch_flags,2  ;достать значение бита из переменной и поместить в  флаг CF
209
       jz   @f                ;в если CF=1, то выполним следующую процедуру иначе перейти на нижнюю @@
210
       call check_box_draw_ch  ;нарисовать включенный чек бокс
211
@@:
212
;----------------------------
213
;расчет куда будет произведен вывод текста
214
;----------------------------
215
        movzx ebx,word ch_left        ;загрузить значение х для чек бокса
216
        add   ebx,dword ch_size
217
        add   ebx,dword ch_text_margin;добавить размер стороны и расстояние на котором начнется вывод текста
218
        shl   ebx,16                ;сдвинем на 16 разрядов в лево (умножим на 65536)
219
        mov   bx,word ch_top        ;загрузим значение по y
220
        add   ebx,ch_size
221
        mov   ecx,dword ch_text_color        ;загрузим цвет надписи + flags
222
        sub   ebx,7        ;добавим значение длины стороны -9+2
223
 
224
        mov   edx,dword ch_text_ptr                ;укажем адрес от куда нужно выводить строку
225
        mov   esi,dword ch_text_length
226
        ;внесем в eax значение вывода надписи на канву
227
        mov   eax,4
228
        mcall                  ;Вывод
229
popa                              ;восстановить значения регистров из стека
230
ret 4                             ;выйдем из процедуры
231
 
232
check_box_clear_ch:                        ;очистка чек бокса
233
        mov   edx,dword ch_color   ;цвет внутри чек бокса
234
        jmp   @f             ;безусловный прыжок на нижнюю метку @@
235
 
236
check_box_draw_ch:            ;нарисовать включенный чек бокс
237
        mov   edx,dword ch_border_color        ;загрузить цвет
238
@@:
239
        movzx ebx,word ch_left  ;загрузить координату по х
240
        mov   eax,dword ch_size
241
        push  ax
242
        shr   eax,2
243
        add   ebx,eax          ;добавить (сторона прямоугольника/3)
244
        shl   ebx,16            ;сдвинем на 16 разрядов в лево (умножим на 65536)
245
        pop   bx
246
        shr   bx,1              ;загрузить (сторона прямоугольника/2)
247
        mov   bp,bx             ;сохраним регистр bx в регистре указателя базы
248
 
249
        movzx ecx,word ch_top ;загрузить координату по у
250
        mov   eax,dword ch_size
251
        shr   eax,2
252
        add   ecx,eax         ;добавить (сторона прямоугольника/4)
253
        shl   ecx,16          ;сдвинем на 16 разрядов в лево (умножим на 65536)
254
        mov   cx,bp           ;загрузим значения регистра указателя базы в cx
255
        mov   eax,13          ;в eax - значения функции для вывода полосы т.е. по сути прямоугольника, который отображает включенный компонент чек бокс
256
        mcall            ;вывод
257
ret                                ;выйти из процедуры
258
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
259
;Обработчик mouse
260
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
261
check_box_mouse:      ;обработка мыши
262
pusha
263
        mov     edi,dword [esp+36]
264
        mov     eax,37           ;будем что то делать если у нас что - нить нажато
265
        mov     ebx,2            ;внести в регистр значение 2
266
        mcall             ;проверка не нажал ли пользователь кнопку мышки
267
        test    eax,eax   ;проверка если у нас в eax=0, то установим флаг и выйдем
268
        jnz     @f         ;перейти на нижнюю метку @@
269
        btr     dword ch_flags,2  ;извлечение значения заданного бита в флаг cf и изменение его значения на нулевое.
270
        jmp     check_box_mouse_end
271
 
272
@@:
273
        bts  dword ch_flags,2   ;проверка флага т.е. перенос в cf значение бита и установка бита в состояние включено
274
        jc   check_box_mouse_end         ;если CF=1 то перейти  в конец т.е. это выход
275
        mov  esi,dword ch_text_length ;загрузить кол-во символов в текстовой строке
276
        ;Умножение на 6 Быстрое умножение можно воспользоваться любым мз методов, но на старых Процессорах (386,486,P1)быстрее будет с инструкцией Lea
277
        ;lea esi,[eax*2+eax]
278
        ;shl eax,1
279
        imul esi,6             ; или можно и так умножить на 6
280
        add  esi,dword ch_text_margin ;добавить 3 - расстояние от чек бокса до надписи
281
 
282
        mov  eax,37             ;получим координаты мышки
283
        mov  ebx,1              ;добавить 1
284
        mcall               ;получить координаты курсора относительно окна
285
 
286
        movzx ebx,word ch_top  ;загрузить в bx значение координаты у
287
        cmp   ax,bx              ;сравнить с с координатой курсора
288
        jl   check_box_mouse_end          ;SF <> OF если меньше
289
        add   ebx,dword ch_size        ;добавить размер
290
        cmp   ax,bx              ;сравнить
291
        jg   check_box_mouse_end          ;ZF = 0 и SF = OF если больше
292
 
293
        shr   eax,16              ;разделим на 65536 или просто сдвинем биты на 16 значений
294
        movzx ebx,word ch_left  ;произведем аналогичное сравнение
295
        cmp   ax,bx            ;сравнить регистры
296
        jl   check_box_mouse_end        ;если меньше
297
        add   ebx,dword ch_size      ;добавить длину стороны прямоугольника
298
        add   ebx,esi          ;Учесть в значении по х еще и длину надписи к чекбоксу
299
        cmp   ax,bx            ;стравнить регистры
300
        jg   check_box_mouse_end        ;если больше
301
 
302
        bts  dword ch_flags,1  ;извлечение значения заданного бита в флаг cf и изменение его значения на 1.
303
        jc   @f                ;CF=1 то перейти на нижнюю @@
304
 
305
        call check_box_draw_ch        ;отобразить включенный чек бокс
306
;        mov   dword [esp+24],1 ;дальнейшая проверка чек боксов бесмыслена, по этому в стек, где располагается ecx поместитм 0
307
        jmp  check_box_mouse_end       ;выйти
308
@@:
309
        btr   word ch_flags,1  ;извлечение значения заданного бита в флаг cf и изменение его значения на нулевое.
310
        call check_box_clear_ch         ;выключить чек бокс т.е. на месте закрашенного прямоугольника отобразить цвет фона.
311
check_box_mouse_end:
312
popa                                ;восстановить регистры из стека
313
ret  4                              ;выйти
314
 
315
;--------------------------------------------------
316
;radiobutton Group
317
;--------------------------------------------------
318
option_box_draw_box:
319
option_group equ [edi]
320
op_left equ [edi+4]    ;координата начала рисования по х
321
op_top equ [edi+6]     ;координата начала рисования по у
322
op_text_margin equ [edi+8]      ;=4 расстояние от прямоугольника чек бокса до надписи
323
op_size equ [edi+12]             ;12 размер квадрата чек бокса
324
op_color equ [edi+16]
325
op_border_color equ [edi+20] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
326
op_text_color equ   [edi+24];[edi+4]  ;цвет текста
327
op_text_ptr equ [edi+28]    ;указатель на начало текстовой строки
328
op_text_length equ [edi+32]
329
op_flags equ [edi+36]       ;флаги
330
 
331
        pusha   ;сохраним все регистры
332
 
333
        movzx ebx,word op_left
334
        shl ebx,16
335
        add ebx,dword op_size
336
        movzx ecx,word op_top
337
        shl ecx,16
338
        add ecx,dword op_size
339
        mov edx,dword op_border_color
340
        mov eax,13
341
        mcall ;рисуем рамку
342
 
343
        mov edx,dword op_color
344
        add ebx,1 shl 16 - 2
345
        add ecx,1 shl 16 - 2
346
        mcall ;закрашиваем внутренности чекбокса
347
 
348
;        mov     eax,dword option_group
349
;        mov     dword eax,[eax]
350
;        cmp     eax,edi
351
;        jne     @f
352
;        call    option_box_draw_op  ;нарисовать включенный чек бокс
353
 
354
 
355
;----------------------------
356
;расчет куда будет произведен вывод текста
357
;----------------------------
358
@@:     movzx ebx,word op_left        ;загрузить значение х для чек бокса
359
        add   ebx,dword op_size
360
        add   ebx,dword op_text_margin;добавить размер стороны и расстояние на котором начнется вывод текста
361
        shl   ebx,16                ;сдвинем на 16 разрядов в лево (умножим на 65536)
362
        mov   bx,word op_top        ;загрузим значение по y
363
        add   ebx,op_size
364
        mov   ecx,dword op_text_color        ;загрузим цвет надписи + flags
365
        sub   ebx,7        ;добавим значение длины стороны -9+2
366
 
367
        mov   edx,dword op_text_ptr                ;укажем адрес от куда нужно выводить строку
368
        mov   esi,dword op_text_length
369
        ;внесем в eax значение вывода надписи на канву
370
        mov   eax,4
371
        mcall                  ;Вывод
372
popa                           ;восстановить значения регистров из стека
373
ret                            ;выйдем из процедуры
374
 
375
option_box_clear_op:                      ;очистка чек бокса
376
        mov     edx,dword op_color    ;цвет внутри чек бокса
377
        jmp     @f              ;безусловный прыжок на нижнюю метку @@
378
 
379
 
380
option_box_draw_op:            ;нарисовать включенный чек бокс
381
        mov   edx,dword op_border_color        ;загрузить цвет
382
@@:
383
        movzx ebx,word op_left  ;загрузить координату по х
384
        mov   eax,dword op_size
385
        push  ax
386
        shr   eax,2
387
        add   ebx,eax          ;добавить (сторона прямоугольника/3)
388
        shl   ebx,16            ;сдвинем на 16 разрядов в лево (умножим на 65536)
389
        pop   bx
390
        shr   bx,1              ;загрузить (сторона прямоугольника/2)
391
        mov   bp,bx             ;сохраним регистр bx в регистре указателя базы
392
 
393
        movzx ecx,word op_top ;загрузить координату по у
394
        mov   eax,dword op_size
395
        shr   eax,2
396
        add   ecx,eax         ;добавить (сторона прямоугольника/4)
397
        shl   ecx,16          ;сдвинем на 16 разрядов в лево (умножим на 65536)
398
        mov   cx,bp           ;загрузим значения регистра указателя базы в cx
399
        mov   eax,13          ;в eax - значения функции для вывода полосы т.е. по сути прямоугольника, который отображает включенный компонент чек бокс
400
        mcall            ;вывод
401
ret                                ;выйти из процедуры
402
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
403
;Обработчик mouse
404
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
405
option_box_mouse_op:                 ;обработка мыши
406
pusha
407
        mov     eax,37          ;будем что то делать если у нас что - нить нажато
408
        mov     ebx,2           ;внести в регистр значение 2
409
        mcall           ;проверка не нажал ли пользователь кнопку мышки
410
        test    eax,eax    ;проверка если у нас в eax=0, то установим флаг и выйдем
411
        jnz     @f         ;перейти на нижнюю метку @@
412
 
413
        jmp     option_box_mouse_end
414
                           ;если ничего не произошло, то восстановим значения регистров из стека
415
                           ;выход
416
@@:
417
        mov     esi,dword op_text_length ;загрузить кол-во символов в текстовой строке
418
        ;Умножение на 6 Быстрое умножение можно воспользоваться любым мз методов, но на старых Процессорах (386,486,P1)быстрее будет с инструкцией Lea
419
        ;lea    esi,[eax*2+eax]
420
        ;shl    eax,1
421
        imul    esi,6               ; или можно и так умножить на 6
422
        xor     ebx,ebx
423
        add     esi,dword op_text_margin   ;добавить 3 - расстояние от чек бокса до надписи
424
 
425
        mov     eax,37          ;получим координаты мышки
426
        inc     ebx             ;добавить 1
427
        mcall                ;получить координаты курсора относительно окна
428
 
429
        movzx   ebx,word op_top           ;загрузить в bx значение координаты у
430
        cmp     ax,bx               ;сравнить с с координатой курсора
431
        jl      option_box_mouse_end          ;SF <> OF если меньше
432
        add     ebx,dword op_size          ;добавить размер
433
        cmp     ax,bx               ;сравнить
434
        jg      option_box_mouse_end          ;ZF = 0 и SF = OF если больше
435
 
436
        shr     eax,16              ;разделим на 65536 или просто сдвинем биты на 16 значений
437
        movzx   ebx,word op_left          ;произведем аналогичное сравнение
438
        cmp     ax,bx                ;сравнить регистры
439
        jl      option_box_mouse_end           ;если меньше
440
        add     ebx,dword op_size          ;добавить длину стороны прямоугольника
441
        add     ebx,esi              ;Учесть в значении по х еще и длину надписи к чекбоксу
442
        cmp     ax,bx                ;стравнить регистры
443
        jg      option_box_mouse_end           ;если больше
444
        mov     eax,dword option_group
445
        mov     [eax],edi
446
 
447
option_box_mouse_end:
448
popa                              ;восстановить регистры из стека
449
ret                               ;выйти
450
 
451
option_box_draw:
452
        pusha
453
 
454
        mov     eax,dword [esp+36]
455
@@:     mov     edi,dword [eax]
456
        test    edi,edi
457
        je      option_check
458
        call    option_box_draw_box
459
        add     eax,4
460
        jmp    @b
461
 
462
option_check:
463
        mov     eax,dword [esp+36]
464
@@:     mov     edi,dword [eax]
465
        test    edi,edi
466
        je      @f
467
 
468
        mov     ebx,dword [edi]
469
        mov     ebx,dword [ebx]
470
        cmp     edi,ebx
471
        jne     .clear_op
472
 
473
        pusha
474
        call    option_box_draw_op
475
        popa
476
        add     eax,4
477
        jmp     @b
478
 
479
.clear_op:
480
        pusha
481
        call    option_box_clear_op
482
        popa
483
        add     eax,4
484
        jmp     @b
485
 
486
 
487
@@:     popa
488
        ret 4
489
        ; exit вообще :)
490
 
491
 
492
option_box_mouse:
493
        pusha
494
 
495
        mov     eax,dword [esp+36]
496
@@:     mov     edi,dword [eax]
497
        test    edi,edi
498
        je      option_check
499
        call    option_box_mouse_op
500
        add     eax,4
501
        jmp    @b
502
 
503
 
504
align 16
505
EXPORTS:
506
 
507
        dd      sz_edit_box,            edit_box
508
        dd      sz_edit_box_key,        edit_box_key
509
        dd      sz_edit_box_mouse,      edit_box_mouse
510
        dd      szVersion_ed,           0x00000001
511
        dd      sz_check_box_draw,      check_box_draw
512
        dd      sz_check_box_mouse,     check_box_mouse
513
        dd      szVersion_ch,           0x00000001
514
        dd      sz_option_box_draw,     option_box_draw
515
        dd      sz_option_box_mouse,    option_box_mouse
516
        dd      szVersion_op,           0x00000001
517
        dd      0,0
518
 
519
sz_edit_box            db 'edit_box',0
520
sz_edit_box_key        db 'edit_box_key',0
521
sz_edit_box_mouse      db 'edit_box_mouse',0
522
szVersion_ed           db 'version_ed',0
523
sz_check_box_draw      db 'check_box_draw',0
524
sz_check_box_mouse     db 'check_box_mouse',0
525
szVersion_ch           db 'version_ch',0
526
sz_option_box_draw     db 'option_box_draw',0
527
sz_option_box_mouse    db 'option_box_mouse',0
528
szVersion_op           db 'version_op',0
529
 
530
;;;;;;;;;;;
531
;;Data
532
;;;;;;;;;;;
533
align 16
534
mouse_flag dd 0x0