forked from KolibriOS/kolibrios
Modify macros and add History, FAQ.txt
git-svn-id: svn://kolibrios.org@468 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
69252dd603
commit
016062e7e6
@ -1,65 +1,8 @@
|
|||||||
; <Lrz> 04.04.2007 ˆá¯à ¢«¥® ã¯à ¢«¥¨¥ ¬ë誮©, ¯à¨ 㤠«¥¨¨ ¯®á«¥¤¥£® ᨬ¢®« ¢ ¡ãä¥à¥ ¯¨è¥âìáï 0 (ᯠᨡ® Mario79)
|
; SEE YOU File FAQ.txt and HISTORY. Good Like!
|
||||||
; <Lrz> 04.04.2007 Œ®¤¥à¨§¨à®¢ « á¨á⥬㠢뤥«¥¨ï, áãé¥á⢥® ¯¥à¥¤¥« ® ã¯à ¢«¥¨¥ ¨ ®¡à ¡®âª , ¤®¡ ¢«¥® ¡«®ª¨à®¢ ¨ï ®¡à ¡®âª¨ ¤àã£¨å ¡®ªá®¢, ¢® ¢à¥¬ï ¢ë¤¥«¥¨ï ¬ë誮© ⥪áâ , ¤«ï í⮣® ¢ ⥪áâ ¯à®£à ¬¬ë ¥®¡å®¤¨¬® ¤®¡ ¢¨âì ¨¤¥â¨ä¨ª â®à ¡®ªá â.¥. dd 0x0 ¨ ¢ ¥£® ¡ã¤¥â ¯®¬¥é âìáï 㪠⥫ì editbox
|
|
||||||
; <Lrz> 30.03.2007 <20>¥à¥¤¥« « ¯à®æ¥¤ãà㠢뤥«¥¨ï, ⥯¥àì ⥪á⠢뤥«ï¥âáï ⮫쪮 ⮫쪮 ¬ë誮©
|
|
||||||
; <Lrz> 09.03.2007 „®¯¨á « ã¯à ¢«¥¨¥ mouse + shift ¢ë¤¥«¥¨¥ ¨ ¯¥à¥¬¥é¥¨¥
|
|
||||||
; <Lrz> 07.03.2007 „®¯¨á « ã¯à ¢«¥¨¥ á shift home + end ãá¯à ¢¨« ¥áª®«ìª® ¡ £®¢
|
|
||||||
; <Lrz> 06.03.2007 <20>¥à¥¯¨á « ¯®«®áâìî «£®à¨â¬ ã¯à ¢«¥¨ï shift
|
|
||||||
; <Lrz> 15.02.2007 ã«ãç襨¥ áïâ¨ï ¢ë¤¥«¥¨ï ¨ ¯¥à¥à¨á®¢ª¨ ®ç¨é ¥¬®© ®¡« áâ¨, § ç¨â¥«ì® ¯à¨ï⥥ à ¡®â ¥â ª®¬¯®¥â
|
|
||||||
; <Lrz> 13.02.2007 ã¡à « ¯® ¢®§¬®¦®á⨠¬¥àæ ¨¥, ã«ãçè¥ ®¡à ¡®âª ¯¥à¥à¨á®¢ª¨ ä®
|
|
||||||
; ¤®¡ ¢¨« ä¨âçã ¢¥á¥¨ï 0å0 ¯® ¤à¥áã ed_size ¨ ç¥ ã Maxxx32 ¡ë«¨ ¥á®áâ몮¢ª¨ ¢ ª®¤¥. <20>à¨ç¨ ¢ ⮬, çâ® ®¯â¨¬¨§ æ¨ï ¡ë« ᢥ¤¥ ª ⮬ã, çâ® ï ¥ ç¨á⨫ ᨬ¢®«ë ¢ ¡ãä¥à¥, ª®£¤ 㤠«ï«, ï ¯à®áâ® ¨å ¥ ¢ë¢®¤¨«, ¨ ¯®â®¬, ª®£¤ ¢®á¨«áï ®¢ë© ᨬ¢®«, ® ¯®¯à®áâã § â¨à « 㦥 ¨¬¥î騩áï. …᫨ ¡ë, ¯à®£à ¬¬ ®¡à ¡ âë¢ « ª®¥æ áâப¨ ¯® ed_size, ¯à®¡«¥¬ë ¥ ¢®§¨ª«®. <20>® ᥩç á íâ®â ¥¤®áâ ⮪ ¨á¯à ¢«¥.
|
|
||||||
; <Lrz> 01.02.2007 ¤®à ¡®âª edit_box, ¨á¯à ¢¨« ¡ £¨.
|
|
||||||
; <Lrz> 26.01.2007 ®à¬ «ì ï à ¡®â ª®¬¯ ¥â ¨á¯à ¢¨« äãªæ¨î .check_offset
|
|
||||||
; <Lrz> 24.01.2007 ¯®ä¨ªá¥« ¡ £¨ ¢ë§¢ ë¥ ¥ ¯à ¢¨«ìë¬ ª®¤®¬ )).
|
|
||||||
; <Lrz> 22.01.2007 ¨§¡ ¢¨«áï ®â £«îª®¢ ¯à¨ à ¡®â¥ á ¢ë¤¥«¥¨¥¬ ¨ 㤠«¥¨¥, ª®à४â ï à ¡®â ª« ¢¨è¥© del & backspase
|
|
||||||
; <Lrz> 20.01.2007 ॠ«¨§®¢ « ¢ë¤¥«¥¨¥ ⥪áâ ¯® shift
|
|
||||||
; <Lrz> 12.12.2006 ॠ«¨§®¢ « ¯®¤¤¥à¦ªã ª®¯ª¨ insert ¨ ᥣ®¤ï ª®¬¯®¥â ¯®çâ¨ à ¡®â ¥â!!!!
|
|
||||||
; <Lrz> 07.12.2006 ¯à®¤®«¦ ¥âáï à ¡®â ¤ ¯¥à¥à ¡®âª®© ª®¬¯®¥â ,¨§¬¥¥¨ï¬ ¯®¤¢¥à£«¨áì ¬®£¨¥ äãªæ¨¨, ¯¥à¥à ¡®â ¢ë¢®¤ ⥪áâ , â ª ¦¥ «£®à¨â¬ ¢¥á¥¨ï ᨬ¢®«®¢.
|
|
||||||
; <Lrz> 03.09.2006 ¯® ¢®§¬®¦®á⨠®âª § «áï ®â 16 ¡¨â®© à¨ä¬¥â¨ª¨, ¤®¡ ¢¨« ®¢ë¥ ¡ £¨
|
|
||||||
; <Lrz> 09.08.2006 ¯à®¨§¢¥¤¥ ®¯â¨¬¨§ æ¨ï à ¡®âë ª®¯®ª DEL ¨ Backspace, 㬥ìè¥ à §¬¥à ¢ë¯®«ï¥¬®£® ª®¤ .
|
|
||||||
; <Lrz> 21.07.2006 ¤®¡ ¢«¥ äãªæ¨ï ª®¯ª¨ Del, ⥯¥àì ¬®¦® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ®© ª« ¢¨è¨
|
|
||||||
; €¢â®à: …¢â¨å®¢ Œ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru
|
|
||||||
; „ â ¯®á«¥¤¨å ¨§¬¥¥¨©: 13.06.06 10:40
|
|
||||||
; <20> ¯¨è¨â¥ ¢ ¨á室®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box,
|
|
||||||
; íâ® ¢áâ ¢¨â ¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ 襩 ¯à®£à ¬¬ë.
|
|
||||||
; <20>à®æ¥¤ãàë:
|
|
||||||
; edit_box.draw - ¯®« ï ¯¥à¥à¨á®¢ª ;
|
|
||||||
; edit_box.key - ®¡à ¡®âª ª« ¢¨ âãàë;
|
|
||||||
; edit_box.mouse - ®¡à ¡®âª ¬ëè¨;
|
|
||||||
; edit_box.focus - ãáâ ®¢ª 䮪ãá ;
|
|
||||||
; edit_box.blur - ¥£® à §¬ë¢ ¨¥;
|
|
||||||
; edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢.
|
|
||||||
; <20>ਠ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â
|
|
||||||
; ®áâ ¢¨âì 㪠§ ⥫ì áâàãªâãàã.
|
|
||||||
; <20>ਬ¥à áâàãªâãàë:
|
|
||||||
; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text
|
|
||||||
; ¤«¨ , ¢ëá®â , ¢¥àå, 梥â ä® , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à ,
|
|
||||||
; 梥â à ¬ª¨, ¥á«¨ ¥ ¢ë¡à , ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢,
|
|
||||||
; 㪠§ â¥«ì ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ¨âáï ᨬ¢®«ë. <20>ãä¥à ¤®«¦¥
|
|
||||||
; ®ª 稢 âìáï ã«¥¬, ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 255:
|
|
||||||
; some_edit_text:
|
|
||||||
; rb 256 ;255+1
|
|
||||||
|
|
||||||
; <20>ਬ¥à ¢ë§®¢ ¯à®æ¥¤ãàë:
|
|
||||||
; mov edi,some_edit
|
|
||||||
; call edit_box.draw
|
|
||||||
|
|
||||||
; <20>ਠ¢ë§®¢¥ ¯à®æ¥¤ãàë edit_box.key ª®¤ ª« ¢¨è¨ ¤®«¦¥
|
|
||||||
; 室¨âáï ¢ ah, â® ¥áâì ¯¥à¥¤ ¢ë§®¢®¬ í⮩ ¯à®æ¥¤ãàë ¤® ¢ë§¢ âì
|
|
||||||
; 2-ãî á¨á¥¬ãî äãªæ¨î, ¯à¨¬¥à:
|
|
||||||
; mov eax,2
|
|
||||||
; int 0x40
|
|
||||||
; mov edi,some_edit1
|
|
||||||
; call edit_box.key
|
|
||||||
; mov edi,some_edit2
|
|
||||||
; call edit_box.key
|
|
||||||
; <20>¥à¥¤ ¢ë§®¢®¬ ®¡à ¡®â稪 ¬ëè¨ á«¥¤ã¥â ¯à®¢¥à¨âì, ï¥âáï «¨ ®ª®
|
|
||||||
; ªâ¨¢ë¬.
|
|
||||||
; …᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥ § ¯à¥¤¥« ¬¨ edit box
|
|
||||||
; 䮪ãá â¥àï¥âáï.
|
|
||||||
;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;
|
||||||
include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥ ®¡«¥£ç¨âì ¦¨§ì :) á¯¥æ¨ «ì® ¤«ï editbox
|
include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥ ®¡«¥£ç¨âì ¦¨§ì :) á¯¥æ¨ «ì® ¤«ï editbox
|
||||||
;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;
|
||||||
macro use_edit_box
|
macro use_edit_box structure_of_potock,scr_h,scr_w
|
||||||
{
|
{
|
||||||
edit_box:
|
edit_box:
|
||||||
ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â
|
ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â
|
||||||
@ -909,13 +852,9 @@ edit_ex
|
|||||||
je @f
|
je @f
|
||||||
jmp ._blur
|
jmp ._blur
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
;--- ¬®¤¨ä¨æ¨à㥬 ª®®à¤¨ âë, â.¥. ¤®¡ ¢«ï¥¬ ª®®à¤¨ âë ®ª .
|
|
||||||
;----------------------------------------------------------
|
|
||||||
@@: mcall 9,structure_of_potock,-1
|
|
||||||
;----------------------------------------------------------
|
|
||||||
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® 0 â.¥ ¢á¥© ®¡« á⨠íªà
|
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® 0 â.¥ ¢á¥© ®¡« á⨠íªà
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
mcall 37,0
|
@@: mcall 37,0
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
;--- € ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §ë¥ áâ®à®ë?
|
;--- € ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §ë¥ áâ®à®ë?
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
@ -927,7 +866,10 @@ edit_ex
|
|||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
mov ebx,dword [ecx+38]
|
mov ebx,dword [ecx+38]
|
||||||
add ebx,ed_top
|
add ebx,ed_top
|
||||||
add ebx,22
|
if scr_h eq
|
||||||
|
else
|
||||||
|
add ebx,scr_h
|
||||||
|
end if
|
||||||
cmp ax,bx
|
cmp ax,bx
|
||||||
jl ._blur;.mouse_end_no_focus
|
jl ._blur;.mouse_end_no_focus
|
||||||
|
|
||||||
@ -939,7 +881,10 @@ edit_ex
|
|||||||
|
|
||||||
mov ebx,dword [ecx+34]
|
mov ebx,dword [ecx+34]
|
||||||
add ebx,ed_left
|
add ebx,ed_left
|
||||||
add ebx,5
|
if scr_w eq
|
||||||
|
else
|
||||||
|
add ebx,scr_w
|
||||||
|
end if
|
||||||
cmp ax,bx
|
cmp ax,bx
|
||||||
jl ._blur;.mouse_end_no_focus
|
jl ._blur;.mouse_end_no_focus
|
||||||
|
|
||||||
@ -957,7 +902,11 @@ edit_ex
|
|||||||
xor edx,edx
|
xor edx,edx
|
||||||
sub eax,ed_left
|
sub eax,ed_left
|
||||||
sub eax,ebx
|
sub eax,ebx
|
||||||
sub eax,5-2 ;â®«é¨ ®¡¢®¤ª¨ ᪨ =5
|
if scr_w eq
|
||||||
|
else
|
||||||
|
add ebx,scr_w
|
||||||
|
sub eax,2
|
||||||
|
end if
|
||||||
mov ebx,6
|
mov ebx,6
|
||||||
div bx
|
div bx
|
||||||
add eax,ed_offset
|
add eax,ed_offset
|
||||||
@ -1037,8 +986,10 @@ edit_ex
|
|||||||
mov ecx,structure_of_potock
|
mov ecx,structure_of_potock
|
||||||
mov ebx,dword [ecx+34]
|
mov ebx,dword [ecx+34]
|
||||||
add ebx,ed_left
|
add ebx,ed_left
|
||||||
add ebx,5
|
if scr_w eq
|
||||||
|
else
|
||||||
|
add ebx,scr_w
|
||||||
|
end if
|
||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
jb .mleft
|
jb .mleft
|
||||||
|
|
||||||
@ -1098,8 +1049,8 @@ edit_ex
|
|||||||
; ret
|
; ret
|
||||||
.mleft:
|
.mleft:
|
||||||
mov eax,ed_pos
|
mov eax,ed_pos
|
||||||
test eax,eax
|
cmp eax,0
|
||||||
jz .mwigvag
|
jbe .mwigvag
|
||||||
dec eax
|
dec eax
|
||||||
call .check_offset
|
call .check_offset
|
||||||
push eax
|
push eax
|
||||||
@ -1144,20 +1095,24 @@ ed_mouse_on = 100000000b
|
|||||||
ed_mous_adn_b= 100011000b
|
ed_mous_adn_b= 100011000b
|
||||||
ed_mouse_on_off=1111111011111111b
|
ed_mouse_on_off=1111111011111111b
|
||||||
ed_height=14 ; ¢ëá®â
|
ed_height=14 ; ¢ëá®â
|
||||||
macro draw_edit_boxes start,end
|
macro draw_edit_boxes start,_end,use_f9,structure_of_potock
|
||||||
{
|
{
|
||||||
|
if use_f9 eq
|
||||||
|
else
|
||||||
|
mcall 9,structure_of_potock,-1
|
||||||
|
end if
|
||||||
mov edi,start
|
mov edi,start
|
||||||
mov ecx,((end-start)/ed_struc_size)
|
mov ecx,((_end-start)/ed_struc_size)
|
||||||
@@:
|
@@:
|
||||||
call edit_box.draw
|
call edit_box.draw
|
||||||
add edi,ed_struc_size
|
add edi,ed_struc_size
|
||||||
loop @b
|
loop @b
|
||||||
}
|
}
|
||||||
|
|
||||||
macro mouse_edit_boxes start,end
|
macro mouse_edit_boxes start,_end
|
||||||
{
|
{
|
||||||
mov edi,start
|
mov edi,start
|
||||||
mov ecx,((end-start)/ed_struc_size)
|
mov ecx,((_end-start)/ed_struc_size)
|
||||||
@@:
|
@@:
|
||||||
call edit_box.mouse
|
call edit_box.mouse
|
||||||
add edi,ed_struc_size
|
add edi,ed_struc_size
|
||||||
@ -1224,8 +1179,12 @@ macro edit_boxes_set_sys_color start,end,color_table
|
|||||||
loop @b
|
loop @b
|
||||||
}
|
}
|
||||||
|
|
||||||
macro draw_edit_box ed_ptr
|
macro draw_edit_box ed_ptr,use_f9,structure_of_potock
|
||||||
{
|
{
|
||||||
|
if use_f9 eq
|
||||||
|
else
|
||||||
|
mcall 9,structure_of_potock,-1
|
||||||
|
end if
|
||||||
mov edi,ed_ptr
|
mov edi,ed_ptr
|
||||||
call edit_box.draw
|
call edit_box.draw
|
||||||
}
|
}
|
||||||
@ -1241,3 +1200,13 @@ macro key_edit_box ed_ptr
|
|||||||
mov edi,ed_ptr
|
mov edi,ed_ptr
|
||||||
call edit_box.key
|
call edit_box.key
|
||||||
}
|
}
|
||||||
|
macro default_box ed_ptr
|
||||||
|
{
|
||||||
|
pusha
|
||||||
|
; xor eax,eax
|
||||||
|
; mov ed_shift_pos,eax
|
||||||
|
; mov ed_shift_pos_old,eax
|
||||||
|
and word ed_flags,ed_shift_cl
|
||||||
|
; mov ed_offset,eax
|
||||||
|
popa
|
||||||
|
}
|
187
programs/develop/examples/editbox/trunk/FAQ.txt
Normal file
187
programs/develop/examples/editbox/trunk/FAQ.txt
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
Посдедная модификация
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;Структурное описание возможности компоента и моделей его использования.
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
Напишите в исходном коде своей программы use_edit_box,
|
||||||
|
это вставит необходимые процедуры в код вашей программы.
|
||||||
|
Процедуры:
|
||||||
|
edit_box.draw - полная перерисовка;
|
||||||
|
edit_box.key - обработка клавиатуры;
|
||||||
|
edit_box.mouse - обработка мыши;
|
||||||
|
edit_box.focus - установка фокуса;
|
||||||
|
edit_box.blur - его размывание;
|
||||||
|
edit_box.get_n - получить количество прорисовываемых символов.
|
||||||
|
При вызове любых из этих процедур в регистре edi следует
|
||||||
|
оставить указатель на структуру.
|
||||||
|
Пример структуры:
|
||||||
|
some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text
|
||||||
|
длина, высота, верх, цвет фона, цвет рамки, если выбран,
|
||||||
|
цвет рамки, если не выбран, максимальное количество символов,
|
||||||
|
указатель на буфер, где будут хранится символы. Буфер должен
|
||||||
|
оканчиваться нулем, например если максимальное количество 255:
|
||||||
|
some_edit_text:
|
||||||
|
rb 256 ;255+1
|
||||||
|
Пример вызова процедуры:
|
||||||
|
mov edi,some_edit
|
||||||
|
call edit_box.draw
|
||||||
|
При вызове процедуры edit_box.key код клавиши должен
|
||||||
|
находится в ah, то есть перед вызовом этой процедуры надо вызвать
|
||||||
|
2-ую сисемную функцию, например:
|
||||||
|
mov eax,2
|
||||||
|
int 0x40
|
||||||
|
mov edi,some_edit1
|
||||||
|
call edit_box.key
|
||||||
|
mov edi,some_edit2
|
||||||
|
call edit_box.key
|
||||||
|
Перед вызовом обработчика мыши следует проверить, является ли окно
|
||||||
|
активным.
|
||||||
|
Если щелчок мыши был пройзведен за пределами edit box
|
||||||
|
фокус теряется.
|
||||||
|
:::::::::::::::::::::::::
|
||||||
|
;;;Макросы, и передаваемые им параметры
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
***********
|
||||||
|
use_edit_box
|
||||||
|
данный макрос вставляет общий код editbox
|
||||||
|
structure_of_potock - указатель на информационную стрктуру 9 фунции - обязательный параметр
|
||||||
|
|
||||||
|
Если вы используете при прорисовке окна
|
||||||
|
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
|
||||||
|
то 0xb3AABBCC - третий бит - который говорит что координаты отчитывать от клиентской области, вам нужно указать обязательно два этих параметра
|
||||||
|
В других случаях передавать эти параметры не нужно
|
||||||
|
scr_h - не обязательный параметр обычно 22
|
||||||
|
scr_w - не обязательный параметр обычно 5
|
||||||
|
***********
|
||||||
|
mouse_edit_boxes
|
||||||
|
код обработки мышки, вставляется обычно посел обработки всех предыдуших событий
|
||||||
|
Передаваемые параметры
|
||||||
|
editboxes - указатель на информационную струкуру боксов
|
||||||
|
editboxes_end - конец информационной структуры боксов
|
||||||
|
|
||||||
|
Как под вариант существует макрос
|
||||||
|
mouse_edit_box - он используется если выводитьсяч один бокс
|
||||||
|
Передаваемый параметр
|
||||||
|
editboxes - указатель на информационную струкуру боксов
|
||||||
|
Больше никаких параметров передавать не нужно.
|
||||||
|
**********
|
||||||
|
key_edit_boxes - макрос обрабоки клавиш боксами вставляется после того как происходит обработка события что нажата клавиша
|
||||||
|
Передаваемые параметры
|
||||||
|
editboxes - указатель на информационную струкуру боксов
|
||||||
|
editboxes_end - конец информационной структуры боксов
|
||||||
|
|
||||||
|
Как под вариант существует макрос
|
||||||
|
key_edit_box - он используется если выводитьсяч один бокс
|
||||||
|
Передаваемый параметр
|
||||||
|
editboxes - указатель на информационную струкуру боксов
|
||||||
|
Больше никаких параметров передавать не нужно.
|
||||||
|
**********
|
||||||
|
draw_edit_boxes - макрос для вывода боксов используется в выводе окна
|
||||||
|
Передаваемые параметры
|
||||||
|
editboxes - указатель на информационную струкуру боксов
|
||||||
|
editboxes_end - конец информационной структуры боксов
|
||||||
|
use_f9 и structure_of_potock - при передаче этого параметра - при перерисовки боксов будет исползована фунция
|
||||||
|
mcall 9,structure_of_potock,-1
|
||||||
|
которая получает данные о окне и складывает параметры по адресу structure_of_potock- его то же обязательно нужно передавать!!!!
|
||||||
|
Если в программе уже используется эта фунция, то не нужно указывать данные параметр!!!!
|
||||||
|
|
||||||
|
Как под вариант существует макрос
|
||||||
|
draw_edit_box - он используется если выводитьсяч один бокс
|
||||||
|
Передаваемый параметр
|
||||||
|
editboxes - указатель на информационную струкуру боксов
|
||||||
|
use_f9 и structure_of_potock - при передаче этого параметра - при перерисовки боксов будет исползована фунция
|
||||||
|
mcall 9,structure_of_potock,-1
|
||||||
|
которая получает данные о окне и складывает параметры по адресу structure_of_potock- его то же обязательно нужно передавать!!!!
|
||||||
|
Если в программе уже используется эта фунция, то не нужно указывать данные параметр!!!!
|
||||||
|
Больше никаких параметров передавать не нужно.
|
||||||
|
**********
|
||||||
|
default_box - макрос который приводит основые данные макроса по дефолту т.е. Снимает битовую матрицу выделения
|
||||||
|
Специально дла KFM :)) Нужно добавить этот код при при обработчике yes or no при копировании. Если будет вести себя неадекватно - необходимо раскоментировать строки в данном макросе
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Q:
|
||||||
|
Возникла пара проблем:
|
||||||
|
1) Длина максимально набираемого текста ничем не ограничена, в результате при превышении размера буфера затираются данные, которые идут после буфера или код, если он там расположен.
|
||||||
|
2) Положение элемента фиксировано, хотелось бы работать с динамически вычисляемыми значениями. Например, если размер окна изменился, а элемент должен располагаться по центру окна всегда.
|
||||||
|
|
||||||
|
A:
|
||||||
|
1) Длинна набираемого текста ограничена, вот смотри:
|
||||||
|
edit2 edit_box 250,5,30,0xffffff,0,0,0,308,hed,ed_focus,53 - это пример инициализации editbox
|
||||||
|
Итак попорядку:
|
||||||
|
Это макрос инициализации структуры
|
||||||
|
struc edit_box width,left,top,color,focus_border_color,blur_border_color,text_color,max,text,flags,size
|
||||||
|
{
|
||||||
|
.width dd width
|
||||||
|
.left dd left
|
||||||
|
.top dd top
|
||||||
|
.color dd color
|
||||||
|
.focus_border_color dd focus_border_color
|
||||||
|
.blur_border_color dd blur_border_color
|
||||||
|
.text_color dd text_color
|
||||||
|
.max dd max
|
||||||
|
.text dd text
|
||||||
|
.flags dw flags+0
|
||||||
|
.size dd size+0
|
||||||
|
.pos dd 0 - где будет находиться курсор
|
||||||
|
.offset dd 0
|
||||||
|
.cl_curs_x dd 0
|
||||||
|
.cl_curs_y dd 0
|
||||||
|
.shift dd 0
|
||||||
|
.shift_old dd 0
|
||||||
|
}
|
||||||
|
250 - это длинна editbox width
|
||||||
|
5 - отступ от левого края left
|
||||||
|
30 - отступ с верха top
|
||||||
|
0xffffff - цвет внутри editbox
|
||||||
|
0x6a9480 - цвет при выделении мышкой или по shift
|
||||||
|
0 - focus_border_color цвет рамки editbox, когда в фокусе т.е. активен editbox
|
||||||
|
0 - blur_border_color цвет рамки editbox, когда в не фокусе т.е. не активен editbox
|
||||||
|
0 - text_color цвет текста editbox.
|
||||||
|
308 - max максимальное кол-во текста которое можноввести (ответ на твой вопрос, обрати внимание на то что это значение должно быть меньше на 2 чем размер буффера!! Иначе у тебя будут затерты 2 байта следующие после буффера!)
|
||||||
|
hed - tex указатель на начало буффера
|
||||||
|
ed_focus - флаг(и0 в данном случае установить фокус этому Editbox'у - flags
|
||||||
|
53 - текущее значение размера size. его необходимо указывать, если тебе нужно уже отображать существующий текст. Или можно еще сделать так, ты указываешь, буфер с текстом, но тут ничего не пишешь, или 0, тогда, если человек начинает вводить свой, существующий текст уже будет автоматом затерт.
|
||||||
|
53 - положение курсора - говорим, что бы он находился в конце строчки на последним символе, больше это значение быть не должно, т.к. иначе глюки :)))
|
||||||
|
<DATA> - тут расположен сам буффер, + текст.
|
||||||
|
hed db 'EDITBOX optimization and retype <Lrz> date 09.03.2007',0 ; итого 54 символа
|
||||||
|
rb 256 ; 256+54 =310 у меня указан размер 308 - 2 байта на систеиные нужды (по идее должно хватать одного, но где - то есть косяк в коде)
|
||||||
|
|
||||||
|
2) Изменять положение при изменении размеров окна. Вообще это не задача editbox, но это достаточно просто сделать,
|
||||||
|
.width dd width
|
||||||
|
.left dd left
|
||||||
|
.top dd top
|
||||||
|
Вот часть стуктуры.
|
||||||
|
|
||||||
|
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
|
;DATA данные
|
||||||
|
editboxes:
|
||||||
|
edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
|
||||||
|
edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
|
||||||
|
edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
|
||||||
|
edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
|
||||||
|
editboxes_end:
|
||||||
|
|
||||||
|
|
||||||
|
А это пример инициализации
|
||||||
|
Итак получаем
|
||||||
|
lea eax, editboxes - в еах указатель на данные боксов.
|
||||||
|
Далее вносим по адресу
|
||||||
|
mov dword [eax], новое значение width
|
||||||
|
mov dword [eax+4], новое значение left
|
||||||
|
mov dword [eax+8], новое значение top
|
||||||
|
|
||||||
|
Это все для первого editbox
|
||||||
|
для второго
|
||||||
|
add eax,ed_struc_size
|
||||||
|
; это размерность в байтах записи длинны одного editbox
|
||||||
|
И снова
|
||||||
|
mov dword [eax], новое значение width
|
||||||
|
mov dword [eax+4], новое значение left
|
||||||
|
mov dword [eax+8], новое значение top
|
||||||
|
Это уже для второго editbox
|
||||||
|
|
||||||
|
И так далее ))).
|
||||||
|
Надеюсь я для тебя прояснил общий алгоритм изменения
|
30
programs/develop/examples/editbox/trunk/History
Normal file
30
programs/develop/examples/editbox/trunk/History
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
История и копирайты. Распространяется по лицензии GPL
|
||||||
|
|
||||||
|
P.S. История пишится мертвыми зайцами..... (R) Магазинчик БО
|
||||||
|
Да, еще кто - то спрашивал пишут ли программеры на асме нецензурно - конечно нет, но да бы не разочаровать публику ....
|
||||||
|
You bunny wrote ..... в продолжении все тех же кроликов, которые все пишут и пишут ......
|
||||||
|
Это не много фольклера, связанное, с тем, что написание программ длинные и муторный процесс, и он не обходиться без выражений подобного содержания, но не попадающего в коментарии и основной код.....
|
||||||
|
|
||||||
|
Теплов Алексей Юрьевич aka <Lrz>
|
||||||
|
; <Lrz> 19.04.2007 Общая доработка макросов
|
||||||
|
; <Lrz> 14.04.2007 Исправлено управление мышкой, при удалении последнего символа в буфере пишеться 0 (спасибо Mario79)
|
||||||
|
; <Lrz> 04.04.2007 Модернизировал систему выделения, существенно переделано управление и обработка, добавленно блокирования обработки других боксов, во время выделения мышкой текста, для этого в текст программы необходимо добавить идентификатор бокса т.е. dd 0x0 и в него будет помещаться укаатель на editbox
|
||||||
|
; <Lrz> 30.03.2007 Переделал процедуру выделения, теперь текст выделяется только только мышкой
|
||||||
|
; <Lrz> 09.03.2007 Дописал управление mouse + shift выделение и перемещение
|
||||||
|
; <Lrz> 07.03.2007 Дописал управление с shift home + end усправил несколько багов
|
||||||
|
; <Lrz> 06.03.2007 Переписал полностью алгоритм управления shift
|
||||||
|
; <Lrz> 15.02.2007 улучшение снятия выделения и перерисовки очищаемой области, значительно приятнее работает компонент
|
||||||
|
; <Lrz> 13.02.2007 убрал по возможности мерцание, улучшена обработка перерисовки фона
|
||||||
|
; добавил фитчу внесения 0х0 по адресу ed_size иначе у Maxxx32 были несостыковки в коде. Причина в том, что оптимизация была сведена к тому, что я не чистил символы в буфере, когда удалял, я просто их не выводил, и потом, когда вносился новый символ, он попросту затирал уже имеющийся. Если бы, программа обрабатывала конец строки по ed_size, проблемы не возникло. Но сейчас этот недостаток исправлен.
|
||||||
|
; <Lrz> 01.02.2007 доработка edit_box, исправил баги.
|
||||||
|
; <Lrz> 26.01.2007 нормальная работа компанента исправил фукцию .check_offset
|
||||||
|
; <Lrz> 24.01.2007 пофиксел баги вызваные не правильным кодом )).
|
||||||
|
; <Lrz> 22.01.2007 избавился от глюков при работе с выделением и удаление, корректная работа клавишей del & backspase
|
||||||
|
; <Lrz> 20.01.2007 реализовал выделение текста по shift
|
||||||
|
; <Lrz> 12.12.2006 реализовал поддержку кнопки insert и сегодя компонент почти работает!!!!
|
||||||
|
; <Lrz> 07.12.2006 продолжается работа над переработкой компонента,изменениям подверглись многие функции, переработан вывод текста, а така же алгоритм внесения символов.
|
||||||
|
; <Lrz> 03.09.2006 по возможности отказался от 16 битной арифметики, добавил новые баги
|
||||||
|
; <Lrz> 09.08.2006 произведена оптимизация работы конпок DEL и Backspace, уменьшен размер выполняемого кода.
|
||||||
|
; <Lrz> 21.07.2006 добавлена функция кнопки Del, теперь можно удалять символы при помощи данной клавиши
|
||||||
|
; после этого времени указанного ниже, доработкой компонента занимался я...
|
||||||
|
; Автор: Евтихов Максим (Maxxxx32) email: maxxxxm@mail.ru дата релиза 13.06.06 10:40
|
@ -1,5 +1,4 @@
|
|||||||
; <Lrz> 30.03.2007 ¯à®¨§¢¥¤¥ ®¯â¨¬¨§ æ¨ï à ¡®âë ª®¯®ª DEL ¨ Backspace? 㬥ìè¥ à §¬¥à ¢ë¯®«ï¥¬®£® ª®¤ .
|
;<3B> á¯à®áâà ï¥âáï ¯® «¨æ¥§¨¨ GPL SEE YOU File FAQ.txt and HISTORY. Good Like!
|
||||||
;<3B>ä䥪⨢®¥ ¯à®£à ¬¬¨à®¢ ¨¥ ¢ KOLIBRI
|
|
||||||
;Ž¯â¨¬¨§¨à®¢ ë© ª®¬¯®¥â EditBox (ˆáå®¤ë© ¢ ਠ⠮â Maxxxx32)
|
;Ž¯â¨¬¨§¨à®¢ ë© ª®¬¯®¥â EditBox (ˆáå®¤ë© ¢ ਠ⠮â Maxxxx32)
|
||||||
;Ž¯â¨¬¨§ æ¨ï ª®¬ ¤.
|
;Ž¯â¨¬¨§ æ¨ï ª®¬ ¤.
|
||||||
;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru
|
;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru
|
||||||
@ -16,7 +15,7 @@ use32 ;
|
|||||||
dd 0x0,0x0 ; 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨.
|
dd 0x0,0x0 ; 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨.
|
||||||
include 'macros.inc'
|
include 'macros.inc'
|
||||||
include 'editbox.inc'
|
include 'editbox.inc'
|
||||||
use_edit_box
|
use_edit_box structure_of_potock,22,5
|
||||||
;Ž¡« áâì ª®¤
|
;Ž¡« áâì ª®¤
|
||||||
start: ;’®çª ¢å®¤ ¢ ¯à®£à ¬¬ã
|
start: ;’®çª ¢å®¤ ¢ ¯à®£à ¬¬ã
|
||||||
mcall 40,0x27 ;ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩
|
mcall 40,0x27 ;ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩
|
||||||
@ -24,8 +23,7 @@ start: ;
|
|||||||
red_win:
|
red_win:
|
||||||
call draw_window ;¯¥à¢® ç «ì® ¥®¡å®¤¨¬® à¨á®¢ âì ®ª®
|
call draw_window ;¯¥à¢® ç «ì® ¥®¡å®¤¨¬® à¨á®¢ âì ®ª®
|
||||||
still: ;®á®¢®© ®¡à ¡®â稪
|
still: ;®á®¢®© ®¡à ¡®â稪
|
||||||
mcall 10 ;Ž¦¨¤ âì ᮡëâ¨ï ¢ â¥ç¥¨¥ 2 ¬¨««¨á¥ªã¤
|
mcall 10 ;Ž¦¨¤ âì ᮡëâ¨ï
|
||||||
|
|
||||||
cmp al,0x1 ;¥á«¨ ¨§¬¥¨«®áì ¯®«®¦¥¨¥ ®ª
|
cmp al,0x1 ;¥á«¨ ¨§¬¥¨«®áì ¯®«®¦¥¨¥ ®ª
|
||||||
jz red_win
|
jz red_win
|
||||||
cmp al,0x2 ;¥á«¨ ¦ â ª« ¢¨è â® ¯¥à¥©â¨
|
cmp al,0x2 ;¥á«¨ ¦ â ª« ¢¨è â® ¯¥à¥©â¨
|
||||||
@ -50,7 +48,7 @@ key:
|
|||||||
draw_window: ;à¨á®¢ ¨¥ ®ª ¯à¨«®¦¥¨ï
|
draw_window: ;à¨á®¢ ¨¥ ®ª ¯à¨«®¦¥¨ï
|
||||||
mcall 12,1
|
mcall 12,1
|
||||||
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
|
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
|
||||||
draw_edit_boxes editboxes,editboxes_end ;à¨á®¢ ¨¥ edit box'®¢
|
draw_edit_boxes editboxes,editboxes_end,use_f9,structure_of_potock ;à¨á®¢ ¨¥ edit box'®¢
|
||||||
mcall 12,2
|
mcall 12,2
|
||||||
ret
|
ret
|
||||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||||
@ -63,7 +61,7 @@ edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
|
|||||||
editboxes_end:
|
editboxes_end:
|
||||||
data_of_code dd 0
|
data_of_code dd 0
|
||||||
mouse_flag dd 0x0
|
mouse_flag dd 0x0
|
||||||
hed db 'EDITBOX optimization and retype <Lrz> date 13.04.2007',0
|
hed db 'EDITBOX optimization and retype <Lrz> date 19.04.2007',0
|
||||||
rb 256
|
rb 256
|
||||||
ed_buffer:
|
ed_buffer:
|
||||||
;.1: rb 514;256
|
;.1: rb 514;256
|
||||||
|
Loading…
Reference in New Issue
Block a user