From 59e4c92d8df5f6d42ba8f970ead2d52832088bee Mon Sep 17 00:00:00 2001 From: "Alexey Teplov (" Date: Fri, 20 Jul 2007 07:18:18 +0000 Subject: [PATCH] Fixed bug git-svn-id: svn://kolibrios.org@583 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../develop/examples/editbox/trunk/FAQ.txt | 5 ++ .../develop/examples/editbox/trunk/History | 1 + .../examples/editbox/trunk/editbox.asm | 20 +++-- .../examples/editbox/trunk/editbox.mac | 79 +++++++++++++++---- 4 files changed, 80 insertions(+), 25 deletions(-) diff --git a/programs/develop/examples/editbox/trunk/FAQ.txt b/programs/develop/examples/editbox/trunk/FAQ.txt index e0e11ccfa..cf0ac4ff3 100644 --- a/programs/develop/examples/editbox/trunk/FAQ.txt +++ b/programs/develop/examples/editbox/trunk/FAQ.txt @@ -1,3 +1,8 @@ +EDITBOX шёяюы№чєхЄ ьръЁюё macroc.inc т ъюЁэх фшЁхъЄюЁшш, Єръцх шёяюы№чєхЄ Їрщы эрёЄЁюхъ яЁш +ъюьяшы Ўшш ъюфр, struct.inc т ъюЄюЁюь эєцэю єърчрЄ№ яЁртшы№э√щ Єшя яЁюЎхёёюЁр фы  тр°хщ +ёшёЄхь√!! + + ╧юёфхфэр  ьюфшЇшърЎш  ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;╤ЄЁєъЄєЁэюх юяшёрэшх тючьюцэюёЄш ъюьяюэхЄр ш ьюфхыхщ хую шёяюы№чютрэш . diff --git a/programs/develop/examples/editbox/trunk/History b/programs/develop/examples/editbox/trunk/History index 4ef21a2be..2b0adc06a 100644 --- a/programs/develop/examples/editbox/trunk/History +++ b/programs/develop/examples/editbox/trunk/History @@ -6,6 +6,7 @@ You bunny wrote ..... ▌Єю эх ьэюую Їюы№ъыхЁр, ёт чрээюх, ё Єхь, ўЄю эряшёрэшх яЁюуЁрьь фышээ√х ш ьєЄюЁэ√щ яЁюЎхёё, ш юэ эх юсїюфшЄ№ё  схч т√Ёрцхэшщ яюфюсэюую ёюфхЁцрэш , эю эх яюярфр■∙хую т ъюьхэЄрЁшш ш юёэютэющ ъюф..... ╥хяыют └ыхъёхщ ▐Ё№хтшў aka +; 20.07.2007 ╩юёьхЄшўхёъшх єыєў°хэш  т ъюфх яЁюуЁрьь√, шёяЁртыхэ юфшэ эхёє∙хёЄтхээ√щ сру. ; 18.05.2007 ╙ыєў°хэшх яюэшьрэш  ЁрсюЄ√ яЁюуЁрьь√ чр ёўхЄ т√эхёр юёэютэ√ї ЇєэъЎшщ т юЄфхы№э√х ьръЁюё√ ; 14.05.2007 ╚ёяюы№чютрэшх ьръЁюёют,єфюсюўшЄрхьюё№ яЁюуЁрьь√ шёяюы№чютрэшх ьръЁюёр mcall фы  т√чютр ёшё. ЇєэъЎшщ ; 09.05.2007 ╬с∙р  фюЁрсюЄър ьръЁюёют,чрьхэр эхёъюы№ъю ьхЄюъ, ьшуЁрЎш  ъюфр т edit_box.mac diff --git a/programs/develop/examples/editbox/trunk/editbox.asm b/programs/develop/examples/editbox/trunk/editbox.asm index 4570441af..b90e2e8f1 100644 --- a/programs/develop/examples/editbox/trunk/editbox.asm +++ b/programs/develop/examples/editbox/trunk/editbox.asm @@ -4,27 +4,25 @@ ; - Теплов Алексей www.lrz.land.ru ;заголовок приложения include '..\..\..\..\macros.inc' -; include 'macros.inc' include 'editbox.inc' meos_app_start align 4 use_edit_box procinfo,22,5 ;Область кода -code -;start: ;Точка входа в программу +code ;Точка входа в программу mcall 40,0x27 ;установить маску для ожидаемых событий - ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) и нажатие клавиши +;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) и нажатие клавиши red_win: call draw_window ;первоначально необходимо нарисовать окно align 4 still: ;основной обработчик mcall 10 ;Ожидать события - cmp al,0x1 ;если изменилось положение окна - jz red_win - cmp al,0x2 ;если нажата клавиша то перейти - jz key - cmp al,0x3 ;если нажата кнопка то перейти - jz button + dec eax + jz red_win + dec eax + jz key + dec eax + jz button mouse_edit_boxes editboxes,editboxes_end jmp still ;если ничего из перечисленного то снова в цикл ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -56,7 +54,7 @@ edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only editboxes_end: data_of_code dd 0 mouse_flag dd 0x0 -hed db 'EDITBOX optimization and retype date 14.05.2007',0 +hed db 'EDITBOX optimization and retype date 20.07.2007',0 rb 256 ed_buffer: ;.1: rb 514;256 diff --git a/programs/develop/examples/editbox/trunk/editbox.mac b/programs/develop/examples/editbox/trunk/editbox.mac index 47689a12f..0f628fe0e 100644 --- a/programs/develop/examples/editbox/trunk/editbox.mac +++ b/programs/develop/examples/editbox/trunk/editbox.mac @@ -31,9 +31,9 @@ macro use_general_func mov edx,ed_offset add ebx,2 shl ebx,16 - mov bx,ed_top - add ebx,4 + add ebx,ed_top mov ecx,ed_text_color + add ebx,4 add edx,ed_text mcall ret @@ -47,20 +47,19 @@ ret .draw_bg: mov ebx,ed_left add ebx,1 - shl ebx,16 - mov bx,ed_width - sub ebx,1 mov edx,ed_color + shl ebx,16 + add ebx,ed_width + sub ebx,1 .draw_bg_eax: mov ecx,ed_top mov eax,13 add ecx,1 shl ecx,16 - mov cx,ed_height + add ecx,ed_height dec ecx mcall ret - ;---------------------------------------------------------- ;--- процедура получения количества символов в текущей щирине компонента ;---------------------------------------------------------- @@ -89,7 +88,7 @@ ret lea ebx,[ebx*2+ebx] shl ebx,1 ;imul ebx,6 - add bx,ed_left + add ebx,ed_left mov ecx,ed_top inc ebx add ecx,2 @@ -100,7 +99,7 @@ ret shl ecx,16 mov cx,bp - add cx,ed_height-4 + add ecx,ed_height-4 mov cl_curs_x,ebx mov cl_curs_y,ecx @@ -123,8 +122,8 @@ ret mov ecx,ebx shl ebx,16 mov bx,cx - add bx,ed_width - mov ecx, ed_top + add ebx,ed_width + mov ecx,ed_top mov esi,ecx shl ecx,16 mov cx,si @@ -139,7 +138,7 @@ ret ;--- слева --- mov cx,si mov ebp,ebx - sub bx,ed_width + sub ebx,ed_width mcall ;--- справа --- mov ebx,ebp @@ -534,7 +533,7 @@ edit_ex inc ebx add ebx,ed_left shl ebx,16 - mov bx,6 + add ebx,6 mov edx,ebp call .draw_bg_eax ret @@ -624,12 +623,15 @@ macro are_key_shift_press ;Входные данные edx=ed_size;ecx=ed_pos push eax mov edx,ed_size - mov ecx,ed_pos + mov ecx, ed_pos pusha ;;;;;;;;;;;;;;;;;;;;; +;clear input arrea mov ebp,ed_color mov ebx,dword ed_shift_pos call .sh_cl_ + mov ebp,ed_size + call .clear_bg ;;;;;;;;;;;;;;;;;;;;; popa call .del_char @@ -1075,4 +1077,53 @@ macro debug_func stosb ;записать элемент из регистра al в ячеку памяти es:edi ret ;вернуться чень интересный ход т.к. пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться +} + +;;;;;;;;;;;;;;; +;For LibGui +;;;;;;;;;;;;;;; +macro srt_ed_libgui +{ +ed_width equ [EditBox.ed_width] ;ширина компонента +ed_left equ [EditBox.ed_left] ;положение по оси х +ed_top equ [EditBox.ed_top] ;положение по оси у +ed_color equ [EditBox.ed_color] ;цвет фона компонента +shift_color equ [EditBox.shift_color] ;=0x6a9480 +ed_focus_border_color equ [EditBox.ed_focus_border_color] ;цвет рамки компонента +ed_blur_border_color equ [EditBox.ed_blur_border_color] ;цвет не активного компонента +ed_text_color equ [EditBox.ed_text_color] ;цвет текста +ed_max equ [EditBox.ed_max] ;кол-во символов которые можно максимально ввести +ed_text equ [EditBox.ed_text] ;указатель на буфер +ed_flags equ [EditBox.ed_flags] ;флаги +ed_size equ [EditBox.ed_size] ;кол-во символов +ed_pos equ [EditBox.ed_poz] ;позиция курсора +ed_offset equ [EditBox.ed_offset] ;смещение +cl_curs_x equ [EditBox.cl_curs_x] ;предыдущее координата курсора по х +cl_curs_y equ [EditBox.cl_curs_y] ;предыдущее координата курсора по у +ed_shift_pos equ [EditBox.ed_shift_pos] ;положение курсора +ed_shift_pos_old equ [EditBox.ed_shift_pos_old] ;старое положение курсора +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Bit mask from editbox +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +ed_figure_only= 1000000000000000b ;одни символы +ed_always_focus= 100000000000000b +ed_focus= 10b ;фокус приложения +ed_shift_on= 1000b ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift +ed_shift_on_off=1111111111110111b +ed_shift= 100b ;включается при нажатии на shift т.е. если нажимаю +ed_shift_off= 1111111111111011b +ed_shift_bac= 10000b ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение +ed_shift_bac_cl=1111111111101111b ;очистка при удалении выделения +ed_shift_cl= 1111111111100011b +ed_shift_mcl= 1111111111111011b +ed_left_fl= 100000b +ed_right_fl= 1111111111011111b +ed_offset_fl= 1000000b +ed_offset_cl= 1111111110111111b +ed_insert= 10000000b +ed_insert_cl= 1111111101111111b +ed_mouse_on = 100000000b +ed_mous_adn_b= 100011000b +ed_mouse_on_off=1111111011111111b +ed_height=14 ; высота } \ No newline at end of file