optimization mouse code and delete 9 function and not use it now

git-svn-id: svn://kolibrios.org@830 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Alexey Teplov ( 2008-07-23 12:35:26 +00:00
parent a4d9a318f2
commit 4533639793
14 changed files with 69 additions and 126 deletions

View File

@ -3,7 +3,7 @@
#pragma option A #pragma option A
#codesize #codesize
#include "..\..\lib\kolibri.h--" #include "..\lib\kolibri.h--"
#include "use_library.h--" #include "use_library.h--"
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
//Bit mask from editbox //Bit mask from editbox
@ -62,7 +62,7 @@ byte id;
} }
edit_box_mouse stdcall (dword 0,0,#edit1); edit_box_mouse stdcall (#edit1);
} }

View File

@ -30,12 +30,7 @@ cl_curs_y equ [edi+60] ;
ed_shift_pos equ [edi+64] ;¯®«®¦¥­¨¥ ªãàá®à  ed_shift_pos equ [edi+64] ;¯®«®¦¥­¨¥ ªãàá®à 
ed_shift_pos_old equ [edi+68] ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à  ed_shift_pos_old equ [edi+68] ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
.draw: .draw:
pusha pushad
mov eax,9
push procinfo
pop ebx
or ecx,-1
mcall
;--- à¨á㥬 à ¬ªã --- ;--- à¨á㥬 à ¬ªã ---
mov edi,dword [esp+36] mov edi,dword [esp+36]
call .draw_border ; ”ã­ªæ¨ï áâ ¡¨«ì­  call .draw_border ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
@ -59,14 +54,14 @@ ed_shift_pos_old equ [edi+68] ;
;<3B>¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢ ;<3B>¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢
;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
.editbox_exit: .editbox_exit:
popa popad
ret 4 ret 4
;========================================================== ;==========================================================
;=== ®¡à ¡®âª  ª« ¢¨ âãàë ================================= ;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
;========================================================== ;==========================================================
edit_box_key: edit_box_key:
pusha pushad
mov edi,dword [esp+36] mov edi,dword [esp+36]
test word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬ test word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
je edit_box.editbox_exit je edit_box.editbox_exit
@ -106,18 +101,7 @@ use_work_key
;========================================================== ;==========================================================
;save for stdcall ebx,esi,edi,ebp ;save for stdcall ebx,esi,edi,ebp
edit_box_mouse: edit_box_mouse:
pop eax ;opint to back pushad
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
mov edi,dword [esp+36] mov edi,dword [esp+36]
;debug ;debug
;---------------------------------------------------------- ;----------------------------------------------------------
@ -146,7 +130,7 @@ pusha
;---------------------------------------------------------- ;----------------------------------------------------------
;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­  ;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
;---------------------------------------------------------- ;----------------------------------------------------------
@@: mcall 37,0 @@: mcall 37,1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;”ã­ªæ¨ï ®¡à ¡®âª¨ ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï ;”ã­ªæ¨ï ®¡à ¡®âª¨ ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -162,7 +146,7 @@ use_key_func
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;”㭪樨 ¤«ï à ¡®âë á mouse ;”㭪樨 ¤«ï à ¡®âë á mouse
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
use_mouse_func ;scr_w use_mouse_func
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Bit mask from editbox ;Bit mask from editbox
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -548,4 +532,3 @@ szVersion_op db 'version_op',0
;;;;;;;;;;; ;;;;;;;;;;;
align 16 align 16
mouse_flag dd 0x0 mouse_flag dd 0x0
procinfo process_information

View File

