forked from KolibriOS/kolibrios
6cdf720037
1) Transfer of parameters to functions of library is copied on the convention stdcall. 2) Now functions link on names. 3)Now, if to guide the mouse on a component and to press the left button of the mouse all messages from the mouse are sent only to this component.If to release(let off) the left button of the mouse messages from the mouse again become accessible to all components. 4) In library new functions are added. int Version (void) - to receive the version of library. The version comes back in a format: year + month + day. The current library has version 71014. void RemoveComponent (void *Control, int new_x, int new_y) - moves a component to new coordinates. void ResizeComponent (void *Control, int new_sizex, int new_sizey) - changes the size of a component. Examples of use of these functions look in example Bookmark. 5) The example of work with libGUI in programming language C is added. This example is a part of the interface written by me for my scientific program. git-svn-id: svn://kolibrios.org@648 a494cfbc-eb01-0410-851d-a64ba20cac60
1143 lines
35 KiB
PHP
1143 lines
35 KiB
PHP
;Œ ªà®á ¤«ï ¢ë¢®¤ ®á®¢ëå äãªæ¨© ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬
|
||
macro use_general_func
|
||
{
|
||
;debug_func
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ¢ë¤¥«¥®© ç á⨠-----------------
|
||
;----------------------------------------------------------
|
||
.draw_shift:
|
||
test word [EditBox.ed_flags],ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« áâ¨
|
||
jz @f
|
||
mov ebp,[EditBox.shift_color]
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_
|
||
@@: ret
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ --------------------------
|
||
;----------------------------------------------------------
|
||
.draw_text:
|
||
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
|
||
;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì ---
|
||
call .get_n
|
||
mov esi,[EditBox.ed_size]
|
||
mov ebx,ed_offset
|
||
sub esi,ebx
|
||
cmp eax,esi
|
||
jae @F
|
||
mov esi,eax ;çâ®¡ë ¥ ¢ë室¨âì § ¯à¥¤¥«ë íªà
|
||
;--- à¨á㥬 ⥪áâ ---
|
||
@@: mov eax,4
|
||
mov ebx,[EditBox.ed_left]
|
||
mov edx,ed_offset
|
||
add ebx,2
|
||
shl ebx,16
|
||
add ebx,[EditBox.ed_top]
|
||
mov ecx,[EditBox.ed_text_color]
|
||
add ebx,4
|
||
add edx,[EditBox.ed_text]
|
||
mcall
|
||
ret
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ----------------------------
|
||
;¢å®¤ë¥ ¤ ë¥
|
||
;eax
|
||
;edx - color
|
||
;----------------------------------------------------------
|
||
;¢å®¤ ⮫쪮 梥â edx
|
||
.draw_bg:
|
||
mov ebx,[EditBox.ed_left]
|
||
add ebx,1
|
||
mov edx,[EditBox.ed_color]
|
||
shl ebx,16
|
||
add ebx,[EditBox.ed_width]
|
||
sub ebx,1
|
||
.draw_bg_eax:
|
||
mov ecx,[EditBox.ed_top]
|
||
mov eax,13
|
||
add ecx,1
|
||
shl ecx,16
|
||
add ecx,ed_height
|
||
dec ecx
|
||
mcall
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨¥ ª®¬¯®¥â
|
||
;----------------------------------------------------------
|
||
.get_n:
|
||
mov eax,[EditBox.ed_width] ;¯®«ã祬 è¨à¨ã ª®¬¯®¥â
|
||
xor edx,edx ;१ã«ìâ â à ᯮ«®£ ¥âáï ¢ ¯ ॠedx:eax ¢ eax - ®áâ ⮪
|
||
sub eax,4 ;¢ëç⨬ 4
|
||
mov ebx,6 ;§ £à㧬¨ ¤¥«¨â¥«ì
|
||
div ebx ;à §¬¤¥«¨¬ 6
|
||
ret
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à --------------------------
|
||
;----------------------------------------------------------
|
||
;¢å®¤ë¥ ebp- 梥â
|
||
.clear_cursor:
|
||
mov edx,ebp
|
||
mov ebx,cl_curs_x
|
||
mov ecx,cl_curs_y
|
||
jmp .draw_curs
|
||
.draw_cursor:
|
||
mov edx,[EditBox.ed_text_color]
|
||
mov ebx,ed_pos
|
||
mov ecx,ed_offset
|
||
sub ebx,ecx
|
||
|
||
lea ebx,[ebx*2+ebx]
|
||
shl ebx,1
|
||
;imul ebx,6
|
||
add ebx,[EditBox.ed_left]
|
||
mov ecx,[EditBox.ed_top]
|
||
inc ebx
|
||
add ecx,2
|
||
mov ebp,ebx
|
||
shl ebx,16
|
||
mov bx,bp
|
||
mov ebp,ecx
|
||
|
||
shl ecx,16
|
||
mov cx,bp
|
||
add ecx,ed_height-4
|
||
|
||
mov cl_curs_x,ebx
|
||
mov cl_curs_y,ecx
|
||
.draw_curs:
|
||
mcall 38
|
||
ret
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ----------------------------
|
||
;----------------------------------------------------------
|
||
.draw_border:
|
||
;--- 梥â à ¬ª¨ ---
|
||
test word [EditBox.ed_flags],ed_focus
|
||
mov edx,[EditBox.ed_focus_border_color]
|
||
jne @f
|
||
mov edx,[EditBox.ed_blur_border_color]
|
||
@@:
|
||
;--- ᢥàåã ---
|
||
mov eax,38
|
||
mov ebx,[EditBox.ed_left]
|
||
mov ecx,ebx
|
||
shl ebx,16
|
||
mov bx,cx
|
||
add ebx,[EditBox.ed_width]
|
||
mov ecx,[EditBox.ed_top]
|
||
mov esi,ecx
|
||
shl ecx,16
|
||
mov cx,si
|
||
mcall
|
||
;--- ᨧã ---
|
||
mov esi,ecx
|
||
add ecx,ed_height
|
||
mov ebp,ecx
|
||
shl ecx,16
|
||
mov cx,bp
|
||
mcall
|
||
;--- á«¥¢ ---
|
||
mov cx,si
|
||
mov ebp,ebx
|
||
sub ebx,[EditBox.ed_width]
|
||
mcall
|
||
;--- á¯à ¢ ---
|
||
mov ebx,ebp
|
||
shl ebx,16
|
||
mov bx,bp
|
||
mcall
|
||
ret
|
||
;----------------------------------------------------------
|
||
;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, ---
|
||
;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------
|
||
;--- ¥á«¨ ᬥ饨¥ ¡ë«® ãáâ ®¢ª ä« £ ed_offset_cl ¨ ç¥
|
||
; ¥á«¨ ¨ç¥£® ¥ ¨§¬¥¨«®áì â® ¢ëáâ ¢«¥¨¥ ed_offset_fl
|
||
; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï¨ï ª®¬¯®¥â®¢ word [EditBox.ed_flags]
|
||
;----------------------------------------------------------
|
||
.check_offset:
|
||
pusha
|
||
mov ecx,ed_pos
|
||
mov ebx,ed_offset
|
||
cmp ebx,ecx
|
||
ja .sub_8
|
||
|
||
push ebx
|
||
call .get_n ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ ॠॣ¨áâ஢ edx:eax
|
||
pop ebx
|
||
mov edx,ebx
|
||
add edx,eax ;ed_offset+width editbox
|
||
inc edx ;¥®¡å®¤¨¬® ¤«ï ®¬ «ì®£® ¯®«®¦¥¨ï ªãàá®à ¢ ªà ©¥© «¥¢®© ¯®§¨æ¨¨
|
||
cmp edx,ecx
|
||
ja @f
|
||
|
||
mov edx,[EditBox.ed_size]
|
||
cmp edx,ecx
|
||
je .add_end
|
||
|
||
sub edx,ecx
|
||
cmp edx,8
|
||
jbe .add_8
|
||
add ebx,8
|
||
jmp .chk_d
|
||
|
||
.sub_8: cmp ecx,0
|
||
je .sub_min
|
||
cmp ebx,8
|
||
jbe .sub_min
|
||
sub ebx,8 ;ebx=ed_offset
|
||
jmp .chk_d
|
||
.sub_min:
|
||
xor ebx,ebx
|
||
jmp .chk_d
|
||
|
||
.add_end:sub edx,eax
|
||
mov ebx,edx
|
||
jmp .chk_d
|
||
.add_8: add ebx,edx
|
||
.chk_d: mov ed_offset,ebx
|
||
call .draw_bg
|
||
and word [EditBox.ed_flags],ed_offset_cl
|
||
edit_ex
|
||
@@:
|
||
or word [EditBox.ed_flags],ed_offset_fl
|
||
edit_ex
|
||
}
|
||
|
||
macro use_key_func
|
||
{
|
||
;Ž¡à ¡®âª Shift ¤«ï áïâ¨ï ¢ë¤¥«¥¨ï ¥¨§¢¥á⮩ ®¡« áâ¨
|
||
.shift: ;;;;;;;SHIFT
|
||
test word [EditBox.ed_flags],ed_shift
|
||
je .f_exit
|
||
|
||
@@: mov ebp,[EditBox.shift_color]
|
||
or word [EditBox.ed_flags],ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« áâ¨
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_
|
||
jmp .draw_cursor_text
|
||
;;;;;;;;;;;;;;;;;;;;;
|
||
.f_exit:call .check_offset
|
||
and word [EditBox.ed_flags],ed_shift_cl
|
||
call .enable_null
|
||
jmp .draw_cursor_text
|
||
.sh_cl_:
|
||
;;;;;;SHIFT end
|
||
;®¡à ¡®âª ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥¨¨ ¢ë¤¥«¥¨ï
|
||
;¤«ï ®¡à ¡®âª¨ áïâ¨ï ¢ë¤¥«¥¨ï
|
||
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
|
||
mov eax,dword ed_pos
|
||
cmp eax,ebx
|
||
|
||
jae .sh_n
|
||
push eax ;¬¥ì襥 ¢ eax
|
||
push ebx ;¡®«ì襥
|
||
jmp .sh_n1
|
||
;¥á«¨ ¨ ç¥
|
||
.sh_n: push ebx
|
||
push eax
|
||
.sh_n1:
|
||
call .check_offset
|
||
call .get_n
|
||
mov edx,eax ;size of ed_box
|
||
mov ecx,ed_offset
|
||
add eax,ecx ;eax = w_off= ed_offset+width
|
||
mov edx,eax ;save
|
||
pop ebx ;¡®«ì襥
|
||
pop eax ;¬¥ì襥
|
||
|
||
cmp eax,ecx ;áà ¢¥¨¥ á ¬¥ì襣® á offset.
|
||
jae .f_f ;¥á«¨ ¡®«ìè¥
|
||
xor eax,eax
|
||
cmp edx,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬
|
||
jb @f
|
||
sub ebx,ecx
|
||
jmp .nxt_f
|
||
@@: mov ebx,edx
|
||
sub ebx,ecx
|
||
jmp .nxt_f
|
||
.f_f:
|
||
sub eax,ecx
|
||
cmp edx,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬
|
||
jle @f
|
||
sub ebx,ecx
|
||
sub ebx,eax
|
||
jmp .nxt_f
|
||
@@:
|
||
mov ebx,edx
|
||
sub ebx,ecx
|
||
sub ebx,eax
|
||
.nxt_f:
|
||
mov edx,ebx
|
||
lea ebx,[eax*2+eax]
|
||
shl ebx,1
|
||
add ebx,[EditBox.ed_left]
|
||
inc ebx
|
||
shl ebx,16
|
||
lea ecx,[edx*2+edx]
|
||
shl ecx,1
|
||
mov bx,cx
|
||
inc ebx
|
||
mov edx,ebp;[EditBox.shift_color]
|
||
|
||
call .draw_bg_eax
|
||
@@: call .enable_null
|
||
ret
|
||
;;;;;;;;;;;;;;;;;;;;;
|
||
;“áâ ®¢ª - áï⨥ ¢ë¤¥«¥¨ï ¢ ®¤¨ ᨬ¢®«
|
||
;;;;;;;;;;;;;;;;;;;;;
|
||
.drw_sim:
|
||
mov eax,dword ed_pos
|
||
call .draw_rectangle ; à¨á®¢ âì ¯àאַ㣮«ì¨ª á § ¤ ë¬ æ¢¥â®¬
|
||
jmp @b
|
||
;;;;;;;;;;;;;;;;;;;;;
|
||
;”ãªæ¨ï ãáâ ®¢ª¨ ¢ë¤¥«¥¨ï ¯à¨ ¤¢¨¦¥¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ¦ ⨨ shift
|
||
;‹®£¨ª :
|
||
;;;;;;;;;;
|
||
.draw_wigwag:
|
||
;äãªæ¨ï ãáâ ®¢ª¨ ¯¥à¥¬¥ëå
|
||
mov ebp,[EditBox.shift_color]
|
||
call .clear_cursor
|
||
|
||
or word [EditBox.ed_flags],ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« áâ¨
|
||
mov ebp,[EditBox.shift_color]
|
||
mov eax,dword ed_pos
|
||
test word [EditBox.ed_flags],ed_left_fl
|
||
jz .low
|
||
jmp @f
|
||
;;;;;;;;;;
|
||
;”ãªæ¨ï 㤠«¥¨ï ¢ë¤¥«¥¨ï ¯à¨ ¤¢¨¦¥¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ¦ ⨨ shift
|
||
;‹®£¨ª :
|
||
;;;;;;;;;;
|
||
.draw_wigwag_cl:
|
||
;äãªæ¨ï ãáâ ®¢ª¨ ¯¥à¥¬¥ëå
|
||
mov ebp,[EditBox.ed_color]
|
||
call .clear_cursor
|
||
|
||
mov ebp,[EditBox.ed_color]
|
||
mov eax,dword ed_pos
|
||
test word [EditBox.ed_flags],ed_left_fl
|
||
jz .low
|
||
@@: call .draw_rectangle ; à¨á®¢ âì ¯àאַ㣮«ì¨ª § ªà 訢 ¥¬®© ®¡« áâ¨
|
||
ret
|
||
.low: dec eax
|
||
jmp @b
|
||
;¢å®¤®© ¯ à ¬¥âà ebx - ed_pos
|
||
.sh_first_sh:
|
||
test word [EditBox.ed_flags],ed_shift
|
||
je @f
|
||
mov dword ed_shift_pos_old,ebx
|
||
test word [EditBox.ed_flags],ed_shift_on
|
||
jne @f
|
||
mov dword ed_shift_pos,ebx
|
||
or word [EditBox.ed_flags],ed_shift_on
|
||
@@: ret
|
||
;Ž¡à ¡®âª ªà ©¨å ¯®«®¦¥¨© ¢ editbox ¯à¨ ¦ ⮬ shift
|
||
;¯à®¨§¢®¤¨â áï⨥ ¢ë¤¥«¥¨¥, ¥á«¨ ¥â shift
|
||
;¨ ç¥ ¢®®¡é¥ ¢ë室¨â
|
||
.sh_st_of:
|
||
test word [EditBox.ed_flags],ed_shift
|
||
jne @f
|
||
test word [EditBox.ed_flags],ed_shift_bac
|
||
je @f
|
||
mov ebp,[EditBox.ed_color]
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_ ;®ç¨á⪠¢ë¤¥«¥®£® äà £¬¥â
|
||
and word [EditBox.ed_flags],ed_shift_cl ; ®ç¨á⪠®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥¨¥
|
||
jmp .draw_cursor_text
|
||
@@:
|
||
and word [EditBox.ed_flags],ed_shift_off
|
||
edit_ex
|
||
;¯à®¢¥àª á®áâ®ï¨ï shift ¡ë« «¨ ® ¦ â à ìè¥?
|
||
.sh_enable:
|
||
test word [EditBox.ed_flags],ed_shift
|
||
jne .sh_ext_en ; à¨á®¢ âì § ªà è¥ë© ¯àאַ㣮«ì¨ª
|
||
|
||
test word [EditBox.ed_flags],ed_shift_bac
|
||
je @f
|
||
call .check_offset
|
||
|
||
mov ebp,[EditBox.ed_color]
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_ ;®ç¨á⪠¢ë¤¥«¥®£® äà £¬¥â
|
||
call .draw_wigwag_cl
|
||
and word [EditBox.ed_flags],ed_shift_cl ; 1¢ à ¥ 㦮
|
||
ret
|
||
|
||
@@: mov ebp,[EditBox.ed_color]
|
||
call .clear_cursor
|
||
call .check_offset
|
||
ret
|
||
.sh_ext_en:
|
||
call .check_offset
|
||
test word [EditBox.ed_flags],ed_offset_fl
|
||
je @f
|
||
;<EFBFBD>¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å
|
||
mov eax,dword ed_shift_pos
|
||
mov ebx,dword ed_pos
|
||
mov ecx,dword ed_shift_pos_old
|
||
;¯à®¢¥àª ¨ à¨á®¢ ¨¥ § ªà è¥ëå ®¡« á⥩
|
||
cmp eax,ecx
|
||
je .1_shem
|
||
jb .smaller
|
||
cmp ecx,ebx
|
||
ja .1_shem
|
||
call .draw_wigwag_cl ;clear
|
||
jmp .sh_e_end
|
||
.smaller:
|
||
cmp ecx,ebx
|
||
jb .1_shem
|
||
call .draw_wigwag_cl ;clear
|
||
jmp .sh_e_end
|
||
;alike =
|
||
.1_shem: call .draw_wigwag
|
||
.sh_e_end: and word [EditBox.ed_flags],ed_shift_off
|
||
ret
|
||
@@: mov ebp,[EditBox.shift_color]
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_
|
||
jmp .sh_e_end
|
||
;äãªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ¦ ⨨ home and end
|
||
.sh_home_end:
|
||
mov ebp,[EditBox.ed_color]
|
||
call .clear_cursor
|
||
test word [EditBox.ed_flags],ed_shift_bac
|
||
je @f
|
||
mov ebp,[EditBox.ed_color]
|
||
mov ebx,dword ed_shift_pos_old
|
||
call .sh_cl_
|
||
|
||
@@: test word [EditBox.ed_flags],ed_shift
|
||
je .sh_exit_ ;¢ë©â¨
|
||
mov ebp,[EditBox.shift_color]
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_
|
||
or word [EditBox.ed_flags],ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« áâ¨
|
||
jmp .sh_e_end
|
||
.sh_exit_: call .check_offset
|
||
ret
|
||
;äãªæ¨ï ¢¥á¥¨ï 0 ¯® ¤à¥áã [EditBox.ed_size]+1
|
||
.enable_null:
|
||
pusha
|
||
mov eax,[EditBox.ed_size]
|
||
mov ebx,[EditBox.ed_text]
|
||
test eax,eax
|
||
add eax,ebx
|
||
jne @f
|
||
inc eax
|
||
@@: xor ebx,ebx
|
||
mov [eax],bl
|
||
edit_ex
|
||
;- 㤠«¥¨¥ ᨬ¢®«
|
||
;‚å®¤ë¥ ¤ ë¥ edx=[EditBox.ed_size];ecx=ed_pos
|
||
.del_char:
|
||
mov esi,[EditBox.ed_text]
|
||
test word [EditBox.ed_flags],ed_shift_on
|
||
je @f
|
||
mov eax,dword ed_shift_pos
|
||
mov ebx,esi
|
||
cmp eax,ecx
|
||
jae .dh_n
|
||
|
||
mov ed_pos,eax ;çâ® ¡ë ¥ ¡ë«® ã¡¥£ ¨ï ªãàá®à
|
||
mov ebp,ecx
|
||
sub ebp,eax
|
||
add ebx,eax ;eax ¬¥ìè¥
|
||
sub edx,ecx
|
||
add esi,ecx
|
||
|
||
mov dword ed_shift_pos,ebp
|
||
jmp .del_ch_sh
|
||
;¥á«¨ ¨ ç¥
|
||
.dh_n:
|
||
mov ebp,eax
|
||
sub ebp,ecx
|
||
add ebx,ecx
|
||
sub edx,eax
|
||
add esi,eax
|
||
mov dword ed_shift_pos,ebp
|
||
jmp .del_ch_sh
|
||
|
||
@@: add esi,ecx ;㪠§ ⥫ì + ᬥ饨¥ ª ॠ«ì®¬ã ¡ãää¥àã
|
||
mov ebx,esi
|
||
inc esi
|
||
cld
|
||
|
||
sub edx,ecx
|
||
.del_ch_sh:
|
||
|
||
push edi
|
||
mov edi,ebx
|
||
@@:
|
||
lodsb
|
||
stosb
|
||
dec edx
|
||
jns @b
|
||
|
||
pop edi
|
||
ret
|
||
;¢ëç¨á«¨âì § ªà 訢 ¥¬ãî ®¡« áâì
|
||
;ᮣ« 襨¥ ¢ ebp - ¯¥à¥¤ ¥âáï [EditBox.ed_size]
|
||
.clear_bg:
|
||
call .get_n ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨ë ª®¬¯®¥â
|
||
push eax
|
||
mov ebx,ed_offset
|
||
add eax,ebx ;eax = w_off= ed_offset+width
|
||
mov ebx,ebp ;[EditBox.ed_size]
|
||
|
||
cmp eax,ebx
|
||
jb @f
|
||
mov eax,ed_pos
|
||
sub ebx,eax
|
||
mov ecx,ed_offset
|
||
sub eax,ecx
|
||
jmp .nxt
|
||
@@: mov ebx,ed_pos
|
||
push ebx
|
||
sub eax,ebx
|
||
mov ebx,eax ;It is don't optimal
|
||
|
||
pop eax ;ed_pos
|
||
mov ecx,ed_offset
|
||
sub eax,ecx
|
||
.nxt:
|
||
mov ebp,eax ;¯à®¢¥àª ¢ë室 § ªà 訢 ¥¬®© ®¡« á⨠§ ¯à¥¤¥«ë ¤«¨ë
|
||
add ebp,ebx
|
||
pop edx
|
||
cmp ebp,edx
|
||
je @f
|
||
inc ebx
|
||
|
||
@@: mov edx,ebx
|
||
lea ebx,[eax*2+eax]
|
||
shl ebx,1
|
||
add ebx,[EditBox.ed_left]
|
||
inc ebx
|
||
shl ebx,16
|
||
lea ecx,[edx*2+edx]
|
||
shl ecx,1
|
||
mov bx,cx
|
||
mov edx,[EditBox.ed_color]
|
||
call .draw_bg_eax
|
||
ret
|
||
;;;;;;;;;;;;;;;;;;;
|
||
;;; Ž¡à ¡®âª ¯à¨¬¨â¨¢®¢
|
||
;;;;;;;;;;;;;;;;;;;;
|
||
;<3B> à¨á®¢ âì ¯àאַ㣮«ì¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp
|
||
;¢å®¤ë¥ ¯ à ¬¥âàë:
|
||
;eax=dword ed_pos
|
||
;ebp=-梥â [EditBox.ed_color] or [EditBox.shift_color]
|
||
.draw_rectangle:
|
||
mov ecx,dword ed_offset
|
||
sub eax,ecx
|
||
lea ebx,[eax*2+eax]
|
||
shl ebx,1
|
||
inc ebx
|
||
add ebx,[EditBox.ed_left]
|
||
shl ebx,16
|
||
add ebx,6
|
||
mov edx,ebp
|
||
call .draw_bg_eax
|
||
ret
|
||
;;;;;;;;;;;;;;;;;;
|
||
;;<3B>஢¥àª ¦ â «¨ shift
|
||
;;;;;;;;;;;;;;;;;;
|
||
.check_shift:
|
||
pusha ;á®åà ¨¬ ¢á¥ ॣ¨áâàë
|
||
mcall 66,3,1
|
||
test al,0x03
|
||
je @f
|
||
or word [EditBox.ed_flags],ed_shift ;ãáâ ®¢¨¬ ä« £
|
||
@@:edit_ex
|
||
}
|
||
;¬ ªà®á ª« ¢¨è ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï
|
||
macro use_key_process backspase,delete,left,right,home,end,insert
|
||
{
|
||
if backspase eq
|
||
else
|
||
cmp ah,8
|
||
jz .backspace
|
||
end if
|
||
if delete eq
|
||
else
|
||
cmp ah,0xb6
|
||
jz .delete
|
||
end if
|
||
if left eq
|
||
else
|
||
cmp ah,176
|
||
jz .left
|
||
end if
|
||
if right eq
|
||
else
|
||
cmp ah,179
|
||
jz .right
|
||
end if
|
||
if home eq
|
||
else
|
||
cmp ah,180
|
||
jz .home
|
||
end if
|
||
if home eq
|
||
else
|
||
cmp ah,181
|
||
jz .end
|
||
end if
|
||
if insert eq
|
||
else
|
||
cmp ah,185 ;insert
|
||
jz .insert
|
||
end if
|
||
}
|
||
macro use_key_no_process up,down,esc
|
||
{
|
||
if up eq
|
||
else
|
||
cmp ah,177
|
||
jz .editbox_exit
|
||
end if
|
||
if down eq
|
||
else
|
||
cmp ah,178
|
||
jz .editbox_exit
|
||
end if
|
||
if esc eq
|
||
else
|
||
cmp ah,27 ;ESC - ª« ¢¨è ))
|
||
jz .editbox_exit
|
||
end if
|
||
}
|
||
|
||
macro use_key_figures_only
|
||
{
|
||
test word [EditBox.ed_flags],ed_figure_only ; ⮫쪮 æ¨äàë ?
|
||
jz @f
|
||
cmp ah,'0'
|
||
jb .editbox_exit
|
||
cmp ah,'9'
|
||
ja .editbox_exit
|
||
@@:
|
||
}
|
||
macro are_key_shift_press
|
||
{
|
||
test word [EditBox.ed_flags],ed_shift_on
|
||
je @f
|
||
;‚å®¤ë¥ ¤ ë¥ edx=[EditBox.ed_size];ecx=ed_pos
|
||
push eax
|
||
mov edx,[EditBox.ed_size]
|
||
mov ecx, ed_pos
|
||
pusha
|
||
;;;;;;;;;;;;;;;;;;;;;
|
||
mov ebp,[EditBox.ed_color]
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_
|
||
;;;;;;;;;;;;;;;;;;;;;
|
||
popa
|
||
call .del_char
|
||
;;;;
|
||
mov eax,dword ed_shift_pos
|
||
mov ebx,[EditBox.ed_size]
|
||
sub ebx,eax
|
||
mov [EditBox.ed_size],ebx
|
||
pop eax
|
||
@@:
|
||
}
|
||
macro are_key_cur_end
|
||
{
|
||
mov ecx,[EditBox.ed_size]
|
||
mov edx, [EditBox.ed_max]
|
||
test word [EditBox.ed_flags],ed_insert
|
||
jne @f
|
||
cmp ecx,edx
|
||
jae .editbox_exit
|
||
@@: mov ebx, ed_pos
|
||
cmp ebx,edx
|
||
jl @f ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢®
|
||
jmp .editbox_exit
|
||
|
||
@@: ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢®
|
||
mov ecx,[EditBox.ed_size]
|
||
push edi eax
|
||
mov ebp,edi
|
||
mov esi,[EditBox.ed_text] ; “ª § â¥«ì ¡ãä¥à
|
||
;<EFBFBD>㤥¬ à ¡®â âì á® áâப®©
|
||
add esi,ecx ;add [EditBox.ed_size] ¤®¡ ¢¨¬ max size
|
||
mov edi,esi
|
||
|
||
cmp ecx,ebx ;…᫨ ã á ¯®§¨æ¨ï ªãàá®à = ⥪ã饬ã à §¬¥àã ¯¥ç â ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®æ¥
|
||
je .In_k
|
||
|
||
test word [ebp+40],ed_insert ;IF insert is enable â.ª. edi ¨§¬¥¥ ¤à¥á㥬 ç¥à¥§ ebp
|
||
jne .ins_v
|
||
;clear
|
||
pusha
|
||
mov edi,ebp
|
||
mov ebp,[EditBox.ed_size]
|
||
call .clear_bg
|
||
popa
|
||
sub ecx,ebx ;<EFBFBD> ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥¨ï.
|
||
inc edi ;‘¬¥á⨬ è¨ á¨¬¢®«ë ¢ ¯à ¢®
|
||
std
|
||
inc ecx
|
||
@@:
|
||
;--------
|
||
lodsb
|
||
stosb
|
||
;--------
|
||
loop @b
|
||
.In_k: cld
|
||
pop eax
|
||
mov al,ah
|
||
stosb
|
||
pop edi
|
||
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
|
||
; 㢥«¨ç¨¢ ¥¬ § 票¥ à §¬¥à ¨ ¯®§¨æ¨¨
|
||
inc dword [EditBox.ed_size]
|
||
inc dword ed_pos
|
||
call .draw_all2
|
||
jmp .shift
|
||
}
|
||
macro use_work_key
|
||
{
|
||
.insert: test word [EditBox.ed_flags],ed_insert ;not word ed_insert
|
||
je @f
|
||
and word [EditBox.ed_flags],ed_insert_cl
|
||
jmp .editbox_exit
|
||
@@:
|
||
or word [EditBox.ed_flags],ed_insert
|
||
jmp .editbox_exit
|
||
.ins_v:
|
||
dec dword [ebp+42];[EditBox.ed_size] ;processing is insert
|
||
sub esi,ecx
|
||
add esi,ebx
|
||
mov edi,esi
|
||
;clear
|
||
pusha
|
||
mov edi,ebp
|
||
mov ebp,ed_pos
|
||
call .clear_bg
|
||
popa
|
||
jmp .In_k
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
.delete:
|
||
mov edx,[EditBox.ed_size]
|
||
mov ecx,ed_pos
|
||
cmp edx,ecx
|
||
jg .bac_del
|
||
test word [EditBox.ed_flags],ed_shift_on
|
||
jne .del_bac
|
||
edit_ex
|
||
.bac_del:
|
||
call .del_char
|
||
jmp .draw_all
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;--- ¦ â ª« ¢¨è backspace ---
|
||
.backspace:
|
||
; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
|
||
mov ecx,ed_pos
|
||
test ecx,ecx
|
||
jnz .del_bac
|
||
test word [EditBox.ed_flags],ed_shift_on
|
||
jne .bac_del
|
||
|
||
edit_ex
|
||
.del_bac:
|
||
mov edx,[EditBox.ed_size]
|
||
cmp edx,ecx ;if ed_pos=[EditBox.ed_size]
|
||
je @f
|
||
dec ecx
|
||
call .del_char
|
||
@@: test word [EditBox.ed_flags],ed_shift_on
|
||
jne .bac_del
|
||
dec dword ed_pos
|
||
.draw_all:
|
||
push .shift;.draw_cursor_text;eax
|
||
|
||
test word [EditBox.ed_flags],ed_shift_on
|
||
je @f
|
||
mov eax,dword ed_shift_pos
|
||
mov ebx,[EditBox.ed_size]
|
||
sub ebx,eax
|
||
mov [EditBox.ed_size],ebx
|
||
|
||
mov ebp,[EditBox.ed_color]
|
||
call .clear_cursor
|
||
call .check_offset
|
||
call .draw_bg
|
||
ret
|
||
@@: dec dword [EditBox.ed_size]
|
||
|
||
.draw_all2:
|
||
and word [EditBox.ed_flags],ed_shift_cl
|
||
mov ebp,[EditBox.ed_color]
|
||
call .clear_cursor
|
||
call .check_offset
|
||
mov ebp,[EditBox.ed_size]
|
||
call .clear_bg
|
||
ret
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;--- ¦ â ª« ¢¨è left ---
|
||
.left: mov ebx,ed_pos
|
||
test ebx,ebx
|
||
jz .sh_st_of
|
||
or word [EditBox.ed_flags],ed_left_fl
|
||
call .sh_first_sh
|
||
dec dword ed_pos
|
||
call .sh_enable
|
||
jmp .draw_cursor_text
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;--- ¦ â ª« ¢¨è right ---
|
||
.right: mov ebx,ed_pos
|
||
cmp ebx,[EditBox.ed_size]
|
||
je .sh_st_of
|
||
and word [EditBox.ed_flags],ed_right_fl
|
||
call .sh_first_sh
|
||
inc dword ed_pos
|
||
call .sh_enable
|
||
jmp .draw_cursor_text
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
.home:
|
||
mov ebx,ed_pos
|
||
test ebx,ebx
|
||
jz .sh_st_of
|
||
call .sh_first_sh
|
||
xor eax,eax
|
||
mov ed_pos,eax
|
||
call .sh_home_end
|
||
jmp .draw_cursor_text
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
.end:
|
||
mov ebx,ed_pos
|
||
cmp ebx,dword [EditBox.ed_size]
|
||
je .sh_st_of
|
||
call .sh_first_sh
|
||
mov eax,[EditBox.ed_size]
|
||
mov ed_pos,eax
|
||
call .sh_home_end
|
||
jmp .draw_cursor_text
|
||
}
|
||
|
||
macro use_mouse_func scr_w
|
||
{
|
||
;----------------------------------------------------------
|
||
;--- Ž¡à ¡®âª .mouse_wigwag
|
||
;----------------------------------------------------------
|
||
.mouse_wigwag:
|
||
shr eax,16
|
||
or word [EditBox.ed_flags],ed_shift_bac+ed_shift_on+ed_shift
|
||
;;;;;;;;;;;;;;;;;;
|
||
;;¯à®æ¥¤ãà ®¡à ¡®âª¨ ¯®«®¦¥¨ï ¢ë¤¥«¥®£® ⥪áâ , ª®£¤ ¯à®¨á室¨â ¢ë室 § ¯à¥¤¥«ë editbox
|
||
;;;;;;;;;;;;;;;;;;
|
||
;mov ebx,[IPC_table.box.left]
|
||
mov ebx,[EditBox.ed_left]
|
||
;if scr_w eq
|
||
;else
|
||
; add ebx,dword scr_w
|
||
;end if
|
||
cmp eax,ebx
|
||
jb .mleft
|
||
|
||
add ebx,[EditBox.ed_width]
|
||
cmp eax,ebx
|
||
ja .mright
|
||
|
||
sub ebx,[EditBox.ed_width]
|
||
|
||
xor edx,edx
|
||
sub eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨ âë ¤® editbox ¯® ®á¨ å
|
||
mov ebx,6
|
||
div ebx
|
||
;;;;;;;;;;;;;;;;;;
|
||
;;¯à®æ¥¤ãà ®¡à ¡®âª¨ ¯®«®¦¥¨ï ¢ë¤¥«¥®£® ⥪áâ , ¢ ¯à¥¤¥« å ®¡« á⨠editbox
|
||
;;;;;;;;;;;;;;;;;;
|
||
;<EFBFBD>®«ã稫¨ ª®®à¤¨ âë ¢ eax ¬ë誨, â.¥. ªã¤ ® ¯¥à¥¬¥á⨫ áì
|
||
;<EFBFBD>¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å
|
||
add eax,ed_offset ;¤®¡ ¢¨¬ ᬥ饨¥
|
||
cmp eax,dword [EditBox.ed_size] ;¥á«¨ ¢ë諨 § ¯à¥¤¥«ë, â® ¨ç¥£® ¥ ¤¥« âì
|
||
ja .mwigvag
|
||
.mdraw:
|
||
mov dword ed_pos,eax ;á®åà ¨¬ ®¢®¥ § 票¥
|
||
;<EFBFBD>¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å
|
||
mov ecx,dword ed_shift_pos
|
||
mov ebx,dword ed_shift_pos_old
|
||
mov dword ed_shift_pos_old,eax ;¢¥á¥¬ ®¢®¥ § 票¥ áâ ன ¯®§¨æ¨¨ ªãàá®à
|
||
;¯à®¢¥àª ¨ à¨á®¢ ¨¥ § ªà è¥ëå ®¡« á⥩
|
||
cmp ecx,ebx ;¢ëïá塞 ªã¤ ¡ë«® ¤¢¨¦¥¨¥ ®¤¨ è £ § ¤
|
||
je .m1_shem ;¤¢¨¦¥¨ï ¥ ¡ë«® à ¥¥
|
||
jb .msmaller ;¤¢¨¦¥¨¥ ¡ë«® ->
|
||
cmp ebx,eax ;¤¢¨¦¥¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤ ¤¢¨¦¥¨¥ ¯à®¨á室¨â
|
||
ja .m1_shem ;¥á«¨ ¡ë«® ¤¢¨¦¥¨¥ <- ⮠㦮 § ªà á¨âì ®¡« áâì
|
||
je .mwigvag ;¥á«¨ ¨§¬¥¥¨ï ¥ ¡ë«®, â® ¨ç¥£® ¥ ¤¥« âì
|
||
mov ebp,[EditBox.ed_color] ;âãâ 㦮 ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old
|
||
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
|
||
call .sh_cl_
|
||
jmp .mwigvag
|
||
.msmaller:
|
||
cmp ebx,eax
|
||
jb .m1_shem
|
||
mov ebp,[EditBox.ed_color]
|
||
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
|
||
call .sh_cl_
|
||
jmp .mwigvag
|
||
;alike =
|
||
.m1_shem:
|
||
mov ebp,[EditBox.shift_color]
|
||
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
|
||
mov ebx,ecx
|
||
call .sh_cl_
|
||
jmp .mwigvag
|
||
.mwigvag:
|
||
and word [EditBox.ed_flags],ed_shift_mcl
|
||
jmp .draw_cursor_text
|
||
; popa
|
||
; ret
|
||
.mleft:
|
||
mov eax,ed_pos
|
||
cmp eax,0
|
||
jbe .mwigvag
|
||
dec eax
|
||
call .check_offset
|
||
push eax
|
||
mov ebx,ed_shift_pos
|
||
mov ebp,[EditBox.shift_color]
|
||
call .sh_cl_
|
||
pop eax
|
||
jmp .mdraw
|
||
.mright:
|
||
mov eax,ed_pos
|
||
mov ebx,[EditBox.ed_size]
|
||
cmp eax,ebx
|
||
jae .mwigvag
|
||
inc eax
|
||
call .check_offset
|
||
mov ebx,ed_shift_pos
|
||
mov ebp,[EditBox.shift_color]
|
||
push eax
|
||
call .sh_cl_
|
||
pop eax
|
||
jmp .mdraw
|
||
}
|
||
|
||
macro use_work_mouse scr_h,scr_w
|
||
;----------------------------------------------------------
|
||
;--- € ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §ë¥ áâ®à®ë?
|
||
;----------------------------------------------------------
|
||
{
|
||
test word [EditBox.ed_flags],ed_mouse_on
|
||
jne .mouse_wigwag
|
||
;----------------------------------------------------------
|
||
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
|
||
;----------------------------------------------------------
|
||
;mov ebx,[IPC_table.box.top]
|
||
|
||
mov eax,[EditBox.ed_left]
|
||
mov ebx,[EditBox.ed_top]
|
||
mov ecx,[EditBox.ed_width]
|
||
mov edx,[EditBox.ed_height]
|
||
mov esi,[EditBox.mouseX]
|
||
mov edi,[EditBox.mouseY]
|
||
|
||
call CheckCrossingBox
|
||
|
||
cmp eax,0xffffff
|
||
jne ._blur
|
||
|
||
;if scr_h eq
|
||
;else
|
||
; add ebx,scr_h
|
||
;end if
|
||
;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,[IPC_table.box.left]
|
||
;add ebx,[EditBox.ed_left]
|
||
;if scr_w eq
|
||
;else
|
||
; add ebx,scr_w
|
||
;end if
|
||
;cmp ax,bx
|
||
;jl ._blur;.mouse_end_no_focus
|
||
|
||
;add ebx,[EditBox.ed_width]
|
||
;cmp ax,bx
|
||
;jg ._blur;.mouse_end_no_focus
|
||
|
||
;mov eax,[EditBox.mouseX]
|
||
|
||
;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à ---
|
||
;push eax
|
||
mov ebp,[EditBox.ed_color]
|
||
call .clear_cursor
|
||
;pop eax
|
||
mov eax,[EditBox.mouseX]
|
||
._mvpos:
|
||
;mov ebx,dword [IPC_table.box.left]
|
||
xor edx,edx
|
||
sub eax,[EditBox.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
|
||
cmp eax,[EditBox.ed_size]
|
||
jna ._mshift
|
||
mov eax,[EditBox.ed_size]
|
||
._mshift:
|
||
;;;;;;;
|
||
;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥¨ï ¯® shift
|
||
;;;;;;;
|
||
test word [EditBox.ed_flags],ed_shift_bac
|
||
je @f
|
||
mov ebp,dword [EditBox.ed_color]
|
||
mov ebx,dword ed_shift_pos
|
||
push eax
|
||
call .sh_cl_
|
||
and word [EditBox.ed_flags],ed_shift_bac_cl
|
||
pop eax
|
||
@@:
|
||
test word [EditBox.ed_flags],ed_mouse_on
|
||
jne @f
|
||
|
||
mov dword ed_shift_pos,eax
|
||
or word [EditBox.ed_flags],ed_mouse_on
|
||
mov dword ed_pos,eax
|
||
;mov dword [mouse_flag],edi ;ãáâ ®¢¨¬ ¨¤¥â¨ä¨ª â®à
|
||
bts word [EditBox.ed_flags],1 ;ãáâ ®¢ª 䮪ãá
|
||
jmp .m_sh
|
||
@@:
|
||
cmp eax,dword ed_shift_pos ;¥á«¨ ¯®§¨æ¨¨ ¥ ¨§¬¥¨«¨áì
|
||
je .editbox_exit
|
||
mov ed_pos,eax
|
||
mov ebp,dword [EditBox.shift_color]
|
||
mov ebx,dword ed_shift_pos
|
||
call .sh_cl_
|
||
or word [EditBox.ed_flags],ed_mous_adn_b ;ãáâ ®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on +
|
||
.m_sh: call .draw_text
|
||
call .draw_cursor
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá ---------------------------
|
||
;----------------------------------------------------------
|
||
jmp .drc
|
||
._blur:
|
||
test word [EditBox.ed_flags],ed_always_focus
|
||
jne .editbox_exit
|
||
btr word [EditBox.ed_flags],1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||
jnc .editbox_exit
|
||
|
||
mov ebp,[EditBox.ed_color]
|
||
call .clear_cursor
|
||
.drc: call .draw_border
|
||
jmp .editbox_exit
|
||
}
|
||
|
||
|
||
; Œ ªà®á ¢ë室
|
||
macro edit_ex
|
||
{
|
||
popa
|
||
ret
|
||
}
|
||
macro debug
|
||
{
|
||
;----------- ®â« ¤ª
|
||
pushad
|
||
; mov dword [ed_buffer.2],0
|
||
; mov eax,edi
|
||
mov eax,dword [ed_buffer.2]
|
||
mov edi,ed_buffer.3
|
||
call .str
|
||
;à¨á®¢ ¨¥ ä®
|
||
mov eax,13
|
||
mov ebx,178*65536+70
|
||
mov ecx,28*65536+10
|
||
xor edx,edx
|
||
int 0x40
|
||
;¢ë¢®¤ § 票ï íªà
|
||
mov eax,4
|
||
mov ebx,180*65536+30
|
||
mov ecx,0x10DDBBCC
|
||
mov edx,ed_buffer.3
|
||
mov esi,8
|
||
int 0x40
|
||
popad
|
||
;----------- ®â« ¤ª
|
||
}
|
||
macro debug_func
|
||
{
|
||
.str:
|
||
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«®
|
||
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®©
|
||
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax
|
||
jb @f
|
||
xor edx,edx ;®ç¨áâ¨âì edx
|
||
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx
|
||
push edx ;¯®«®¦¨âì ¢ á⥪
|
||
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨
|
||
call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx
|
||
pop eax
|
||
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï))
|
||
;sbb al,$69 ;- ç¥áâ® ¤ ï ¨áâàãªæ¨ï ¬¥ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ¥ § î ª ª íâ® à ¡®â ¥â
|
||
;das ;¯®á«¥ ¤ ®© ª®¬ ¤ë ª ª ¡ë ¯à®¨á室¨â 㬥ì襨¥ al 66h (¢ ª¨£¥ ¯¨á ® ¤à㣮¥)
|
||
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
|
||
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi
|
||
|
||
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
|
||
}
|
||
|
||
;;;;;;;;;;;;;;;
|
||
;For LibGui
|
||
;;;;;;;;;;;;;;;
|
||
macro srt_ed_libgui
|
||
{
|
||
;[EditBox.ed_width] equ [EditBox.ed_width] ;è¨à¨ ª®¬¯®¥â
|
||
;[EditBox.ed_left] equ [EditBox.ed_left] ;¯®«®¦¥¨¥ ¯® ®á¨ å
|
||
;[EditBox.ed_top] equ [EditBox.ed_top] ;¯®«®¦¥¨¥ ¯® ®á¨ ã
|
||
;[EditBox.ed_color] equ [EditBox.ed_color] ;梥â ä® ª®¬¯®¥â
|
||
;[EditBox.shift_color] equ [EditBox.shift_color] ;=0x6a9480
|
||
;[EditBox.ed_focus_border_color] equ [EditBox.ed_focus_border_color] ;梥â à ¬ª¨ ª®¬¯®¥â
|
||
;[EditBox.ed_blur_border_color] equ [EditBox.ed_blur_border_color] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â
|
||
;[EditBox.ed_text_color] equ [EditBox.ed_text_color] ;梥â ⥪áâ
|
||
;[EditBox.ed_max] equ [EditBox.ed_max] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥áâ¨
|
||
;[EditBox.ed_text] equ [EditBox.ed_text] ;㪠§ â¥«ì ¡ãä¥à
|
||
;[EditBox.ed_flags] equ [EditBox.ed_flags] ;ä« £¨
|
||
;[EditBox.ed_size] equ [EditBox.ed_size] ;ª®«-¢® ᨬ¢®«®¢
|
||
ed_pos equ [EditBox.ed_pos] ;¯®§¨æ¨ï ªãàá®à
|
||
ed_offset equ [EditBox.ed_offset] ;ᬥ饨¥
|
||
cl_curs_x equ [EditBox.cl_curs_x] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å
|
||
cl_curs_y equ [EditBox.cl_curs_y] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã
|
||
ed_shift_pos equ [EditBox.ed_shift_pos] ;¯®«®¦¥¨¥ ªãàá®à
|
||
ed_shift_pos_old equ [EditBox.ed_shift_pos_old] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;Bit mask from editbox
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë
|
||
ed_always_focus= 100000000000000b
|
||
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï
|
||
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
|
||
ed_shift_on_off=1111111111110111b
|
||
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î
|
||
ed_shift_off= 1111111111111011b
|
||
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥
|
||
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï
|
||
ed_shift_cl= 1111111111100011b
|
||
ed_shift_mcl= 1111111111111011b
|
||
ed_left_fl= 100000b
|
||
ed_right_fl= 1111111111011111b
|
||
ed_offset_fl= 1000000b
|
||
ed_offset_cl= 1111111110111111b
|
||
ed_insert= 10000000b
|
||
ed_insert_cl= 1111111101111111b
|
||
ed_mouse_on = 100000000b
|
||
ed_mous_adn_b= 100011000b
|
||
ed_mouse_on_off=1111111011111111b
|
||
ed_height=14 ; ¢ëá®â
|
||
} |