Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 463 → Rev 468

/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] ;è¨à¨­  ª®¬¯®­¥­â 
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,8 → 986,10
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
 
1098,8 → 1049,8
; ret
.mleft:
mov eax,ed_pos
test eax,eax
jz .mwigvag
cmp eax,0
jbe .mwigvag
dec eax
call .check_offset
push eax
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