@ -154,7 +154,7 @@ ret
; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï­¨ï ª®¬¯®­¥­â®¢ word ed_flags ; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï­¨ï ª®¬¯®­¥­â®¢ word ed_flags
;---------------------------------------------------------- ;----------------------------------------------------------
edit_box.check_offset: edit_box.check_offset:
pusha pushad
mov ecx,ed_pos mov ecx,ed_pos
mov ebx,ed_offset mov ebx,ed_offset
cmp ebx,ecx cmp ebx,ecx
@ -830,11 +830,10 @@ edit_box_mouse.mouse_wigwag:
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox ;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
mov ebx,[procinfo.box.left] test ax,0x8000
add ebx,ed_left jnz edit_box_mouse.mleft
add ebx,dword [esp+20];scr_w
mov ebx,ed_left
cmp eax,ebx cmp eax,ebx
jb edit_box_mouse.mleft jb edit_box_mouse.mleft
@ -920,8 +919,6 @@ edit_box_mouse.mright:
} }
macro use_work_mouse macro use_work_mouse
; pop edx ;scr_h
; pop ebp ;scr_w
;---------------------------------------------------------- ;----------------------------------------------------------
;--- € ­¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §­ë¥ áâ®à®­ë? ;--- € ­¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §­ë¥ áâ®à®­ë?
;---------------------------------------------------------- ;----------------------------------------------------------
@ -931,48 +928,41 @@ macro use_work_mouse
;---------------------------------------------------------- ;----------------------------------------------------------
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box ------------- ;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
;---------------------------------------------------------- ;----------------------------------------------------------
mov ebx,[procinfo.box.top] mov ebx,ed_top
add ebx,ed_top
add ebx,dword [esp+24] ;ecx scr_h
cmp ax,bx cmp ax,bx
jl edit_box_mouse._blur;.mouse_end_no_focus jl edit_box_mouse._blur;.mouse_end_no_focus
add ebx,ed_height add ebx,ed_height
cmp ax,bx cmp ax,bx
jg edit_box_mouse._blur;.mouse_end_no_focus jg edit_box_mouse._blur;.mouse_end_no_focus
shr eax,16 shr eax,16
mov ebx,[procinfo.box.left] mov ebx,ed_left
add ebx,ed_left
add ebx,dword [esp+20] ;edx scr_w
cmp ax,bx cmp ax,bx
jl edit_box_mouse._blur;.mouse_end_no_focus jl edit_box_mouse._blur;.mouse_end_no_focus
add ebx,ed_width add ebx,ed_width
cmp ax,bx cmp ax,bx
jg edit_box_mouse._blur;.mouse_end_no_focus jg edit_box_mouse._blur;.mouse_end_no_focus
;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  --- ;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
push eax push eax
mov ebp,ed_color mov ebp,ed_color
call edit_box.clear_cursor call edit_box.clear_cursor
pop eax pop eax
edit_box_mouse._mvpos: edit_box_mouse._mvpos:
mov ebx,dword [procinfo.box.left]
xor edx,edx xor edx,edx
sub eax,ed_left sub eax,ed_left
sub eax,ebx
;
add ebx,dword [esp+20] ; scr_w
sub eax,2
;
mov ebx,6 mov ebx,6
div bx div bx
add eax,ed_offset add eax,ed_offset
cmp eax,ed_size cmp eax,ed_size
jna edit_box_mouse._mshift jna edit_box_mouse._mshift
mov eax,ed_size mov eax,ed_size
edit_box_mouse._mshift: edit_box_mouse._mshift:
;;;;;;; ;;;;;;;
;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥­¨ï ¯® shift ;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥­¨ï ¯® shift
@ -1025,7 +1015,7 @@ edit_box_mouse.drc: call edit_box.draw_border
; Œ ªà®á ¢ë室  ; Œ ªà®á ¢ë室 
macro edit_ex macro edit_ex
{ {
popa popad
ret ret
} }
macro debug macro debug

View File

@ -111,13 +111,9 @@ still: ;
jz button jz button
push dword edit1 push dword edit1
push 22
push 5
call [edit_box_mouse] call [edit_box_mouse]
push dword edit2 push dword edit2
push 22
push 5
call [edit_box_mouse] call [edit_box_mouse]
push dword check1 push dword check1

View File

@ -1,4 +1,4 @@
..\FASM\fasm.exe box_lib.asm @fasm.exe box_lib.asm
..\FASM\fasm.exe editbox_ex.asm editbox_ex.kex @fasm.exe editbox_ex.asm editbox_ex.kex
REM ..\FASM\kpack.exe editbox_ex REM ..\FASM\kpack.exe editbox_ex
..\emul\klbrinwin.exe editbox_ex.kex @klbrinwin.exe editbox_ex.kex

