/programs/develop/examples/editbox/trunk/EDITBOX.INC |
---|
1,65 → 1,8 |
; <Lrz> 04.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 |
; ¯¨è¨â¥ ¢ ¨á室®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë 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 |
; 䮪ãá â¥àï¥âáï. |
; SEE YOU File FAQ.txt and HISTORY. Good Like! |
;;;;;;;;;;;;;;;;;; |
include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥ ®¡«¥£ç¨âì ¦¨§ì :) á¯¥æ¨ «ì® ¤«ï editbox |
;;;;;;;;;;;;;;;;;; |
macro use_edit_box |
macro use_edit_box structure_of_potock,scr_h,scr_w |
{ |
edit_box: |
ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â |
66,7 → 9,7 |
ed_left equ [edi+4] ;¯®«®¦¥¨¥ ¯® ®á¨ å |
ed_top equ [edi+8] ;¯®«®¦¥¨¥ ¯® ®á¨ ã |
ed_color equ [edi+12] ;梥â ä® ª®¬¯®¥â |
shift_color equ [edi+16] ;=0x6a9480 |
shift_color equ [edi+16] ;=0x6a9480 |
ed_focus_border_color equ [edi+20] ;梥â à ¬ª¨ ª®¬¯®¥â |
ed_blur_border_color equ [edi+24] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â |
ed_text_color equ [edi+28] ;梥â ⥪áâ |
184,7 → 127,7 |
mov ecx,cl_curs_y |
jmp .draw_curs |
.draw_cursor: |
mov edx,ed_text_color |
mov edx,ed_text_color |
mov ebx,ed_pos |
mov ecx,ed_offset |
sub ebx,ecx |
751,9 → 694,9 |
pusha |
mov eax,ed_size |
mov ebx,ed_text |
test eax,eax |
test eax,eax |
add eax,ebx |
jne @f |
jne @f |
inc eax |
@@: xor ebx,ebx |
mov [eax],bl |
909,13 → 852,9 |
je @f |
jmp ._blur |
;---------------------------------------------------------- |
;--- ¬®¤¨ä¨æ¨à㥬 ª®®à¤¨ âë, â.¥. ¤®¡ ¢«ï¥¬ ª®®à¤¨ âë ®ª . |
;---------------------------------------------------------- |
@@: mcall 9,structure_of_potock,-1 |
;---------------------------------------------------------- |
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® 0 â.¥ ¢á¥© ®¡« á⨠íªà |
;---------------------------------------------------------- |
mcall 37,0 |
@@: mcall 37,0 |
;---------------------------------------------------------- |
;--- ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §ë¥ áâ®à®ë? |
;---------------------------------------------------------- |
927,7 → 866,10 |
;---------------------------------------------------------- |
mov ebx,dword [ecx+38] |
add ebx,ed_top |
add ebx,22 |
if scr_h eq |
else |
add ebx,scr_h |
end if |
cmp ax,bx |
jl ._blur;.mouse_end_no_focus |
939,7 → 881,10 |
mov ebx,dword [ecx+34] |
add ebx,ed_left |
add ebx,5 |
if scr_w eq |
else |
add ebx,scr_w |
end if |
cmp ax,bx |
jl ._blur;.mouse_end_no_focus |
957,7 → 902,11 |
xor edx,edx |
sub eax,ed_left |
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 |
div bx |
add eax,ed_offset |
1037,17 → 986,19 |
mov ecx,structure_of_potock |
mov ebx,dword [ecx+34] |
add ebx,ed_left |
add ebx,5 |
if scr_w eq |
else |
add ebx,scr_w |
end if |
cmp eax,ebx |
jb .mleft |
cmp eax,ebx |
jb .mleft |
add ebx,ed_width |
cmp eax,ebx |
ja .mright |
add ebx,ed_width |
cmp eax,ebx |
ja .mright |
sub ebx,ed_width |
sub ebx,ed_width |
xor edx,edx |
sub eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨ âë ¤® editbox ¯® ®á¨ å |
mov ebx,6 |
1057,13 → 1008,13 |
;;;;;;;;;;;;;;;;;; |
;®«ã稫¨ ª®®à¤¨ âë ¢ eax ¬ë誨, â.¥. ªã¤ ® ¯¥à¥¬¥á⨫ áì |
;¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å |
add eax,ed_offset ;¤®¡ ¢¨¬ ᬥ饨¥ |
cmp eax,dword ed_size ;¥á«¨ ¢ë諨 § ¯à¥¤¥«ë, â® ¨ç¥£® ¥ ¤¥« âì |
ja .mwigvag |
add eax,ed_offset ;¤®¡ ¢¨¬ ᬥ饨¥ |
cmp eax,dword ed_size ;¥á«¨ ¢ë諨 § ¯à¥¤¥«ë, â® ¨ç¥£® ¥ ¤¥« âì |
ja .mwigvag |
.mdraw: |
mov dword ed_pos,eax ;á®åà ¨¬ ®¢®¥ § 票¥ |
;¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å |
mov ecx,dword ed_shift_pos |
mov ecx,dword ed_shift_pos |
mov ebx,dword ed_shift_pos_old |
mov dword ed_shift_pos_old,eax ;¢¥á¥¬ ®¢®¥ § 票¥ áâ ன ¯®§¨æ¨¨ ªãàá®à |
;¯à®¢¥àª ¨ à¨á®¢ ¨¥ § ªà è¥ëå ®¡« á⥩ |
1072,7 → 1023,7 |
jb .msmaller ;¤¢¨¦¥¨¥ ¡ë«® -> |
cmp ebx,eax ;¤¢¨¦¥¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤ ¤¢¨¦¥¨¥ ¯à®¨á室¨â |
ja .m1_shem ;¥á«¨ ¡ë«® ¤¢¨¦¥¨¥ <- ⮠㦮 § ªà á¨âì ®¡« áâì |
je .mwigvag ;¥á«¨ ¨§¬¥¥¨ï ¥ ¡ë«®, â® ¨ç¥£® ¥ ¤¥« âì |
je .mwigvag ;¥á«¨ ¨§¬¥¥¨ï ¥ ¡ë«®, â® ¨ç¥£® ¥ ¤¥« âì |
mov ebp,ed_color ;âãâ 㦮 ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old |
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos |
call .sh_cl_ |
1088,39 → 1039,39 |
.m1_shem: |
mov ebp,shift_color |
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos |
mov ebx,ecx |
mov ebx,ecx |
call .sh_cl_ |
jmp .mwigvag |
.mwigvag: |
and word ed_flags,ed_shift_mcl |
jmp .draw_cursor_text |
jmp .draw_cursor_text |
; popa |
; ret |
.mleft: |
mov eax,ed_pos |
test eax,eax |
jz .mwigvag |
dec eax |
call .check_offset |
push eax |
mov ebx,ed_shift_pos |
mov ebp,shift_color |
call .sh_cl_ |
pop eax |
jmp .mdraw |
mov eax,ed_pos |
cmp eax,0 |
jbe .mwigvag |
dec eax |
call .check_offset |
push eax |
mov ebx,ed_shift_pos |
mov ebp,shift_color |
call .sh_cl_ |
pop eax |
jmp .mdraw |
.mright: |
mov eax,ed_pos |
mov ebx,ed_size |
cmp eax,ebx |
jae .mwigvag |
inc eax |
call .check_offset |
mov ebx,ed_shift_pos |
mov ebp,shift_color |
push eax |
call .sh_cl_ |
pop eax |
jmp .mdraw |
mov eax,ed_pos |
mov ebx,ed_size |
cmp eax,ebx |
jae .mwigvag |
inc eax |
call .check_offset |
mov ebx,ed_shift_pos |
mov ebp,shift_color |
push eax |
call .sh_cl_ |
pop eax |
jmp .mdraw |
} |
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë |
1144,10 → 1095,14 |
ed_mous_adn_b= 100011000b |
ed_mouse_on_off=1111111011111111b |
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 ecx,((end-start)/ed_struc_size) |
mov ecx,((_end-start)/ed_struc_size) |
@@: |
call edit_box.draw |
add edi,ed_struc_size |
1154,10 → 1109,10 |
loop @b |
} |
macro mouse_edit_boxes start,end |
macro mouse_edit_boxes start,_end |
{ |
mov edi,start |
mov ecx,((end-start)/ed_struc_size) |
mov ecx,((_end-start)/ed_struc_size) |
@@: |
call edit_box.mouse |
add edi,ed_struc_size |
1224,8 → 1179,12 |
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 |
call edit_box.draw |
} |
1240,4 → 1199,14 |
{ |
mov edi,ed_ptr |
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 |
} |
/programs/develop/examples/editbox/trunk/FAQ.txt |
---|
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 |
È òàê äàëåå ))). |
Íàäåþñü ÿ äëÿ òåáÿ ïðîÿñíèë îáùèé àëãîðèòì èçìåíåíèÿ |
/programs/develop/examples/editbox/trunk/History |
---|
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 |
/programs/develop/examples/editbox/trunk/editbox.asm |
---|
1,5 → 1,4 |
; <Lrz> 30.03.2007 ¯à®¨§¢¥¤¥ ®¯â¨¬¨§ æ¨ï à ¡®âë ª®¯®ª DEL ¨ Backspace? 㬥ìè¥ à §¬¥à ¢ë¯®«ï¥¬®£® ª®¤ . |
;ä䥪⨢®¥ ¯à®£à ¬¬¨à®¢ ¨¥ ¢ KOLIBRI |
; á¯à®áâà ï¥âáï ¯® «¨æ¥§¨¨ GPL SEE YOU File FAQ.txt and HISTORY. Good Like! |
;¯â¨¬¨§¨à®¢ ë© ª®¬¯®¥â EditBox (áå®¤ë© ¢ ਠ⠮â Maxxxx32) |
;¯â¨¬¨§ æ¨ï ª®¬ ¤. |
;<Lrz> - ¥¯«®¢ «¥ªá¥© www.lrz.land.ru |
16,7 → 15,7 |
dd 0x0,0x0 ; 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨. |
include 'macros.inc' |
include 'editbox.inc' |
use_edit_box |
use_edit_box structure_of_potock,22,5 |
;¡« áâì ª®¤ |
start: ;®çª ¢å®¤ ¢ ¯à®£à ¬¬ã |
mcall 40,0x27 ;ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ |
24,8 → 23,7 |
red_win: |
call draw_window ;¯¥à¢® ç «ì® ¥®¡å®¤¨¬® à¨á®¢ âì ®ª® |
still: ;®á®¢®© ®¡à ¡®â稪 |
mcall 10 ;¦¨¤ âì ᮡëâ¨ï ¢ â¥ç¥¨¥ 2 ¬¨««¨á¥ªã¤ |
mcall 10 ;¦¨¤ âì ᮡëâ¨ï |
cmp al,0x1 ;¥á«¨ ¨§¬¥¨«®áì ¯®«®¦¥¨¥ ®ª |
jz red_win |
cmp al,0x2 ;¥á«¨ ¦ â ª« ¢¨è â® ¯¥à¥©â¨ |
50,7 → 48,7 |
draw_window: ;à¨á®¢ ¨¥ ®ª ¯à¨«®¦¥¨ï |
mcall 12,1 |
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 |
ret |
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
63,7 → 61,7 |
editboxes_end: |
data_of_code dd 0 |
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 |
ed_buffer: |
;.1: rb 514;256 |