From 45336397933074ce1f32e38522a4118c1c501568 Mon Sep 17 00:00:00 2001 From: "Alexey Teplov (" Date: Wed, 23 Jul 2008 12:35:26 +0000 Subject: [PATCH] optimization mouse code and delete 9 function and not use it now git-svn-id: svn://kolibrios.org@830 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../develop/box_lib/C--/trunk/EditBox2.c-- | 4 +- .../develop/box_lib/C--/trunk/EditBox2.kex | Bin 1927 -> 1923 bytes programs/develop/box_lib/trunk/box_lib.asm | 29 +++-------- programs/develop/box_lib/trunk/box_lib.obj | Bin 1978 -> 3322 bytes programs/develop/box_lib/trunk/editbox.mac | 36 +++++--------- programs/develop/box_lib/trunk/editbox_ex.asm | 4 -- programs/develop/box_lib/trunk/editbox_ex.kex | Bin 623 -> 1504 bytes programs/develop/box_lib/trunk/run.bat | 6 +-- .../examples/editbox/trunk/EDITBOX.INC | 47 ++++++++---------- .../develop/examples/editbox/trunk/FAQ.txt | 12 ++--- .../develop/examples/editbox/trunk/History | 1 + .../examples/editbox/trunk/build_ru.bat | 2 +- .../examples/editbox/trunk/editbox.asm | 7 ++- .../examples/editbox/trunk/editbox.mac | 47 +++++++----------- 14 files changed, 69 insertions(+), 126 deletions(-) diff --git a/programs/develop/box_lib/C--/trunk/EditBox2.c-- b/programs/develop/box_lib/C--/trunk/EditBox2.c-- index 06737f78cd..3bcff001d0 100644 --- a/programs/develop/box_lib/C--/trunk/EditBox2.c-- +++ b/programs/develop/box_lib/C--/trunk/EditBox2.c-- @@ -3,7 +3,7 @@ #pragma option A #codesize -#include "..\..\lib\kolibri.h--" +#include "..\lib\kolibri.h--" #include "use_library.h--" ////////////////////////////////////////////////////////////////// //Bit mask from editbox @@ -62,7 +62,7 @@ byte id; } - edit_box_mouse stdcall (dword 0,0,#edit1); + edit_box_mouse stdcall (#edit1); } diff --git a/programs/develop/box_lib/C--/trunk/EditBox2.kex b/programs/develop/box_lib/C--/trunk/EditBox2.kex index 325723b06c3d799fbfccb2b707d4c99cc28f3455..ab0b9da98eb3943ad71e88dc2af9136a07fc4bbb 100644 GIT binary patch delta 366 zcmZqYZ|0Zub@dB%4KXleWME+EU}a#4WoKZpW{kQ*5XB;3#XQ}i94{_yE@iZ3WNe?j znaPwfaPmtgUB;Hp;>^`dY#BfsUu>N`gH=9s1JL#k*FQFlB`h{frK~Tyf&7NAdBIJ1dsp=W-(*|C47JquV=rA0xCUuIE(Scj9>r%zlZ?x7I#eM zVNOCzHJXjT?O#x5U5Md*j@E?fqdWf(M zOjsEhBtX?5i?UL(GPB&W#Il$&u3x{-kYNp!dZG9G|9_~fU6?^eFuiy(c^lhV03{K4 ArvLx| diff --git a/programs/develop/box_lib/trunk/box_lib.asm b/programs/develop/box_lib/trunk/box_lib.asm index 278f9b96a7..fa0fa4e9c3 100644 --- a/programs/develop/box_lib/trunk/box_lib.asm +++ b/programs/develop/box_lib/trunk/box_lib.asm @@ -30,12 +30,7 @@ cl_curs_y equ [edi+60] ; ed_shift_pos equ [edi+64] ;положение курсора ed_shift_pos_old equ [edi+68] ;старое положение курсора .draw: - pusha - mov eax,9 - push procinfo - pop ebx - or ecx,-1 - mcall + pushad ;--- рисуем рамку --- mov edi,dword [esp+36] call .draw_border ; Функция стабильна @@ -59,14 +54,14 @@ ed_shift_pos_old equ [edi+68] ; ;Общий выход из editbox для всех функций и пост обработчиков ;;;;;;;;;;;;;;;;;;;;;;;;;; .editbox_exit: - popa + popad ret 4 ;========================================================== ;=== обработка клавиатуры ================================= ;========================================================== edit_box_key: -pusha +pushad mov edi,dword [esp+36] test word ed_flags,ed_focus ; если не в фокусе, выходим je edit_box.editbox_exit @@ -106,18 +101,7 @@ use_work_key ;========================================================== ;save for stdcall ebx,esi,edi,ebp edit_box_mouse: - pop eax ;opint to back - pop edx ;scr_w - pop ecx ;ebp ;scr_h - push eax - -; pop eax -; pop edx ;scr_w -; pop ecx ;scr_h -; push eax ;pointer to back -pusha - mov ebp,ecx - +pushad mov edi,dword [esp+36] ;debug ;---------------------------------------------------------- @@ -146,7 +130,7 @@ pusha ;---------------------------------------------------------- ;--- получаем координаты мыши относительно 0 т.е всей области экрана ;---------------------------------------------------------- -@@: mcall 37,0 +@@: mcall 37,1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Функция обработки мышки получение координат и проверка их + выделения ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -162,7 +146,7 @@ use_key_func ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Функции для работы с mouse ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -use_mouse_func ;scr_w +use_mouse_func ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Bit mask from editbox ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -548,4 +532,3 @@ szVersion_op db 'version_op',0 ;;;;;;;;;;; align 16 mouse_flag dd 0x0 -procinfo process_information \ No newline at end of file diff --git a/programs/develop/box_lib/trunk/box_lib.obj b/programs/develop/box_lib/trunk/box_lib.obj index f7b1b343dd9f3e551e5ad7496ca3df099c3ad823..813ef883c1b924e28306eeb2ef4073c8951c2376 100644 GIT binary patch literal 3322 zcmZu!e{5UT6~51Q9Fv;bDlH9Z+IZkiF*PjKI+mxl+Y3qOmci_`O!kPjm(a$PbX!>Z z9K%-8bkA0~dQ?S9`*SW4vQLFpayFk8IBx=1sVvLA^;J!8WQ zzCgZHBJk%xzQqQA4CJ4;!ApVsUu^JlApZ{=yb{QNY=fhL{4v-vyznRO*TV}hYR?QW ztkQmAs~*-Gh8Nlf_YW_~xt|lo$Fw_=Mk;C~+Ioxuzo9B(KddtbqT*>U3>2F%8ga!? zqY;y<(X^3>8mSO%9cEddd@`Vatz0e}YMVT@r>?Y?a3Y#Y@~cKJES=!<@{G1RGrx(X zxAgFfq*x}!k(v0_j>CuEUsy;#@!lb|9FLacZQ?NOF1=HU)iBeRWcEGOy0=`Kx>hb{ z_9dXDG!9t4@Ak+E>0Lf=YituA)j^~6isOeovA4l-E!)&AuV5v&GOYF$l%hW z5POzTVMMz@zO2=iCLxABvDwa|LXlxopx}o~hU&}6(}5>{558_LCH&NHfJa5pP(3#5 zAeQbHn^OQxQfO|*vFX^UwQ*0sw>vXG=Z>#iACC^XVJm45GHscYc}d|%04Wj|)6Tis zCLUMl-kAiq_(n1_6L@W)RkBvEk1K)v>kH*FIK}`hP(%?Yk#wUZHsN&fTMU++t4s+L zo`Nhk=USzJt^<>8KP9nOF_eBnT*sUx6?Kn8ohj}C*T_W;bzS6L`O2D&j;PA&qy@urpKKM7Zu#Qr_)IJiP7>cBjM}6G2JnGE~t+#-9p^@*eP95B4)D@Ljr`C=s2MJ5k4cb`1(hW>=FQy+ElGtiXb7B50chL`lw2ClaA#D@Ma zrJ;{Zb}=KhJnJ@6jiBLpK4Wj0bhkhUKVk3tq^R%{u%W63H_JcaXV$iWZaF7FTMx?m{+qQ}Cpw7DaX=&_kc_O#bsh5_>g#MXtXpL_AtX2A_Ol#1u_=f6q%V+sxvz9M1 z#-}WoG{x0*VvcGSm-$AoNd=%_g0UW^tw4N5-D!DzcQ7_0pC0r?Cap$3g>hMATt5A{H!>M9 zEiX~fxK1BvR_v&D!q)@-ttZcA_+%%)AiAMW+(#FUv&0;LbqVH)UfX!G5vdh#Bg;cf zTVvf!S&7e=J%tfa(dpJ+tG&4o!59-P}@7N5h-Eu*3?MvhBnWCCx+fMTuW$0J2) zGBPH;NlPE7bKhKuOr-eP!-wv9?22lN*HEZQB&jsbEqQv7ZXse)<&0ZPQA67z)7-=> zg*87eoq0fhN0T}~|Nc>>q8r+r-FAj_qVSL*y6Hu3e1mvB{dcGP-QBUbJBrHh+*%#^ z>FG7m^9VI(USPx742lk>sO}bdIybboC3Y$@ZCAL{>T(;XMJ4ctcJX)@9>maKP&RW- zT9`uIh=5s5vN_m5s|H&65m!DbuHk&k?uS=OBlC7O=$F~hzc!2eofs&P6Vt$H>sJT^ z-e^?I-xcvykkAjoO^Tz$F8vHw?7RgxrUOS>;G*5NT<8t%gwIF?iwdH#&%9PNw~lu@~G3%&>-#BgRiFQOH~-j)}vF0TviI*KI9rq;)q@U@w#)K>cbQ` zqPp^aPDVScGXCtdXG+wribJ~;4b4XC^N9{bW;zQ+@j_6lG}H(fk!mjQxjdZzFv0V5q6M1 zVb~jRgnaR`L-5Q&FV|2vzO)?Ld+@_SAJmYjp^t0mQVspPhA!6-t3<-fJT>I2A%6`8 oYpAh?nrkRjL*W`~t)WfnWMb?6+gR0N7hC-Q4Ef+@_-bVT1?Y4T82|tP literal 1978 zcmV;r2SxZxP(w>>5dZ*z00000Yyc()6Lqnw4Jk#wy5sYQ&1mrbBN#H{_DrcCIN27_ z0^ObU+D$p@{K>+Ps-X%uilalE*PqZEN7Xv4;v*-C_oQUL|HR3$9SB}Nv`=1)td0m= zHFQ`-nz8>Y_Y*36zJJpL(l+g}H(BrQ6HjdEc*u7T^XtHU1nE4Xzo#qt>IG$t@3y@E z181_}w%tPj#t=v;AL`f+2c*?=?o7Nd0N$Y7V~9H_O!(dyflPlZ*_{+cSOX12Ij1C(6Gh>v=9o4#V){Yoiu z$LqzzxIgCf)e{H+fLtY}GD}C3EUzapcr|_qA^0Fzc&^vG~fpdU){{LNA$Ph_b;) zGJg2Uki;3?Mn4G7rpq{#^sK~rsF_E3)BrwyS_|HjlN}KVxt1ZXqDgEI%bv@3*pZbg zV>pbT9|GK^73c#DrpEUy=aAo#@yC?vB!VFvUQ!49JKUm>c5+RbfNpE(H-XVg;-24!##zGPG;~ztD!cKQGbWtQ>fchzM z?1||knVY}m>2bJ3oC9?*xnYOwl$ve!m;SVDE|Ph?@mV;)0xeg*Tbl6_bu1zcT{DkK zSkXi5YZ0e5?olcaE_Vlx%g5ALD|P~+>vWHj8*S#kf%o9SG+mCsEEGG8>h4E9eg~+d zO-9$kHG($E~T1azEA`+Y%nR<0y(r2$iL< zq7)s)XygOa1@ZPQhnj#xqI3^o;9PmYq&CRSyJZQfbIYfg(1YLr`tG5>kCZy01JSib z$J+Yk=WcP>fzK3t{Tu#;!=Mob!?xDr#2=7_&D4hNj}Y6bgT` zwY|TZMU@I*mrxzaYi)oz$Rn&Y?K_q)A9k?4JrIMX@Zn*#i-9OqH|CKNb)~4fJb|FL z4%RO({(B)hqs?wua z0`P99Id)6JNj_$PwVSBhmSE7*PMc6s9u>gXQy`YeRBYwgqqkQOQr+#+@W{c=rpI2{ z1*T~j_R>wcyv|DpgH&ZwhyU=xB|aGyIPXzn;uV*iV5Z{1YK+JN z)1WJAQ_~Y&Ie}+1ya}IyS!+SVp)U+2ePagumuc?RsnoU`)^!NctTDeCJ4yFq$Zca| zUtQY!s1XR?8h!zTXZTA3)m~Z5n#o-(a!?Cqta6K$iEG_T0HF-0Q1!SlLCRUyynX%h zA*`uWaLbR+Dk0)iFRSXxI)LiYSF4f6LPlz(!`5^`bp8nPfi=W~v2=s#0BNsmnt&~N zx_rT6;e~>gH{YMnCwYoK__Po#ug-9+#Xf{kmfvGuFyl7{U-F!GQJynmK-*hf_k6~1 zulYIWLd$T6fu1&NiDp!0pbjaK$c6ucf1SZHLU?E$4b@eg{p>uTt-h*iq6Zov+h#)) z(NV%XYs^fk^O`Xa$mEle@!r9Hmj+KW0_8>oO1XcbgNY>`Zkp@MkErWn2QRk6_-hPW(ZuIm{mRdNWw>AQgx(v7 z3YJeW4Yf9w!??z7GxkX(9KulwmhX%WltXnl;DlO(yCj z{3p}`;Elyf-90=&gg=p3!zSvkt4Tp)E^fGv)8ktcC@K^R6nh|PPvEJoXYrhU2jkTb#>kTbw}~?e*~F^Hov#*OC`{0`{acofow{uwqc9;ssWJ@Vuk(0Z2rX{}z93#Bv>=qR(F{QR^u#TJ zsZnJD2LqXjgs0qLc0f9lTPe%XGXZ%VSw-~J!Kn1vwk@~BDUyEXU|KE4GUgMZbG>T- zd-Ex>r)(?7ICH2G@A*mK)Yq~uvw-Dw^MfEfU4)9Wevn$%fq!uX=PC7tVRx#{SxI1H z-JVDv<%ul$Qt%qsX?7DTLK_D*RSA%#8I7~2tBmtclZ^5fV<3P;^Gi;$d!%|Aa9U5I zU^-NRiz@fu(ePbCFc(~(@C1IA%q`O>Q1)Y~@qA$06n*ZK*e{$s&H$RCo_u!;_j;g- z@EQs83U{*<#hx~aQOSERWO9dCHa}7O))Jxz(2sXo5F8AJwDjGPZ diff --git a/programs/develop/box_lib/trunk/run.bat b/programs/develop/box_lib/trunk/run.bat index 6340cc7cb6..d4c84e2bf4 100644 --- a/programs/develop/box_lib/trunk/run.bat +++ b/programs/develop/box_lib/trunk/run.bat @@ -1,4 +1,4 @@ -..\FASM\fasm.exe box_lib.asm -..\FASM\fasm.exe editbox_ex.asm editbox_ex.kex +@fasm.exe box_lib.asm +@fasm.exe editbox_ex.asm editbox_ex.kex REM ..\FASM\kpack.exe editbox_ex -..\emul\klbrinwin.exe editbox_ex.kex \ No newline at end of file +@klbrinwin.exe editbox_ex.kex \ No newline at end of file diff --git a/programs/develop/examples/editbox/trunk/EDITBOX.INC b/programs/develop/examples/editbox/trunk/EDITBOX.INC index 3b78616a02..e7916027a3 100644 --- a/programs/develop/examples/editbox/trunk/EDITBOX.INC +++ b/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_text_color equ [edi+28] ;цве 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 @@ edit_ex ;=== обработка клавиатуры ================================= ;========================================================== .key: -pusha +pushad test word ed_flags,ed_focus ; если не в фокусе, выходим je .editbox_exit test word ed_flags,ed_mouse_on @@ -91,7 +91,7 @@ use_work_key ;=== обработка мыши ======================================= ;========================================================== .mouse: -pusha +pushad ;debug ;---------------------------------------------------------- ;--- получаем состояние кнопок мыши ----------------------- @@ -117,13 +117,14 @@ pusha 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 @@ use_key_func ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Функции для работы с mouse ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -use_mouse_func scr_w +use_mouse_func } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Bit mask from editbox @@ -161,12 +162,8 @@ ed_mouse_on = 100000000b 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 @@ macro key_edit_boxes start,end 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 @@ struc edit_box width,left,top,color,shift_color,focus_border_color,\ .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 @@ macro edit_boxes_set_sys_color start,end,color_table 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 } diff --git a/programs/develop/examples/editbox/trunk/FAQ.txt b/programs/develop/examples/editbox/trunk/FAQ.txt index a0eac20661..230c4355f3 100644 --- a/programs/develop/examples/editbox/trunk/FAQ.txt +++ b/programs/develop/examples/editbox/trunk/FAQ.txt @@ -84,23 +84,17 @@ draw_edit_boxes - ╧хЁхфртрхь√х ярЁрьхЄЁ√ 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 @@ struc edit_box width,left,top,color,focus_border_color,blur_border_color,text_co .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 diff --git a/programs/develop/examples/editbox/trunk/History b/programs/develop/examples/editbox/trunk/History index 2b0adc06a2..c14c59bcf2 100644 --- a/programs/develop/examples/editbox/trunk/History +++ b/programs/develop/examples/editbox/trunk/History @@ -6,6 +6,7 @@ You bunny wrote ..... ▌Єю эх ьэюую Їюы№ъыхЁр, ёт чрээюх, ё Єхь, ўЄю эряшёрэшх яЁюуЁрьь фышээ√х ш ьєЄюЁэ√щ яЁюЎхёё, ш юэ эх юсїюфшЄ№ё  схч т√Ёрцхэшщ яюфюсэюую ёюфхЁцрэш , эю эх яюярфр■∙хую т ъюьхэЄрЁшш ш юёэютэющ ъюф..... ╥хяыют └ыхъёхщ ▐Ё№хтшў aka +; 23.07.2008 ╧хЁхяшёрэр юсЁрсюЄър ь√°ъш схч шёяюы№чютрэш  9-ющ ЇєэъЎшш, єьхэ№°шы яЁшьхЁэю эр 50 срщЄ ъюф. ; 20.07.2007 ╩юёьхЄшўхёъшх єыєў°хэш  т ъюфх яЁюуЁрьь√, шёяЁртыхэ юфшэ эхёє∙хёЄтхээ√щ сру. ; 18.05.2007 ╙ыєў°хэшх яюэшьрэш  ЁрсюЄ√ яЁюуЁрьь√ чр ёўхЄ т√эхёр юёэютэ√ї ЇєэъЎшщ т юЄфхы№э√х ьръЁюё√ ; 14.05.2007 ╚ёяюы№чютрэшх ьръЁюёют,єфюсюўшЄрхьюё№ яЁюуЁрьь√ шёяюы№чютрэшх ьръЁюёр mcall фы  т√чютр ёшё. ЇєэъЎшщ diff --git a/programs/develop/examples/editbox/trunk/build_ru.bat b/programs/develop/examples/editbox/trunk/build_ru.bat index e8f11fe8f3..5e71f3c267 100644 --- a/programs/develop/examples/editbox/trunk/build_ru.bat +++ b/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 \ No newline at end of file diff --git a/programs/develop/examples/editbox/trunk/editbox.asm b/programs/develop/examples/editbox/trunk/editbox.asm index b90e2e8f1e..d0f7f72191 100644 --- a/programs/develop/examples/editbox/trunk/editbox.asm +++ b/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 @@ align 4 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 @@ 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 20.07.2007',0 +hed db 'EDITBOX optimization and retype date 23.07.2008',0 rb 256 ed_buffer: ;.1: rb 514;256 @@ -64,6 +64,5 @@ ed_buffer: ;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0 buffer_end: align 16 -procinfo process_information meos_app_end udata \ No newline at end of file diff --git a/programs/develop/examples/editbox/trunk/editbox.mac b/programs/develop/examples/editbox/trunk/editbox.mac index 972057e391..f1c2beeb58 100644 --- a/programs/develop/examples/editbox/trunk/editbox.mac +++ b/programs/develop/examples/editbox/trunk/editbox.mac @@ -818,7 +818,7 @@ edit_ex jmp .draw_cursor_text } -macro use_mouse_func scr_w +macro use_mouse_func { ;---------------------------------------------------------- ;--- Обработка .mouse_wigwag @@ -829,12 +829,10 @@ macro use_mouse_func scr_w ;;;;;;;;;;;;;;;;;; ;;процедура обработки положения выделенного текста, когда происходит выход за пределы 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 @@ end if ; popa ; ret .mleft: + mov eax,ed_pos cmp eax,0 jbe .mwigvag @@ -919,7 +918,7 @@ end if jmp .mdraw } -macro use_work_mause scr_h,scr_w +macro use_work_mouse ;---------------------------------------------------------- ;--- А не удерживаем ли мы клавишу мышки, перемещая курсор, во все разные стороны? ;---------------------------------------------------------- @@ -929,48 +928,36 @@ macro use_work_mause scr_h,scr_w ;---------------------------------------------------------- ;--- проверяем, попадает ли курсор в 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 - + add ebx,ed_height cmp ax,bx jg ._blur;.mouse_end_no_focus 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 + jg ._blur;.mouse_end_no_focus + ;--- изменяем позицию курсора --- push eax mov ebp,ed_color 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 @@ end if ; Макрос выхода macro edit_ex { -popa +popad ret } macro debug