View File

@ -2,7 +2,7 @@
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥­ ®¡«¥£ç¨âì ¦¨§­ì :) ᯥ樠«ì­® ¤«ï editbox include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥­ ®¡«¥£ç¨âì ¦¨§­ì :) ᯥ樠«ì­® ¤«ï editbox
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
macro use_edit_box procinfo,scr_h,scr_w macro use_edit_box
{ {
edit_box: edit_box:
ed_width equ [edi] ;è¨à¨­  ª®¬¯®­¥­â  ed_width equ [edi] ;è¨à¨­  ª®¬¯®­¥­â 
@ -16,18 +16,18 @@ ed_text_color equ [edi+28] ;梥
ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥á⨠ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
ed_text equ [edi+36] ;㪠§ â¥«ì ­  ¡ãä¥à ed_text equ [edi+36] ;㪠§ â¥«ì ­  ¡ãä¥à
ed_flags equ [edi+40] ;ä« £¨ ed_flags equ [edi+40] ;ä« £¨
ed_size equ [edi+42] ;ª®«-¢® ᨬ¢®«®¢ ed_size equ [edi+44] ;ª®«-¢® ᨬ¢®«®¢
ed_pos equ [edi+46] ;¯®§¨æ¨ï ªãàá®à  ed_pos equ [edi+48] ;¯®§¨æ¨ï ªãàá®à 
ed_offset equ [edi+50] ;ᬥ饭¨¥ ed_offset equ [edi+52] ;ᬥ饭¨¥
cl_curs_x equ [edi+54] ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å cl_curs_x equ [edi+56] ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
cl_curs_y equ [edi+58] ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã cl_curs_y equ [edi+60] ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
ed_shift_pos equ [edi+62] ;¯®«®¦¥­¨¥ ªãàá®à  ed_shift_pos equ [edi+64] ;¯®«®¦¥­¨¥ ªãàá®à 
ed_shift_pos_old equ [edi+66] ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à  ed_shift_pos_old equ [edi+68] ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
;========================================================== ;==========================================================
;=== ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ================================= ;=== ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ =================================
;========================================================== ;==========================================================
.draw: .draw:
pusha pushad
;--- à¨á㥬 à ¬ªã --- ;--- à¨á㥬 à ¬ªã ---
call .draw_border ; ”ã­ªæ¨ï áâ ¡¨«ì­  call .draw_border ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
.draw_bg_cursor_text: .draw_bg_cursor_text:
@ -54,7 +54,7 @@ edit_ex
;=== ®¡à ¡®âª  ª« ¢¨ âãàë ================================= ;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
;========================================================== ;==========================================================
.key: .key:
pusha pushad
test word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬ test word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
je .editbox_exit je .editbox_exit
test word ed_flags,ed_mouse_on test word ed_flags,ed_mouse_on
@ -91,7 +91,7 @@ use_work_key
;=== ®¡à ¡®âª  ¬ëè¨ ======================================= ;=== ®¡à ¡®âª  ¬ëè¨ =======================================
;========================================================== ;==========================================================
.mouse: .mouse:
pusha pushad
;debug ;debug
;---------------------------------------------------------- ;----------------------------------------------------------
;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ ----------------------- ;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
@ -117,13 +117,14 @@ pusha
je @f je @f
jmp ._blur 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 ;”㭪樨 ¤«ï à ¡®âë á mouse
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
use_mouse_func scr_w use_mouse_func
} }
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Bit mask from editbox ;Bit mask from editbox
@ -161,12 +162,8 @@ 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,use_f9,procinfo macro draw_edit_boxes start,_end
{ {
if use_f9 eq
else
mcall 9,procinfo,-1
end if
mov edi,start mov edi,start
mov ecx,((_end-start)/ed_struc_size) mov ecx,((_end-start)/ed_struc_size)
@@: @@:
@ -194,7 +191,7 @@ macro key_edit_boxes start,end
add edi,ed_struc_size add edi,ed_struc_size
loop @b loop @b
} }
ed_struc_size=70 ed_struc_size=72
struc edit_box width,left,top,color,shift_color,focus_border_color,\ struc edit_box width,left,top,color,shift_color,focus_border_color,\
blur_border_color,text_color,max,text,flags,size,pos 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 .text_color dd text_color
.max dd max .max dd max
.text dd text .text dd text
.flags dw flags+0 .flags dd flags+0
.size dd size+0 .size dd size+0
.pos dd pos+0 .pos dd pos+0
.offset dd 0 .offset dd 0
@ -245,12 +242,8 @@ macro edit_boxes_set_sys_color start,end,color_table
loop @b 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 mov edi,ed_ptr
call edit_box.draw call edit_box.draw
} }

