/programs/develop/examples/editbox/trunk/EDITBOX.INC |
---|
2,7 → 2,7 |
;;;;;;;;;;;;;;;;;; |
include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥ ®¡«¥£ç¨âì ¦¨§ì :) á¯¥æ¨ «ì® ¤«ï editbox |
;;;;;;;;;;;;;;;;;; |
macro use_edit_box procinfo,scr_h,scr_w |
macro use_edit_box |
{ |
edit_box: |
ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â |
16,18 → 16,18 |
ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥á⨠|
ed_text equ [edi+36] ;㪠§ â¥«ì ¡ãä¥à |
ed_flags equ [edi+40] ;ä« £¨ |
ed_size equ [edi+42] ;ª®«-¢® ᨬ¢®«®¢ |
ed_pos equ [edi+46] ;¯®§¨æ¨ï ªãàá®à |
ed_offset equ [edi+50] ;ᬥ饨¥ |
cl_curs_x equ [edi+54] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å |
cl_curs_y equ [edi+58] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã |
ed_shift_pos equ [edi+62] ;¯®«®¦¥¨¥ ªãàá®à |
ed_shift_pos_old equ [edi+66] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à |
ed_size equ [edi+44] ;ª®«-¢® ᨬ¢®«®¢ |
ed_pos equ [edi+48] ;¯®§¨æ¨ï ªãàá®à |
ed_offset equ [edi+52] ;ᬥ饨¥ |
cl_curs_x equ [edi+56] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å |
cl_curs_y equ [edi+60] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã |
ed_shift_pos equ [edi+64] ;¯®«®¦¥¨¥ ªãàá®à |
ed_shift_pos_old equ [edi+68] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à |
;========================================================== |
;=== ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ================================= |
;========================================================== |
.draw: |
pusha |
pushad |
;--- à¨á㥬 à ¬ªã --- |
call .draw_border ; ãªæ¨ï áâ ¡¨«ì |
.draw_bg_cursor_text: |
54,7 → 54,7 |
;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
;========================================================== |
.key: |
pusha |
pushad |
test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
je .editbox_exit |
test word ed_flags,ed_mouse_on |
91,7 → 91,7 |
;=== ®¡à ¡®âª ¬ëè¨ ======================================= |
;========================================================== |
.mouse: |
pusha |
pushad |
;debug |
;---------------------------------------------------------- |
;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ ----------------------- |
117,13 → 117,14 |
je @f |
jmp ._blur |
;---------------------------------------------------------- |
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® 0 â.¥ ¢á¥© ®¡« á⨠íªà |
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª |
;---------------------------------------------------------- |
@@: mcall 37,0 |
@@: mcall 37,1 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;ãªæ¨ï ®¡à ¡®âª¨ ¬ë誨 ¯®«ã票¥ ª®®à¤¨ â ¨ ¯à®¢¥àª ¨å + ¢ë¤¥«¥¨ï |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_work_mause scr_h,scr_w |
use_work_mouse |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;¡é¨¥ äãªæ¨¨ ®¡à ¡®âª¨ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
135,7 → 136,7 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;ãªæ¨¨ ¤«ï à ¡®âë á mouse |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_mouse_func scr_w |
use_mouse_func |
} |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Bit mask from editbox |
161,12 → 162,8 |
ed_mous_adn_b= 100011000b |
ed_mouse_on_off=1111111011111111b |
ed_height=14 ; ¢ëá®â |
macro draw_edit_boxes start,_end,use_f9,procinfo |
macro draw_edit_boxes start,_end |
{ |
if use_f9 eq |
else |
mcall 9,procinfo,-1 |
end if |
mov edi,start |
mov ecx,((_end-start)/ed_struc_size) |
@@: |
194,7 → 191,7 |
add edi,ed_struc_size |
loop @b |
} |
ed_struc_size=70 |
ed_struc_size=72 |
struc edit_box width,left,top,color,shift_color,focus_border_color,\ |
blur_border_color,text_color,max,text,flags,size,pos |
{ |
208,7 → 205,7 |
.text_color dd text_color |
.max dd max |
.text dd text |
.flags dw flags+0 |
.flags dd flags+0 |
.size dd size+0 |
.pos dd pos+0 |
.offset dd 0 |
245,12 → 242,8 |
loop @b |
} |
macro draw_edit_box ed_ptr,use_f9,procinfo |
macro draw_edit_box ed_ptr |
{ |
if use_f9 eq |
else |
mcall 9,procinfo,-1 |
end if |
mov edi,ed_ptr |
call edit_box.draw |
} |
/programs/develop/examples/editbox/trunk/FAQ.txt |
---|
84,23 → 84,17 |
Ïåðåäàâàåìûå ïàðàìåòðû |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó áîêñîâ |
editboxes_end - êîíåö èíôîðìàöèîííîé ñòðóêòóðû áîêñîâ |
use_f9 è procinfo - ïðè ïåðåäà÷å ýòîãî ïàðàìåòðà - ïðè ïåðåðèñîâêè áîêñîâ áóäåò èñïîëçîâàíà ôóíöèÿ |
mcall 9,procinfo,-1 |
êîòîðàÿ ïîëó÷àåò äàííûå î îêíå è ñêëàäûâàåò ïàðàìåòðû ïî àäðåñó procinfo- åãî òî æå îáÿçàòåëüíî íóæíî ïåðåäàâàòü!!!! |
Åñëè â ïðîãðàììå óæå èñïîëüçóåòñÿ ýòà ôóíêöèÿ, òî íå íóæíî óêàçûâàòü äàííûå ïàðàìåòð!!!! |
Êàê ïîä âàðèàíò ñóùåñòâóåò ìàêðîñ |
draw_edit_box - îí èñïîëüçóåòñÿ åñëè âûâîäèòñÿ îäèí áîêñ |
Ïåðåäàâàåìûé ïàðàìåòð |
editboxes - óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó áîêñîâ |
use_f9 è procinfo - ïðè ïåðåäà÷å ýòîãî ïàðàìåòðà - ïðè ïåðåðèñîâêè áîêñîâ áóäåò èñïîëüçîâàíà ôóíêöèÿ |
mcall 9,procinfo,-1 |
êîòîðàÿ ïîëó÷àåò äàííûå î îêíå è ñêëàäûâàåò ïàðàìåòðû ïî àäðåñó procinfo- åãî òî æå îáÿçàòåëüíî íóæíî ïåðåäàâàòü!!!! |
Åñëè â ïðîãðàììå óæå èñïîëüçóåòñÿ ýòà ôóíêöèÿ, òî íå íóæíî óêàçûâàòü äàííûå ïàðàìåòð!!!! |
Áîëüøå íèêàêèõ ïàðàìåòðîâ ïåðåäàâàòü íå íóæíî. |
********** |
default_box - ìàêðîñ êîòîðûé ïðèâîäèò îñíîâíûå äàííûå ìàêðîñà ïî äåôîëòó ò.å. Ñíèìàåò áèòîâóþ ìàòðèöó âûäåëåíèÿ |
Ñïåöèàëüíî äëÿ KFM :)) Íóæíî äîáàâèòü ýòîò êîä ïðè îáðàáîò÷èêå yes or no ïðè êîïèðîâàíèè. Åñëè áóäåò âåñòè ñåáÿ íåàäåêâàòíî - íåîáõîäèìî ðàñêîììåíòèðîâàòü ñòðîêè â äàííîì ìàêðîñå |
òàê çà âñå âðåìÿ è íå áûë èñïîëüçîâàí â KFM |
128,7 → 122,7 |
.text_color dd text_color |
.max dd max |
.text dd text |
.flags dw flags+0 |
.flags dd flags+0 |
.size dd size+0 |
.pos dd 0 - ãäå áóäåò íàõîäèòüñÿ êóðñîð |
.offset dd 0 |
/programs/develop/examples/editbox/trunk/History |
---|
6,6 → 6,7 |
Ýòî íå ìíîãî ôîëüêëåðà, ñâÿçàííîå, ñ òåì, ÷òî íàïèñàíèå ïðîãðàìì äëèííûå è ìóòîðíûé ïðîöåññ, è îí íå îáõîäèòüñÿ áåç âûðàæåíèé ïîäîáíîãî ñîäåðæàíèÿ, íî íå ïîïàäàþùåãî â êîìåíòàðèè è îñíîâíîé êîä..... |
Òåïëîâ Àëåêñåé Þðüåâè÷ aka <Lrz> |
; <Lrz> 23.07.2008 Ïåðåïèñàíà îáðàáîòêà ìûøêè áåç èñïîëüçîâàíèÿ 9-îé ôóíêöèè, óìåíüøèë ïðèìåðíî íà 50 áàéò êîä. |
; <Lrz> 20.07.2007 Êîñìåòè÷åñêèå óëó÷øåíèÿ â êîäå ïðîãðàììû, èñïðàâëåí îäèí íåñóùåñòâåííûé áàã. |
; <Lrz> 18.05.2007 Óëó÷øåíèå ïîíèìàíèÿ ðàáîòû ïðîãðàììû çà ñ÷åò âûíåñà îñíîâíûõ ôóíêöèé â îòäåëüíûå ìàêðîñû |
; <Lrz> 14.05.2007 Èñïîëüçîâàíèå ìàêðîñîâ,óäîáî÷èòàåìîñü ïðîãðàììû èñïîëüçîâàíèå ìàêðîñà mcall äëÿ âûçîâà ñèñ. ôóíêöèé |
/programs/develop/examples/editbox/trunk/build_ru.bat |
---|
1,3 → 1,3 |
@fasm editbox.asm editbox |
@fasm editbox.asm editbox.kex |
REM @kpack editbox |
@pause |
/programs/develop/examples/editbox/trunk/editbox.asm |
---|
7,7 → 7,7 |
include 'editbox.inc' |
meos_app_start |
align 4 |
use_edit_box procinfo,22,5 |
use_edit_box |
;¡« áâì ª®¤ |
code ;®çª ¢å®¤ ¢ ¯à®£à ¬¬ã |
mcall 40,0x27 ;ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ |
41,7 → 41,7 |
draw_window: ;à¨á®¢ ¨¥ ®ª ¯à¨«®¦¥¨ï |
mcall 12,1 |
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed |
draw_edit_boxes editboxes,editboxes_end,use_f9,procinfo ;à¨á®¢ ¨¥ edit box'®¢ |
draw_edit_boxes editboxes,editboxes_end ;à¨á®¢ ¨¥ edit box'®¢ |
mcall 12,2 |
ret |
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
54,7 → 54,7 |
editboxes_end: |
data_of_code dd 0 |
mouse_flag dd 0x0 |
hed db 'EDITBOX optimization and retype <Lrz> date 20.07.2007',0 |
hed db 'EDITBOX optimization and retype <Lrz> date 23.07.2008',0 |
rb 256 |
ed_buffer: |
;.1: rb 514;256 |
64,6 → 64,5 |
;¤¢ § ¯ áëå ¡ ©â ¥®¡å®¤¨¬ë ¤«ï ⮣® çâ® ¡ë ¥ ¯¥¯¥à¥¯¨á âì á«¥¤ãî騥© ¡ ©âë, ¢ ª®æ¥ ¡ãä¥à 0 |
buffer_end: |
align 16 |
procinfo process_information |
meos_app_end |
udata |
/programs/develop/examples/editbox/trunk/editbox.mac |
---|
818,7 → 818,7 |
jmp .draw_cursor_text |
} |
macro use_mouse_func scr_w |
macro use_mouse_func |
{ |
;---------------------------------------------------------- |
;--- ¡à ¡®âª .mouse_wigwag |
829,12 → 829,10 |
;;;;;;;;;;;;;;;;;; |
;;¯à®æ¥¤ãà ®¡à ¡®âª¨ ¯®«®¦¥¨ï ¢ë¤¥«¥®£® ⥪áâ , ª®£¤ ¯à®¨á室¨â ¢ë室 § ¯à¥¤¥«ë editbox |
;;;;;;;;;;;;;;;;;; |
mov ebx,dword [procinfo+34] |
add ebx,ed_left |
if scr_w eq |
else |
add ebx,dword scr_w |
end if |
test ax,0x8000 |
jnz .mleft |
mov ebx,ed_left |
cmp eax,ebx |
jb .mleft |
893,6 → 891,7 |
; popa |
; ret |
.mleft: |
mov eax,ed_pos |
cmp eax,0 |
jbe .mwigvag |
919,7 → 918,7 |
jmp .mdraw |
} |
macro use_work_mause scr_h,scr_w |
macro use_work_mouse |
;---------------------------------------------------------- |
;--- ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §ë¥ áâ®à®ë? |
;---------------------------------------------------------- |
929,12 → 928,8 |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box ------------- |
;---------------------------------------------------------- |
mov ebx,dword [procinfo + 38] |
add ebx,ed_top |
if scr_h eq |
else |
add ebx,scr_h |
end if |
mov ebx,ed_top |
cmp ax,bx |
jl ._blur;.mouse_end_no_focus |
944,18 → 939,15 |
shr eax,16 |
mov ebx,dword [procinfo + 34] |
add ebx,ed_left |
if scr_w eq |
else |
add ebx,scr_w |
end if |
mov ebx,ed_left |
cmp ax,bx |
jl ._blur;.mouse_end_no_focus |
add ebx,ed_width |
cmp ax,bx |
jg ._blur;.mouse_end_no_focus |
;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à --- |
push eax |
mov ebp,ed_color |
962,15 → 954,10 |
call .clear_cursor |
pop eax |
._mvpos: |
mov ebx,dword [procinfo+ 34] |
xor edx,edx |
sub eax,ed_left |
sub eax,ebx |
if scr_w eq |
else |
add ebx,scr_w |
sub eax,2 |
end if |
mov ebx,6 |
div bx |
add eax,ed_offset |
1029,7 → 1016,7 |
; ªà®á ¢ë室 |
macro edit_ex |
{ |
popa |
popad |
ret |
} |
macro debug |