View File

@ -84,23 +84,17 @@ draw_edit_boxes -
Передаваемые параметры Передаваемые параметры
editboxes - указатель на информационную структуру боксов editboxes - указатель на информационную структуру боксов
editboxes_end - конец информационной структуры боксов editboxes_end - конец информационной структуры боксов
use_f9 и procinfo - при передаче этого параметра - при перерисовки боксов будет исползована фунция
mcall 9,procinfo,-1
которая получает данные о окне и складывает параметры по адресу procinfo- его то же обязательно нужно передавать!!!!
Если в программе уже используется эта функция, то не нужно указывать данные параметр!!!!
Как под вариант существует макрос Как под вариант существует макрос
draw_edit_box - он используется если выводится один бокс draw_edit_box - он используется если выводится один бокс
Передаваемый параметр Передаваемый параметр
editboxes - указатель на информационную структуру боксов editboxes - указатель на информационную структуру боксов
use_f9 и procinfo - при передаче этого параметра - при перерисовки боксов будет использована функция
mcall 9,procinfo,-1
которая получает данные о окне и складывает параметры по адресу procinfo- его то же обязательно нужно передавать!!!!
Если в программе уже используется эта функция, то не нужно указывать данные параметр!!!!
Больше никаких параметров передавать не нужно. Больше никаких параметров передавать не нужно.
********** **********
default_box - макрос который приводит основные данные макроса по дефолту т.е. Снимает битовую матрицу выделения default_box - макрос который приводит основные данные макроса по дефолту т.е. Снимает битовую матрицу выделения
Специально для KFM :)) Нужно добавить этот код при обработчике yes or no при копировании. Если будет вести себя неадекватно - необходимо раскомментировать строки в данном макросе Специально для 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 .text_color dd text_color
.max dd max .max dd max
.text dd text .text dd text
.flags dw flags+0 .flags dd flags+0
.size dd size+0 .size dd size+0
.pos dd 0 - где будет находиться курсор .pos dd 0 - где будет находиться курсор
.offset dd 0 .offset dd 0

View File

@ -6,6 +6,7 @@ You bunny wrote .....
Это не много фольклера, связанное, с тем, что написание программ длинные и муторный процесс, и он не обходиться без выражений подобного содержания, но не попадающего в коментарии и основной код..... Это не много фольклера, связанное, с тем, что написание программ длинные и муторный процесс, и он не обходиться без выражений подобного содержания, но не попадающего в коментарии и основной код.....
Теплов Алексей Юрьевич aka <Lrz> Теплов Алексей Юрьевич aka <Lrz>
; <Lrz> 23.07.2008 Переписана обработка мышки без использования 9-ой функции, уменьшил примерно на 50 байт код.
; <Lrz> 20.07.2007 Косметические улучшения в коде программы, исправлен один несущественный баг. ; <Lrz> 20.07.2007 Косметические улучшения в коде программы, исправлен один несущественный баг.
; <Lrz> 18.05.2007 Улучшение понимания работы программы за счет вынеса основных функций в отдельные макросы ; <Lrz> 18.05.2007 Улучшение понимания работы программы за счет вынеса основных функций в отдельные макросы
; <Lrz> 14.05.2007 Использование макросов,удобочитаемось программы использование макроса mcall для вызова сис. функций ; <Lrz> 14.05.2007 Использование макросов,удобочитаемось программы использование макроса mcall для вызова сис. функций

View File

@ -1,3 +1,3 @@
@fasm editbox.asm editbox @fasm editbox.asm editbox.kex
REM @kpack editbox REM @kpack editbox
@pause @pause

View File

@ -7,7 +7,7 @@
include 'editbox.inc' include 'editbox.inc'
meos_app_start meos_app_start
align 4 align 4
use_edit_box procinfo,22,5 use_edit_box
;Ž¡« áâì ª®¤  ;Ž¡« áâì ª®¤ 
code ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã code ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã
mcall 40,0x27 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ mcall 40,0x27 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩
@ -41,7 +41,7 @@ align 4
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,use_f9,procinfo ;à¨á®¢ ­¨¥ edit box'®¢ draw_edit_boxes editboxes,editboxes_end ;à¨á®¢ ­¨¥ edit box'®¢
mcall 12,2 mcall 12,2
ret 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: 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 20.07.2007',0 hed db 'EDITBOX optimization and retype <Lrz> date 23.07.2008',0
rb 256 rb 256
ed_buffer: ed_buffer:
;.1: rb 514;256 ;.1: rb 514;256
@ -64,6 +64,5 @@ ed_buffer:
;¤¢  § ¯ á­ëå ¡ ©â  ­¥®¡å®¤¨¬ë ¤«ï ⮣® çâ® ¡ë ­¥ ¯¥¯¥à¥¯¨á âì á«¥¤ãî騥© ¡ ©âë, ¢ ª®­æ¥ ¡ãä¥à  0 ;¤¢  § ¯ á­ëå ¡ ©â  ­¥®¡å®¤¨¬ë ¤«ï ⮣® çâ® ¡ë ­¥ ¯¥¯¥à¥¯¨á âì á«¥¤ãî騥© ¡ ©âë, ¢ ª®­æ¥ ¡ãä¥à  0
buffer_end: buffer_end:
align 16 align 16
procinfo process_information
meos_app_end meos_app_end
udata udata

View File

@ -818,7 +818,7 @@ edit_ex
jmp .draw_cursor_text jmp .draw_cursor_text
} }
macro use_mouse_func scr_w macro use_mouse_func
{ {
;---------------------------------------------------------- ;----------------------------------------------------------
;--- Ž¡à ¡®âª  .mouse_wigwag ;--- Ž¡à ¡®âª  .mouse_wigwag
@ -829,12 +829,10 @@ macro use_mouse_func scr_w
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox ;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox
;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
mov ebx,dword [procinfo+34] test ax,0x8000
add ebx,ed_left jnz .mleft
if scr_w eq
else mov ebx,ed_left
add ebx,dword scr_w
end if
cmp eax,ebx cmp eax,ebx
jb .mleft jb .mleft
@ -893,6 +891,7 @@ end if
; popa ; popa
; ret ; ret
.mleft: .mleft:
mov eax,ed_pos mov eax,ed_pos
cmp eax,0 cmp eax,0
jbe .mwigvag jbe .mwigvag
@ -919,7 +918,7 @@ end if
jmp .mdraw 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 ------------- ;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
;---------------------------------------------------------- ;----------------------------------------------------------
mov ebx,dword [procinfo + 38]
add ebx,ed_top mov ebx,ed_top
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
add ebx,ed_height add ebx,ed_height
cmp ax,bx cmp ax,bx
jg ._blur;.mouse_end_no_focus jg ._blur;.mouse_end_no_focus
shr eax,16 shr eax,16
mov ebx,dword [procinfo + 34] mov ebx,ed_left
add ebx,ed_left
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
add ebx,ed_width add ebx,ed_width
cmp ax,bx cmp ax,bx
jg ._blur;.mouse_end_no_focus jg ._blur;.mouse_end_no_focus
;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  --- ;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
push eax push eax
mov ebp,ed_color mov ebp,ed_color
call .clear_cursor call .clear_cursor
pop eax pop eax
._mvpos: ._mvpos:
mov ebx,dword [procinfo+ 34]
xor edx,edx xor edx,edx
sub eax,ed_left sub eax,ed_left
sub eax,ebx
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
@ -1029,7 +1016,7 @@ end if
; Œ ªà®á ¢ë室  ; Œ ªà®á ¢ë室 
macro edit_ex macro edit_ex
{ {
popa popad
ret ret
} }
macro debug macro debug