Subversion Repositories Kolibri OS

Rev

Rev 1216 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1216 Rev 1228
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;Basic macros for use editbox                             ;
2
;Basic macros for use editbox                             ;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
macro init_editbox
-
 
5
{
-
 
6
pushad
-
 
7
	mcall
-
 
8
 
-
 
9
popad
-
 
10
}
-
 
11
 
-
 
12
 
-
 
13
macro use_editbox_draw
-
 
14
{
-
 
15
edit_box:
-
 
16
ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
4
ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
17
ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
5
ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
18
ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
6
ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
19
ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
7
ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
20
shift_color     equ [edi+16]            ;=0x6a9480 ¤«ï ¯à¨¬¥à  ¢®§ì¥¬ ¦¥«¥­ë© 梥⠡®ªá 
8
shift_color     equ [edi+16]            ;=0x6a9480 ¤«ï ¯à¨¬¥à  ¢®§ì¥¬ ¦¥«¥­ë© 梥⠡®ªá 
21
ed_focus_border_color   equ [edi+20]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
9
ed_focus_border_color   equ [edi+20]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
22
ed_blur_border_color    equ [edi+24]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
10
ed_blur_border_color    equ [edi+24]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
23
ed_text_color   equ [edi+28]            ;梥â ⥪áâ 
11
ed_text_color   equ [edi+28]            ;梥â ⥪áâ 
24
ed_max          equ [edi+32]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
12
ed_max          equ [edi+32]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
25
ed_text         equ [edi+36]                    ;㪠§ â¥«ì ­  ¡ãä¥à
13
ed_text         equ [edi+36]                    ;㪠§ â¥«ì ­  ¡ãä¥à
26
ed_mouse_variable 	equ [edi+40]	; 㪠§ â¥«ì ­  ¯¥à¥¬¥­­ãî ¤«ï ¡®ªá /£à㯯ë 
14
ed_mouse_variable 	equ [edi+40]	; 㪠§ â¥«ì ­  ¯¥à¥¬¥­­ãî ¤«ï ¡®ªá /£à㯯ë 
27
ed_flags        equ [edi+44]            ;ä« £¨
15
ed_flags        equ [edi+44]            ;ä« £¨
28
bp_flags	equ [ebp+44]		;¢ ­¥ª®â®àëå ¯à®æ¥¤ãà å edi ¨á¯®«ì§ã¥âáï, ¢§ ¬¥­ 㪠§ â¥«ì åà ­¨âìáï ¢ ebp
16
bp_flags	equ [ebp+44]		;¢ ­¥ª®â®àëå ¯à®æ¥¤ãà å edi ¨á¯®«ì§ã¥âáï, ¢§ ¬¥­ 㪠§ â¥«ì åà ­¨âìáï ¢ ebp
29
ed_size equ [edi+48]                    ;ª®«-¢® ᨬ¢®«®¢
17
ed_size equ [edi+48]                    ;ª®«-¢® ᨬ¢®«®¢
30
bp_size equ [ebp+48]			;ª®«-¢® ᨬ¢¯®«®¢, ¤«ï  ¤à¥á æ¨¨ ¨á¯«ì§ã¥âáï ebp¡ edi § ­ïâ
18
bp_size equ [ebp+48]			;ª®«-¢® ᨬ¢¯®«®¢, ¤«ï  ¤à¥á æ¨¨ ¨á¯«ì§ã¥âáï ebp¡ edi § ­ïâ
31
ed_pos  equ [edi+52]                    ;¯®§¨æ¨ï ªãàá®à 
19
ed_pos  equ [edi+52]                    ;¯®§¨æ¨ï ªãàá®à 
32
ed_offset       equ [edi+56]            ;ᬥ饭¨¥
20
ed_offset       equ [edi+56]            ;ᬥ饭¨¥
33
cl_curs_x       equ [edi+60]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
21
cl_curs_x       equ [edi+60]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
34
cl_curs_y       equ [edi+64]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
22
cl_curs_y       equ [edi+64]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
35
ed_shift_pos    equ [edi+68]            ;¯®«®¦¥­¨¥ ªãàá®à 
23
ed_shift_pos    equ [edi+68]            ;¯®«®¦¥­¨¥ ªãàá®à 
36
ed_shift_pos_old equ [edi+72]           ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
24
ed_shift_pos_old equ [edi+72]           ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
37
 
25
 
38
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë
26
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë
39
ed_always_focus= 100000000000000b
27
ed_always_focus= 100000000000000b
40
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
28
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
41
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
29
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
42
ed_shift_on_off=1111111111110111b
30
ed_shift_on_off=1111111111110111b
43
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
31
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
44
ed_shift_off=   1111111111111011b
32
ed_shift_off=   1111111111111011b
45
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
33
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
46
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
34
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
47
ed_shift_cl=    1111111111100011b
35
ed_shift_cl=    1111111111100011b
48
ed_shift_mcl=   1111111111111011b
36
ed_shift_mcl=   1111111111111011b
49
ed_left_fl=               100000b
37
ed_left_fl=               100000b
50
ed_right_fl=    1111111111011111b
38
ed_right_fl=    1111111111011111b
51
ed_offset_fl=            1000000b
39
ed_offset_fl=            1000000b
52
ed_offset_cl=   1111111110111111b
40
ed_offset_cl=   1111111110111111b
53
ed_insert=              10000000b
41
ed_insert=              10000000b
54
ed_insert_cl=   1111111101111111b
42
ed_insert_cl=   1111111101111111b
55
ed_mouse_on =          100000000b
43
ed_mouse_on =          100000000b
56
ed_mous_adn_b=         100011000b
44
ed_mous_adn_b=         100011000b
57
ed_mouse_on_off=1111111011111111b
45
ed_mouse_on_off=1111111011111111b
58
ed_height=14 ; ¢ëá®â 
46
ed_height=14 ; ¢ëá®â 
59
 
47
 
-
 
48
 
-
 
49
 
-
 
50
macro init_editbox
-
 
51
{
-
 
52
pushad
-
 
53
	mcall
-
 
54
 
-
 
55
popad
-
 
56
}
-
 
57
 
-
 
58
 
-
 
59
macro use_editbox_draw
-
 
60
{
60
 
61
edit_box:
61
.draw:
62
.draw:
62
        pushad
63
        pushad
63
;--- à¨á㥬 à ¬ªã ---
64
;--- à¨á㥬 à ¬ªã ---
64
        mov     edi,dword [esp+36]
65
        mov     edi,dword [esp+36]
65
        call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
66
        call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
66
.draw_bg_cursor_text:
67
.draw_bg_cursor_text:
67
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
68
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
68
        call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
69
        call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
69
;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
70
;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
70
        call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
71
        call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
71
;---- à¨á㥬 ¢ë¤¥«¥­¨¥, ¯® shift ¥á«¨ ¥áâì
72
;---- à¨á㥬 ¢ë¤¥«¥­¨¥, ¯® shift ¥á«¨ ¥áâì
72
        call    .draw_shift
73
        call    .draw_shift
73
.draw_cursor_text:
74
.draw_cursor_text:
74
;--- à¨á㥬 ªãàá®à ---
75
;--- à¨á㥬 ªãàá®à ---
75
        ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
76
        ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
76
        test    word ed_flags,ed_focus
77
        test    word ed_flags,ed_focus
77
        jz     	@f
78
        jz     	@f
78
        call    .draw_cursor
79
        call    .draw_cursor
79
@@:
80
@@:
80
        call    .draw_text
81
        call    .draw_text
81
;        ret
82
;        ret
82
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
83
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
83
;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢;;
84
;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢;;
84
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
85
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
85
.editbox_exit:
86
.editbox_exit:
86
        popad
87
        popad
87
        ret 4
88
        ret 4
88
}
89
}
89
 
90
 
90
 
91
 
91
macro use_editbox_key
92
macro use_editbox_key
92
{
93
{
93
;==========================================================
94
;==========================================================
94
;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
95
;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
95
;==========================================================
96
;==========================================================
96
edit_box_key:
97
edit_box_key:
97
pushad
98
pushad
98
        mov     edi,dword [esp+36]
99
        mov     edi,dword [esp+36]
99
        test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
100
        test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
100
        je      edit_box.editbox_exit
101
        je      edit_box.editbox_exit
101
        test    word ed_flags,ed_mouse_on
102
        test    word ed_flags,ed_mouse_on
102
        jne     edit_box.editbox_exit
103
        jne     edit_box.editbox_exit
103
 
104
 
104
;à®¢¥àª  ­ ¦ â shift ?
105
;à®¢¥àª  ­ ¦ â shift ?
105
        call    edit_box_key.check_shift
106
        call    edit_box_key.check_shift
106
;----------------------------------------------------------
107
;----------------------------------------------------------
107
;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
108
;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
108
;----------------------------------------------------------
109
;----------------------------------------------------------
109
use_key_process  backspase,delete,left,right,home,end,insert
110
use_key_process  backspase,delete,left,right,home,end,insert
110
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
111
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
111
;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
112
;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
112
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
113
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
113
use_key_no_process   up,down,esc,enter,tab,numl,capsl,scrolll
114
use_key_no_process   up,down,esc,enter,tab,numl,capsl,scrolll
114
;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
115
;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
115
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
116
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
116
;à®¢¥àª  ãáâ ­®¢«¥­ «¨ ä« £ ¯à¨ ª®â®à®¬ ­ã¦­® ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ ­ã¦­®¬ ¡®ªá¥ ¥á«¨ â ª®©­¥®¡å®¤¨¬®á⨠­¥â ­ã¦­® § ª®¬¥­â¨à®¢ âì ¬ ªà®á
117
;à®¢¥àª  ãáâ ­®¢«¥­ «¨ ä« £ ¯à¨ ª®â®à®¬ ­ã¦­® ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ ­ã¦­®¬ ¡®ªá¥ ¥á«¨ â ª®©­¥®¡å®¤¨¬®á⨠­¥â ­ã¦­® § ª®¬¥­â¨à®¢ âì ¬ ªà®á
117
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
118
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
118
use_key_figures_only
119
use_key_figures_only
119
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
120
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
120
;¯à®¢¥àª  ­  shift ¡ë« «¨ ­ ¦ â
121
;¯à®¢¥àª  ­  shift ¡ë« «¨ ­ ¦ â
121
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
122
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
122
are_key_shift_press
123
are_key_shift_press
123
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
124
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
124
; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥ + ¤ «ì­¥©è ï ®¡à ¡®âª 
125
; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥ + ¤ «ì­¥©è ï ®¡à ¡®âª 
125
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
126
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
126
are_key_cur_end
127
are_key_cur_end
127
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
128
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
128
;Ž¡à ¡®âª  ª« ¢¨è insert,delete.backspase,home,end,left,right
129
;Ž¡à ¡®âª  ª« ¢¨è insert,delete.backspase,home,end,left,right
129
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
130
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
130
use_work_key
131
use_work_key
131
}
132
}
132
 
133
 
133
macro use_editbox_mouse
134
macro use_editbox_mouse
134
{
135
{
135
;==========================================================
136
;==========================================================
136
;=== ®¡à ¡®âª  ¬ëè¨ =======================================
137
;=== ®¡à ¡®âª  ¬ëè¨ =======================================
137
;==========================================================
138
;==========================================================
138
;save for stdcall ebx,esi,edi,ebp
139
;save for stdcall ebx,esi,edi,ebp
139
edit_box_mouse:
140
edit_box_mouse:
140
pushad
141
pushad
141
        mov     edi,dword [esp+36]
142
        mov     edi,dword [esp+36]
142
;debug
143
;debug
143
;----------------------------------------------------------
144
;----------------------------------------------------------
144
;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
145
;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
145
;----------------------------------------------------------
146
;----------------------------------------------------------
146
        mcall   37,2
147
        mcall   37,2
147
;----------------------------------------------------------
148
;----------------------------------------------------------
148
;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
149
;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
149
;----------------------------------------------------------
150
;----------------------------------------------------------
150
        test    eax,1
151
        test    eax,1
151
        jnz     edit_box_mouse.mouse_left_button
152
        jnz     edit_box_mouse.mouse_left_button
152
        and     word ed_flags,ed_mouse_on_off
153
        and     word ed_flags,ed_mouse_on_off
153
	mov	ebx,dword ed_mouse_variable
154
	mov	ebx,dword ed_mouse_variable
154
	push	0
155
	push	0
155
	pop	dword [ebx]
156
	pop	dword [ebx]
156
;        mov     dword [ebx],ebx
157
;        mov     dword [ebx],ebx
157
        jmp     edit_box.editbox_exit
158
        jmp     edit_box.editbox_exit
158
.mouse_left_button:
159
.mouse_left_button:
159
;----------------------------------------------------------
160
;----------------------------------------------------------
160
;--- ¡«®ª¨à®¢ª  ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ­¨¨ ­  ­¨å ªãàá®à 
161
;--- ¡«®ª¨à®¢ª  ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ­¨¨ ­  ­¨å ªãàá®à 
161
;----------------------------------------------------------
162
;----------------------------------------------------------
162
        mov     eax,dword ed_mouse_variable
163
        mov     eax,dword ed_mouse_variable
163
	push	dword [eax]
164
	push	dword [eax]
164
	pop	eax
165
	pop	eax
165
        test    eax,eax
166
        test    eax,eax
166
        jz      @f
167
        jz      @f
167
        cmp     eax,edi
168
        cmp     eax,edi
168
        je      @f
169
        je      @f
169
        jmp     edit_box_mouse._blur
170
        jmp     edit_box_mouse._blur
170
;----------------------------------------------------------
171
;----------------------------------------------------------
171
;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
172
;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
172
;----------------------------------------------------------
173
;----------------------------------------------------------
173
@@:     mcall   37,1
174
@@:     mcall   37,1
174
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
175
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
175
;”ã­ªæ¨ï ®¡à ¡®âª¨  ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
176
;”ã­ªæ¨ï ®¡à ¡®âª¨  ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
176
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
177
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
177
use_work_mouse
178
use_work_mouse
178
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
179
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
179
;Ž¡é¨¥ ä㭪樨 ®¡à ¡®âª¨
180
;Ž¡é¨¥ ä㭪樨 ®¡à ¡®âª¨
180
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
181
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
181
use_general_func
182
use_general_func
182
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
183
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
183
;”㭪樨 ¤«ï à ¡®âë á key
184
;”㭪樨 ¤«ï à ¡®âë á key
184
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
185
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
185
use_key_func
186
use_key_func
186
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
187
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
187
;”㭪樨 ¤«ï à ¡®âë á mouse
188
;”㭪樨 ¤«ï à ¡®âë á mouse
188
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
189
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
189
use_mouse_func 
190
use_mouse_func 
190
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
191
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
191
;Bit mask from editbox
192
;Bit mask from editbox
192
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
193
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
193
}
194
}
194
 
195
 
195
 
196
 
196
 
197
 
197
 
198
 
198
 
199
 
199
 
200
 
200
 
201
 
201
 
202
 
202
 
203
 
203
 
204
 
204
 
205
 
205
 
206
 
206
 
207
 
207
 
208
 
208
 
209
 
209
 
210
 
210
 
211
 
211
 
212
 
212
 
213
 
213
 
214
 
214
 
215
 
215
 
216
 
216
 
217
 
217
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
218
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
218
;­¨¦¥ à á¯®«®¦¥­ë ä㭪樨 ª®â®à묨 ॠ«¨§ã¥âáï ¢¥áì  «£®à¨â¬
219
;­¨¦¥ à á¯®«®¦¥­ë ä㭪樨 ª®â®à묨 ॠ«¨§ã¥âáï ¢¥áì  «£®à¨â¬
219
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
220
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
220
;Œ ªà®á ¤«ï ¢ë¢®¤  ®á­®¢­ëå ä㭪権 ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬
221
;Œ ªà®á ¤«ï ¢ë¢®¤  ®á­®¢­ëå ä㭪権 ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬
221
macro use_general_func
222
macro use_general_func
222
{
223
{
223
;debug_func
224
;debug_func
224
;----------------------------------------------------------
225
;----------------------------------------------------------
225
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ¢ë¤¥«¥­®© ç á⨠-----------------
226
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ¢ë¤¥«¥­®© ç á⨠-----------------
226
;----------------------------------------------------------
227
;----------------------------------------------------------
227
edit_box.draw_shift:
228
edit_box.draw_shift:
228
        test    word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
229
        test    word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
229
        jz      @f
230
        jz      @f
230
        mov     ebp,shift_color
231
        mov     ebp,shift_color
231
        mov     ebx,dword       ed_shift_pos
232
        mov     ebx,dword       ed_shift_pos
232
        call    edit_box_key.sh_cl_
233
        call    edit_box_key.sh_cl_
233
@@:     ret
234
@@:     ret
234
;----------------------------------------------------------
235
;----------------------------------------------------------
235
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪áâ  --------------------------
236
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪áâ  --------------------------
236
;----------------------------------------------------------
237
;----------------------------------------------------------
237
edit_box.draw_text:
238
edit_box.draw_text:
238
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
239
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
239
;--- çâ®¡ë ¬ãá®à ­¥ à¨á®¢ âì ---
240
;--- çâ®¡ë ¬ãá®à ­¥ à¨á®¢ âì ---
240
        call    edit_box.get_n
241
        call    edit_box.get_n
241
        mov     esi,ed_size
242
        mov     esi,ed_size
242
        mov     ebx,ed_offset
243
        mov     ebx,ed_offset
243
        sub     esi,ebx
244
        sub     esi,ebx
244
        cmp     eax,esi
245
        cmp     eax,esi
245
        jae     @F
246
        jae     @F
246
        mov     esi,eax         ;çâ®¡ë ­¥ ¢ë室¨âì §  ¯à¥¤¥«ë íªà ­ 
247
        mov     esi,eax         ;çâ®¡ë ­¥ ¢ë室¨âì §  ¯à¥¤¥«ë íªà ­ 
247
;--- à¨á㥬 ⥪áâ ---                                            
248
;--- à¨á㥬 ⥪áâ ---                                            
248
@@:     mov     eax,4
249
@@:     mov     eax,4
249
        mov     ebx,ed_left
250
        mov     ebx,ed_left
250
        mov     edx,ed_offset
251
        mov     edx,ed_offset
251
        add     ebx,2
252
        add     ebx,2
252
        shl     ebx,16
253
        shl     ebx,16
253
        add     ebx,ed_top
254
        add     ebx,ed_top
254
        mov     ecx,ed_text_color
255
        mov     ecx,ed_text_color
255
        add     ebx,4
256
        add     ebx,4
256
        add     edx,ed_text
257
        add     edx,ed_text
257
        mcall
258
        mcall
258
ret
259
ret
259
;----------------------------------------------------------
260
;----------------------------------------------------------
260
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ä®­  ----------------------------
261
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ä®­  ----------------------------
261
;¢å®¤­ë¥ ¤ ­­ë¥
262
;¢å®¤­ë¥ ¤ ­­ë¥
262
;eax
263
;eax
263
;edx - color
264
;edx - color
264
;----------------------------------------------------------
265
;----------------------------------------------------------
265
;¢å®¤ ⮫쪮 梥â edx
266
;¢å®¤ ⮫쪮 梥â edx
266
edit_box.draw_bg:
267
edit_box.draw_bg:
267
        mov     ebx,ed_left
268
        mov     ebx,ed_left
268
        add     ebx,1
269
        add     ebx,1
269
        mov     edx,ed_color
270
        mov     edx,ed_color
270
        shl     ebx,16
271
        shl     ebx,16
271
        add     ebx,ed_width
272
        add     ebx,ed_width
272
        sub     ebx,1
273
        sub     ebx,1
273
edit_box.draw_bg_eax:
274
edit_box.draw_bg_eax:
274
        mov     ecx,ed_top
275
        mov     ecx,ed_top
275
        mov     eax,13
276
        mov     eax,13
276
        add     ecx,1
277
        add     ecx,1
277
        shl     ecx,16
278
        shl     ecx,16
278
        add     ecx,ed_height
279
        add     ecx,ed_height
279
        dec     ecx
280
        dec     ecx
280
        mcall   
281
        mcall   
281
ret
282
ret
282
;----------------------------------------------------------
283
;----------------------------------------------------------
283
;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ª®«¨ç¥á⢠ ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨­¥ ª®¬¯®­¥­â 
284
;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ª®«¨ç¥á⢠ ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨­¥ ª®¬¯®­¥­â 
284
;----------------------------------------------------------
285
;----------------------------------------------------------
285
edit_box.get_n:
286
edit_box.get_n:
286
        mov     eax,ed_width    ;¯®«ã祬 è¨à¨­ã ª®¬¯®­¥­â 
287
        mov     eax,ed_width    ;¯®«ã祬 è¨à¨­ã ª®¬¯®­¥­â 
287
        xor     edx,edx   ;१ã«ìâ â à á¯®«®£ ¥âáï ¢ ¯ à¥ edx:eax ¢ eax - ®áâ â®ª
288
        xor     edx,edx   ;१ã«ìâ â à á¯®«®£ ¥âáï ¢ ¯ à¥ edx:eax ¢ eax - ®áâ â®ª
288
        sub     eax,4           ;¢ëç⨬ 4
289
        sub     eax,4           ;¢ëç⨬ 4
289
        mov     ebx,6           ;§ £à㧬¨ ¤¥«¨â¥«ì
290
        mov     ebx,6           ;§ £à㧬¨ ¤¥«¨â¥«ì
290
        div     ebx             ;à §¬¤¥«¨¬ ­  6
291
        div     ebx             ;à §¬¤¥«¨¬ ­  6
291
ret
292
ret
292
;----------------------------------------------------------
293
;----------------------------------------------------------
293
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï ªãàá®à  --------------------------
294
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï ªãàá®à  --------------------------
294
;----------------------------------------------------------
295
;----------------------------------------------------------
295
;¢å®¤­ë¥ ebp- 梥â
296
;¢å®¤­ë¥ ebp- 梥â
296
edit_box.clear_cursor:
297
edit_box.clear_cursor:
297
        mov     edx,ebp
298
        mov     edx,ebp
298
        mov     ebx,cl_curs_x
299
        mov     ebx,cl_curs_x
299
        mov     ecx,cl_curs_y
300
        mov     ecx,cl_curs_y
300
        jmp     edit_box.draw_curs
301
        jmp     edit_box.draw_curs
301
edit_box.draw_cursor:
302
edit_box.draw_cursor:
302
        mov     edx,ed_text_color
303
        mov     edx,ed_text_color
303
        mov     ebx,ed_pos
304
        mov     ebx,ed_pos
304
        mov     ecx,ed_offset
305
        mov     ecx,ed_offset
305
        sub     ebx,ecx
306
        sub     ebx,ecx
306
 
307
 
307
        lea     ebx,[ebx*2+ebx]
308
        lea     ebx,[ebx*2+ebx]
308
        shl     ebx,1
309
        shl     ebx,1
309
        ;imul   ebx,6
310
        ;imul   ebx,6
310
        add     ebx,ed_left
311
        add     ebx,ed_left
311
        mov     ecx,ed_top
312
        mov     ecx,ed_top
312
        inc     ebx
313
        inc     ebx
313
        add     ecx,2
314
        add     ecx,2
314
        mov     ebp,ebx
315
        mov     ebp,ebx
315
        shl     ebx,16
316
        shl     ebx,16
316
        mov     bx,bp
317
        mov     bx,bp
317
        mov     ebp,ecx
318
        mov     ebp,ecx
318
        
319
        
319
        shl     ecx,16
320
        shl     ecx,16
320
        mov     cx,bp
321
        mov     cx,bp
321
        add     ecx,ed_height-4
322
        add     ecx,ed_height-4
322
        
323
        
323
        mov     cl_curs_x,ebx
324
        mov     cl_curs_x,ebx
324
        mov     cl_curs_y,ecx
325
        mov     cl_curs_y,ecx
325
edit_box.draw_curs:              
326
edit_box.draw_curs:              
326
        mcall   38
327
        mcall   38
327
ret
328
ret
328
;----------------------------------------------------------
329
;----------------------------------------------------------
329
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï à ¬ª¨ ----------------------------
330
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï à ¬ª¨ ----------------------------
330
;----------------------------------------------------------
331
;----------------------------------------------------------
331
edit_box.draw_border:
332
edit_box.draw_border:
332
;--- 梥â à ¬ª¨ ---
333
;--- 梥â à ¬ª¨ ---
333
        test    word ed_flags,ed_focus
334
        test    word ed_flags,ed_focus
334
        mov     edx,ed_focus_border_color
335
        mov     edx,ed_focus_border_color
335
        jne     @f
336
        jne     @f
336
        mov     edx,ed_blur_border_color
337
        mov     edx,ed_blur_border_color
337
@@:
338
@@:
338
;--- ᢥàåã ---
339
;--- ᢥàåã ---
339
        mov     eax,38
340
        mov     eax,38
340
        mov     ebx,ed_left
341
        mov     ebx,ed_left
341
        mov     ecx,ebx
342
        mov     ecx,ebx
342
        shl     ebx,16
343
        shl     ebx,16
343
        mov     bx,cx
344
        mov     bx,cx
344
        add     ebx,ed_width
345
        add     ebx,ed_width
345
        mov     ecx,ed_top
346
        mov     ecx,ed_top
346
        mov     esi,ecx
347
        mov     esi,ecx
347
        shl     ecx,16
348
        shl     ecx,16
348
        mov     cx,si
349
        mov     cx,si
349
        mcall
350
        mcall
350
;--- á­¨§ã ---
351
;--- á­¨§ã ---
351
        mov     esi,ecx
352
        mov     esi,ecx
352
        add     ecx,ed_height
353
        add     ecx,ed_height
353
        mov     ebp,ecx
354
        mov     ebp,ecx
354
        shl     ecx,16
355
        shl     ecx,16
355
        mov     cx,bp
356
        mov     cx,bp
356
        mcall
357
        mcall
357
;--- á«¥¢  ---
358
;--- á«¥¢  ---
358
        mov     cx,si
359
        mov     cx,si
359
        mov     ebp,ebx
360
        mov     ebp,ebx
360
        sub     ebx,ed_width
361
        sub     ebx,ed_width
361
        mcall
362
        mcall
362
;--- á¯à ¢  ---
363
;--- á¯à ¢  ---
363
        mov     ebx,ebp
364
        mov     ebx,ebp
364
        shl     ebx,16
365
        shl     ebx,16
365
        mov     bx,bp
366
        mov     bx,bp
366
        mcall
367
        mcall
367
ret
368
ret
368
;----------------------------------------------------------
369
;----------------------------------------------------------
369
;--- ¯à®¢¥àª , § è¥« «¨ ªãàá®à §  £à ­¨æë ¨, ¥á«¨ ­ ¤®, ---
370
;--- ¯à®¢¥àª , § è¥« «¨ ªãàá®à §  £à ­¨æë ¨, ¥á«¨ ­ ¤®, ---
370
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥ ------------------------------------
371
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥ ------------------------------------
371
;--- ¥á«¨ ᬥ饭¨¥ ¡ë«® ãáâ ­®¢ª  ä« £  ed_offset_cl ¨­ ç¥
372
;--- ¥á«¨ ᬥ饭¨¥ ¡ë«® ãáâ ­®¢ª  ä« £  ed_offset_cl ¨­ ç¥
372
; ¥á«¨ ­¨ç¥£® ­¥ ¨§¬¥­¨«®áì â® ¢ëáâ ¢«¥­¨¥ ed_offset_fl
373
; ¥á«¨ ­¨ç¥£® ­¥ ¨§¬¥­¨«®áì â® ¢ëáâ ¢«¥­¨¥ ed_offset_fl
373
; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï­¨ï ª®¬¯®­¥­â®¢ word ed_flags
374
; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï­¨ï ª®¬¯®­¥­â®¢ word ed_flags
374
;----------------------------------------------------------
375
;----------------------------------------------------------
375
edit_box.check_offset:
376
edit_box.check_offset:
376
pushad
377
pushad
377
        mov     ecx,ed_pos
378
        mov     ecx,ed_pos
378
        mov     ebx,ed_offset
379
        mov     ebx,ed_offset
379
        cmp     ebx,ecx
380
        cmp     ebx,ecx
380
        ja      edit_box.sub_8
381
        ja      edit_box.sub_8
381
 
382
 
382
        push    ebx
383
        push    ebx
383
        call    edit_box.get_n                  ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ à¥ ॣ¨áâ஢ edx:eax 
384
        call    edit_box.get_n                  ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ à¥ ॣ¨áâ஢ edx:eax 
384
        pop     ebx
385
        pop     ebx
385
        mov     edx,ebx
386
        mov     edx,ebx
386
        add     edx,eax         ;ed_offset+width editbox
387
        add     edx,eax         ;ed_offset+width editbox
387
        inc     edx             ;­¥®¡å®¤¨¬® ¤«ï ­®¬ «ì­®£® ¯®«®¦¥­¨ï ªãàá®à  ¢ ªà ©­¥© «¥¢®© ¯®§¨æ¨¨
388
        inc     edx             ;­¥®¡å®¤¨¬® ¤«ï ­®¬ «ì­®£® ¯®«®¦¥­¨ï ªãàá®à  ¢ ªà ©­¥© «¥¢®© ¯®§¨æ¨¨
388
        cmp     edx,ecx
389
        cmp     edx,ecx
389
        ja      @f
390
        ja      @f
390
 
391
 
391
        mov     edx,ed_size
392
        mov     edx,ed_size
392
        cmp     edx,ecx
393
        cmp     edx,ecx
393
        je      edit_box.add_end
394
        je      edit_box.add_end
394
 
395
 
395
        sub     edx,ecx
396
        sub     edx,ecx
396
        cmp     edx,8
397
        cmp     edx,8
397
        jbe     edit_box.add_8
398
        jbe     edit_box.add_8
398
        add     ebx,8
399
        add     ebx,8
399
        jmp     edit_box.chk_d
400
        jmp     edit_box.chk_d
400
 
401
 
401
edit_box.sub_8:
402
edit_box.sub_8:
402
	cmp     ecx,0
403
	cmp     ecx,0
403
        je      edit_box.sub_min
404
        je      edit_box.sub_min
404
        cmp     ebx,8
405
        cmp     ebx,8
405
        jbe     edit_box.sub_min
406
        jbe     edit_box.sub_min
406
        sub     ebx,8   ;ebx=ed_offset
407
        sub     ebx,8   ;ebx=ed_offset
407
        jmp     edit_box.chk_d
408
        jmp     edit_box.chk_d
408
edit_box.sub_min:
409
edit_box.sub_min:
409
        xor     ebx,ebx
410
        xor     ebx,ebx
410
        jmp     edit_box.chk_d
411
        jmp     edit_box.chk_d
411
 
412
 
412
edit_box.add_end:sub    edx,eax
413
edit_box.add_end:sub    edx,eax
413
        mov     ebx,edx
414
        mov     ebx,edx
414
        jmp     edit_box.chk_d
415
        jmp     edit_box.chk_d
415
edit_box.add_8: add     ebx,edx
416
edit_box.add_8: add     ebx,edx
416
edit_box.chk_d: mov     ed_offset,ebx
417
edit_box.chk_d: mov     ed_offset,ebx
417
        call    edit_box.draw_bg
418
        call    edit_box.draw_bg
418
        and     word ed_flags,ed_offset_cl
419
        and     word ed_flags,ed_offset_cl
419
edit_ex
420
edit_ex
420
@@:
421
@@:
421
        or      word ed_flags,ed_offset_fl
422
        or      word ed_flags,ed_offset_fl
422
edit_ex
423
edit_ex
423
}
424
}
424
 
425
 
425
macro use_key_func
426
macro use_key_func
426
{
427
{
427
;Ž¡à ¡®âª  Shift ¤«ï á­ïâ¨ï ¢ë¤¥«¥­¨ï ­¥¨§¢¥áâ­®© ®¡« áâ¨
428
;Ž¡à ¡®âª  Shift ¤«ï á­ïâ¨ï ¢ë¤¥«¥­¨ï ­¥¨§¢¥áâ­®© ®¡« áâ¨
428
edit_box_key.shift: ;;;;;;;SHIFT
429
edit_box_key.shift: ;;;;;;;SHIFT
429
        test    word ed_flags,ed_shift
430
        test    word ed_flags,ed_shift
430
        je      edit_box_key.f_exit
431
        je      edit_box_key.f_exit
431
 
432
 
432
@@:     mov     ebp,shift_color
433
@@:     mov     ebp,shift_color
433
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
434
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
434
        mov     ebx,dword       ed_shift_pos
435
        mov     ebx,dword       ed_shift_pos
435
        call    edit_box_key.sh_cl_
436
        call    edit_box_key.sh_cl_
436
        jmp     edit_box.draw_cursor_text
437
        jmp     edit_box.draw_cursor_text
437
;;;;;;;;;;;;;;;;;;;;;
438
;;;;;;;;;;;;;;;;;;;;;
438
edit_box_key.f_exit:    call   edit_box.check_offset
439
edit_box_key.f_exit:    call   edit_box.check_offset
439
        and     word ed_flags,ed_shift_cl
440
        and     word ed_flags,ed_shift_cl
440
        call    edit_box_key.enable_null
441
        call    edit_box_key.enable_null
441
        jmp     edit_box.draw_cursor_text
442
        jmp     edit_box.draw_cursor_text
442
edit_box_key.sh_cl_:
443
edit_box_key.sh_cl_:
443
;;;;;;SHIFT end
444
;;;;;;SHIFT end
444
;®¡à ¡®âª  ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥­¨¨ ¢ë¤¥«¥­¨ï
445
;®¡à ¡®âª  ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥­¨¨ ¢ë¤¥«¥­¨ï
445
;¤«ï ®¡à ¡®âª¨ á­ïâ¨ï ¢ë¤¥«¥­¨ï
446
;¤«ï ®¡à ¡®âª¨ á­ïâ¨ï ¢ë¤¥«¥­¨ï
446
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
447
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
447
        mov     eax,dword       ed_pos
448
        mov     eax,dword       ed_pos
448
        cmp     eax,ebx
449
        cmp     eax,ebx
449
 
450
 
450
        jae     edit_box_key.sh_n
451
        jae     edit_box_key.sh_n
451
        push    eax  ;¬¥­ì襥 ¢ eax
452
        push    eax  ;¬¥­ì襥 ¢ eax
452
        push    ebx  ;¡®«ì襥
453
        push    ebx  ;¡®«ì襥
453
        jmp     edit_box_key.sh_n1
454
        jmp     edit_box_key.sh_n1
454
                     ;¥á«¨ ¨­ ç¥
455
                     ;¥á«¨ ¨­ ç¥
455
edit_box_key.sh_n:
456
edit_box_key.sh_n:
456
	push    ebx  
457
	push    ebx  
457
        push    eax
458
        push    eax
458
edit_box_key.sh_n1: 
459
edit_box_key.sh_n1: 
459
        call    edit_box.check_offset
460
        call    edit_box.check_offset
460
        call    edit_box.get_n
461
        call    edit_box.get_n
461
        mov     edx,eax ;size of ed_box
462
        mov     edx,eax ;size of ed_box
462
        mov     ecx,ed_offset
463
        mov     ecx,ed_offset
463
        add     eax,ecx ;eax = w_off= ed_offset+width
464
        add     eax,ecx ;eax = w_off= ed_offset+width
464
        mov     edx,eax ;save
465
        mov     edx,eax ;save
465
        pop     ebx     ;¡®«ì襥
466
        pop     ebx     ;¡®«ì襥
466
        pop     eax     ;¬¥­ì襥
467
        pop     eax     ;¬¥­ì襥
467
 
468
 
468
        cmp     eax,ecx         ;áà ¢­¥­¨¥ á ¬¥­ì襣® á offset.
469
        cmp     eax,ecx         ;áà ¢­¥­¨¥ á ¬¥­ì襣® á offset.
469
        jae     edit_box_key.f_f            ;¥á«¨ ¡®«ìè¥
470
        jae     edit_box_key.f_f            ;¥á«¨ ¡®«ìè¥
470
        xor     eax,eax
471
        xor     eax,eax
471
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
472
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
472
        jb      @f
473
        jb      @f
473
        sub     ebx,ecx
474
        sub     ebx,ecx
474
        jmp     edit_box_key.nxt_f
475
        jmp     edit_box_key.nxt_f
475
@@:     mov     ebx,edx
476
@@:     mov     ebx,edx
476
        sub     ebx,ecx 
477
        sub     ebx,ecx 
477
        jmp     edit_box_key.nxt_f
478
        jmp     edit_box_key.nxt_f
478
edit_box_key.f_f:   
479
edit_box_key.f_f:   
479
        sub     eax,ecx
480
        sub     eax,ecx
480
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
481
        cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
481
        jle     @f
482
        jle     @f
482
        sub     ebx,ecx
483
        sub     ebx,ecx
483
        sub     ebx,eax
484
        sub     ebx,eax
484
        jmp     edit_box_key.nxt_f
485
        jmp     edit_box_key.nxt_f
485
@@:
486
@@:
486
        mov     ebx,edx 
487
        mov     ebx,edx 
487
        sub     ebx,ecx
488
        sub     ebx,ecx
488
        sub     ebx,eax
489
        sub     ebx,eax
489
edit_box_key.nxt_f:
490
edit_box_key.nxt_f:
490
        mov     edx,ebx
491
        mov     edx,ebx
491
        lea     ebx,[eax*2+eax]
492
        lea     ebx,[eax*2+eax]
492
        shl     ebx,1
493
        shl     ebx,1
493
        add     ebx,ed_left
494
        add     ebx,ed_left
494
        inc     ebx
495
        inc     ebx
495
        shl     ebx,16
496
        shl     ebx,16
496
        lea     ecx,[edx*2+edx]
497
        lea     ecx,[edx*2+edx]
497
        shl     ecx,1   
498
        shl     ecx,1   
498
        mov     bx,cx
499
        mov     bx,cx
499
        inc     ebx
500
        inc     ebx
500
        mov     edx,ebp;shift_color
501
        mov     edx,ebp;shift_color
501
 
502
 
502
        call    edit_box.draw_bg_eax
503
        call    edit_box.draw_bg_eax
503
@@:     call    edit_box_key.enable_null
504
@@:     call    edit_box_key.enable_null
504
        ret
505
        ret
505
;;;;;;;;;;;;;;;;;;;;;
506
;;;;;;;;;;;;;;;;;;;;;
506
;“áâ ­®¢ª - á­ï⨥ ¢ë¤¥«¥­¨ï ¢ ®¤¨­ ᨬ¢®«
507
;“áâ ­®¢ª - á­ï⨥ ¢ë¤¥«¥­¨ï ¢ ®¤¨­ ᨬ¢®«
507
;;;;;;;;;;;;;;;;;;;;;
508
;;;;;;;;;;;;;;;;;;;;;
508
edit_box_key.drw_sim:
509
edit_box_key.drw_sim:
509
        mov     eax,dword       ed_pos
510
        mov     eax,dword       ed_pos
510
        call    edit_box_key.draw_rectangle   ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª á § ¤ ­­ë¬ 梥⮬
511
        call    edit_box_key.draw_rectangle   ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª á § ¤ ­­ë¬ 梥⮬
511
        jmp     @b
512
        jmp     @b
512
;;;;;;;;;;;;;;;;;;;;;
513
;;;;;;;;;;;;;;;;;;;;;
513
;”ãªæ¨ï ãáâ ­®¢ª¨ ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
514
;”ãªæ¨ï ãáâ ­®¢ª¨ ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
514
;‹®£¨ª : 
515
;‹®£¨ª : 
515
;;;;;;;;;;
516
;;;;;;;;;;
516
edit_box_key.draw_wigwag:
517
edit_box_key.draw_wigwag:
517
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
518
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
518
        mov     ebp,shift_color
519
        mov     ebp,shift_color
519
        call    edit_box.clear_cursor
520
        call    edit_box.clear_cursor
520
 
521
 
521
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
522
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
522
        mov     ebp,shift_color
523
        mov     ebp,shift_color
523
        mov     eax,dword       ed_pos
524
        mov     eax,dword       ed_pos
524
        test    word ed_flags,ed_left_fl
525
        test    word ed_flags,ed_left_fl
525
        jz      edit_box_key.low
526
        jz      edit_box_key.low
526
        jmp     @f
527
        jmp     @f
527
;;;;;;;;;;
528
;;;;;;;;;;
528
;”ãªæ¨ï 㤠«¥­¨ï ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
529
;”ãªæ¨ï 㤠«¥­¨ï ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
529
;‹®£¨ª : 
530
;‹®£¨ª : 
530
;;;;;;;;;;
531
;;;;;;;;;;
531
edit_box_key.draw_wigwag_cl:
532
edit_box_key.draw_wigwag_cl:
532
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
533
;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
533
        mov     ebp,ed_color
534
        mov     ebp,ed_color
534
        call    edit_box.clear_cursor
535
        call    edit_box.clear_cursor
535
 
536
 
536
        mov     ebp,ed_color
537
        mov     ebp,ed_color
537
        mov     eax,dword       ed_pos
538
        mov     eax,dword       ed_pos
538
        test    word ed_flags,ed_left_fl
539
        test    word ed_flags,ed_left_fl
539
        jz      edit_box_key.low
540
        jz      edit_box_key.low
540
@@:     call    edit_box_key.draw_rectangle  ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª § ªà è¨¢ ¥¬®© ®¡« áâ¨
541
@@:     call    edit_box_key.draw_rectangle  ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª § ªà è¨¢ ¥¬®© ®¡« áâ¨
541
        ret
542
        ret
542
edit_box_key.low:   dec     eax
543
edit_box_key.low:   dec     eax
543
        jmp     @b
544
        jmp     @b
544
;¢å®¤­®© ¯ à ¬¥âà ebx - ed_pos
545
;¢å®¤­®© ¯ à ¬¥âà ebx - ed_pos
545
edit_box_key.sh_first_sh:
546
edit_box_key.sh_first_sh:
546
        test    word ed_flags,ed_shift
547
        test    word ed_flags,ed_shift
547
        je      @f
548
        je      @f
548
        mov     dword ed_shift_pos_old,ebx
549
        mov     dword ed_shift_pos_old,ebx
549
        test    word ed_flags,ed_shift_on
550
        test    word ed_flags,ed_shift_on
550
        jne     @f
551
        jne     @f
551
        mov     dword ed_shift_pos,ebx
552
        mov     dword ed_shift_pos,ebx
552
        or      word ed_flags,ed_shift_on
553
        or      word ed_flags,ed_shift_on
553
@@:     ret
554
@@:     ret
554
;Ž¡à ¡®âª  ªà ©­¨å ¯®«®¦¥­¨© ¢ editbox ¯à¨ ­ ¦ â®¬ shift
555
;Ž¡à ¡®âª  ªà ©­¨å ¯®«®¦¥­¨© ¢ editbox ¯à¨ ­ ¦ â®¬ shift
555
;¯à®¨§¢®¤¨â á­ï⨥ ¢ë¤¥«¥­¨¥, ¥á«¨ ­¥â shift
556
;¯à®¨§¢®¤¨â á­ï⨥ ¢ë¤¥«¥­¨¥, ¥á«¨ ­¥â shift
556
;¨­ ç¥ ¢®®¡é¥ ¢ë室¨â
557
;¨­ ç¥ ¢®®¡é¥ ¢ë室¨â
557
edit_box_key.sh_st_of:
558
edit_box_key.sh_st_of:
558
        test    word ed_flags,ed_shift
559
        test    word ed_flags,ed_shift
559
        jne     @f
560
        jne     @f
560
        test    word ed_flags,ed_shift_bac
561
        test    word ed_flags,ed_shift_bac
561
        je      @f
562
        je      @f
562
        mov     ebp,ed_color
563
        mov     ebp,ed_color
563
        mov     ebx,dword       ed_shift_pos
564
        mov     ebx,dword       ed_shift_pos
564
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
565
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
565
        and     word ed_flags,ed_shift_cl ; ®ç¨á⪠ ®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥­¨¥ 
566
        and     word ed_flags,ed_shift_cl ; ®ç¨á⪠ ®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥­¨¥ 
566
        jmp     edit_box.draw_cursor_text
567
        jmp     edit_box.draw_cursor_text
567
@@:
568
@@:
568
        and     word ed_flags,ed_shift_off
569
        and     word ed_flags,ed_shift_off
569
        popad
570
        popad
570
        ret     4
571
        ret     4
571
;¯à®¢¥àª  á®áâ®ï­¨ï shift ¡ë« «¨ ®­ ­ ¦ â à ­ìè¥?
572
;¯à®¢¥àª  á®áâ®ï­¨ï shift ¡ë« «¨ ®­ ­ ¦ â à ­ìè¥?
572
edit_box_key.sh_enable:
573
edit_box_key.sh_enable:
573
        test    word ed_flags,ed_shift
574
        test    word ed_flags,ed_shift
574
        jne     edit_box_key.sh_ext_en ;­ à¨á®¢ âì § ªà è¥­ë© ¯àאַ㣮«ì­¨ª
575
        jne     edit_box_key.sh_ext_en ;­ à¨á®¢ âì § ªà è¥­ë© ¯àאַ㣮«ì­¨ª
575
 
576
 
576
        test    word ed_flags,ed_shift_bac
577
        test    word ed_flags,ed_shift_bac
577
        je      @f
578
        je      @f
578
        call    edit_box.check_offset
579
        call    edit_box.check_offset
579
 
580
 
580
        mov     ebp,ed_color
581
        mov     ebp,ed_color
581
        mov     ebx,dword       ed_shift_pos
582
        mov     ebx,dword       ed_shift_pos
582
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
583
        call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
583
        call    edit_box_key.draw_wigwag_cl 
584
        call    edit_box_key.draw_wigwag_cl 
584
        and     word ed_flags,ed_shift_cl ; 1¢ à ­¥ ­ã¦­® 
585
        and     word ed_flags,ed_shift_cl ; 1¢ à ­¥ ­ã¦­® 
585
        ret
586
        ret
586
 
587
 
587
@@:     mov     ebp,ed_color
588
@@:     mov     ebp,ed_color
588
        call    edit_box.clear_cursor
589
        call    edit_box.clear_cursor
589
        call    edit_box.check_offset
590
        call    edit_box.check_offset
590
        ret
591
        ret
591
edit_box_key.sh_ext_en:     
592
edit_box_key.sh_ext_en:     
592
        call    edit_box.check_offset
593
        call    edit_box.check_offset
593
        test    word ed_flags,ed_offset_fl
594
        test    word ed_flags,ed_offset_fl
594
        je      @f
595
        je      @f
595
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
596
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
596
        mov     eax,dword       ed_shift_pos
597
        mov     eax,dword       ed_shift_pos
597
        mov     ebx,dword       ed_pos
598
        mov     ebx,dword       ed_pos
598
        mov     ecx,dword       ed_shift_pos_old
599
        mov     ecx,dword       ed_shift_pos_old
599
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
600
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
600
        cmp     eax,ecx
601
        cmp     eax,ecx
601
        je      edit_box_key.1_shem
602
        je      edit_box_key.1_shem
602
        jb      edit_box_key.smaller
603
        jb      edit_box_key.smaller
603
        cmp     ecx,ebx
604
        cmp     ecx,ebx
604
        ja      edit_box_key.1_shem
605
        ja      edit_box_key.1_shem
605
        call    edit_box_key.draw_wigwag_cl ;clear
606
        call    edit_box_key.draw_wigwag_cl ;clear
606
        jmp     edit_box_key.sh_e_end
607
        jmp     edit_box_key.sh_e_end
607
edit_box_key.smaller:
608
edit_box_key.smaller:
608
        cmp     ecx,ebx
609
        cmp     ecx,ebx
609
        jb      edit_box_key.1_shem
610
        jb      edit_box_key.1_shem
610
        call    edit_box_key.draw_wigwag_cl ;clear
611
        call    edit_box_key.draw_wigwag_cl ;clear
611
        jmp     edit_box_key.sh_e_end
612
        jmp     edit_box_key.sh_e_end
612
;alike  =
613
;alike  =
613
edit_box_key.1_shem:        call   edit_box_key.draw_wigwag
614
edit_box_key.1_shem:        call   edit_box_key.draw_wigwag
614
edit_box_key.sh_e_end:      and     word ed_flags,ed_shift_off
615
edit_box_key.sh_e_end:      and     word ed_flags,ed_shift_off
615
        ret
616
        ret
616
@@:     mov     ebp,shift_color
617
@@:     mov     ebp,shift_color
617
        mov     ebx,dword       ed_shift_pos
618
        mov     ebx,dword       ed_shift_pos
618
        call    edit_box_key.sh_cl_
619
        call    edit_box_key.sh_cl_
619
        jmp     edit_box_key.sh_e_end
620
        jmp     edit_box_key.sh_e_end
620
;äã­ªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ­ ¦ â¨¨ home and end
621
;äã­ªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ­ ¦ â¨¨ home and end
621
edit_box_key.sh_home_end:
622
edit_box_key.sh_home_end:
622
        mov     ebp,ed_color
623
        mov     ebp,ed_color
623
        call    edit_box.clear_cursor
624
        call    edit_box.clear_cursor
624
        test    word ed_flags,ed_shift_bac
625
        test    word ed_flags,ed_shift_bac
625
        je      @f
626
        je      @f
626
        mov     ebp,ed_color
627
        mov     ebp,ed_color
627
        mov     ebx,dword       ed_shift_pos_old
628
        mov     ebx,dword       ed_shift_pos_old
628
        call    edit_box_key.sh_cl_
629
        call    edit_box_key.sh_cl_
629
 
630
 
630
@@:     test    word ed_flags,ed_shift
631
@@:     test    word ed_flags,ed_shift
631
        je      edit_box_key.sh_exit_ ;¢ë©â¨
632
        je      edit_box_key.sh_exit_ ;¢ë©â¨
632
        mov     ebp,shift_color
633
        mov     ebp,shift_color
633
        mov     ebx,dword       ed_shift_pos
634
        mov     ebx,dword       ed_shift_pos
634
        call    edit_box_key.sh_cl_
635
        call    edit_box_key.sh_cl_
635
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
636
        or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
636
        jmp     edit_box_key.sh_e_end
637
        jmp     edit_box_key.sh_e_end
637
edit_box_key.sh_exit_:      
638
edit_box_key.sh_exit_:      
638
	call    edit_box.check_offset
639
	call    edit_box.check_offset
639
        ret
640
        ret
640
;äã­ªæ¨ï ¢­¥á¥­¨ï 0 ¯®  ¤à¥áã ed_size+1
641
;äã­ªæ¨ï ¢­¥á¥­¨ï 0 ¯®  ¤à¥áã ed_size+1
641
edit_box_key.enable_null:
642
edit_box_key.enable_null:
642
        pusha
643
        pusha
643
        mov     eax,ed_size
644
        mov     eax,ed_size
644
        mov     ebx,ed_text
645
        mov     ebx,ed_text
645
        test    eax,eax
646
        test    eax,eax
646
        add     eax,ebx
647
        add     eax,ebx
647
        jne     @f
648
        jne     @f
648
        inc     eax
649
        inc     eax
649
@@:     xor     ebx,ebx
650
@@:     xor     ebx,ebx
650
        mov     [eax],bl
651
        mov     [eax],bl
651
edit_ex
652
edit_ex
652
;- 㤠«¥­¨¥ ᨬ¢®« 
653
;- 㤠«¥­¨¥ ᨬ¢®« 
653
;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
654
;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
654
edit_box_key.del_char:
655
edit_box_key.del_char:
655
        mov     esi,ed_text
656
        mov     esi,ed_text
656
        test    word ed_flags,ed_shift_on
657
        test    word ed_flags,ed_shift_on
657
        je      @f
658
        je      @f
658
        mov     eax,dword ed_shift_pos
659
        mov     eax,dword ed_shift_pos
659
        mov     ebx,esi
660
        mov     ebx,esi
660
        cmp     eax,ecx
661
        cmp     eax,ecx
661
        jae     edit_box_key.dh_n
662
        jae     edit_box_key.dh_n
662
 
663
 
663
        mov     ed_pos,eax      ;çâ® ¡ë ­¥ ¡ë«® ã¡¥£ ­¨ï ªãàá®à 
664
        mov     ed_pos,eax      ;çâ® ¡ë ­¥ ¡ë«® ã¡¥£ ­¨ï ªãàá®à 
664
        mov     ebp,ecx
665
        mov     ebp,ecx
665
        sub     ebp,eax
666
        sub     ebp,eax
666
        add     ebx,eax  ;eax ¬¥­ìè¥ 
667
        add     ebx,eax  ;eax ¬¥­ìè¥ 
667
        sub     edx,ecx
668
        sub     edx,ecx
668
        add     esi,ecx
669
        add     esi,ecx
669
 
670
 
670
        mov     dword ed_shift_pos,ebp
671
        mov     dword ed_shift_pos,ebp
671
        jmp     edit_box_key.del_ch_sh
672
        jmp     edit_box_key.del_ch_sh
672
                     ;¥á«¨ ¨­ ç¥
673
                     ;¥á«¨ ¨­ ç¥
673
edit_box_key.dh_n:  
674
edit_box_key.dh_n:  
674
        mov     ebp,eax
675
        mov     ebp,eax
675
        sub     ebp,ecx
676
        sub     ebp,ecx
676
        add     ebx,ecx
677
        add     ebx,ecx
677
        sub     edx,eax
678
        sub     edx,eax
678
        add     esi,eax
679
        add     esi,eax
679
        mov     dword ed_shift_pos,ebp
680
        mov     dword ed_shift_pos,ebp
680
        jmp     edit_box_key.del_ch_sh
681
        jmp     edit_box_key.del_ch_sh
681
 
682
 
682
@@:     add     esi,ecx ;㪠§ â¥«ì + ᬥ饭¨¥ ª ॠ«ì­®¬ã ¡ãää¥àã
683
@@:     add     esi,ecx ;㪠§ â¥«ì + ᬥ饭¨¥ ª ॠ«ì­®¬ã ¡ãää¥àã
683
        mov     ebx,esi
684
        mov     ebx,esi
684
        inc     esi
685
        inc     esi
685
        cld
686
        cld
686
 
687
 
687
        sub     edx,ecx
688
        sub     edx,ecx
688
edit_box_key.del_ch_sh:
689
edit_box_key.del_ch_sh:
689
 
690
 
690
        push    edi
691
        push    edi
691
        mov     edi,ebx
692
        mov     edi,ebx
692
@@:
693
@@:
693
        lodsb
694
        lodsb
694
        stosb
695
        stosb
695
        dec edx
696
        dec edx
696
        jns @b
697
        jns @b
697
        
698
        
698
        pop edi
699
        pop edi
699
        ret
700
        ret
700
;¢ëç¨á«¨âì § ªà è¨¢ ¥¬ãî ®¡« áâì
701
;¢ëç¨á«¨âì § ªà è¨¢ ¥¬ãî ®¡« áâì
701
;ᮣ« è¥­¨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size
702
;ᮣ« è¥­¨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size
702
edit_box_key.clear_bg:
703
edit_box_key.clear_bg:
703
        call    edit_box.get_n  ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨­ë ª®¬¯®­¥­â 
704
        call    edit_box.get_n  ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨­ë ª®¬¯®­¥­â 
704
        push    eax
705
        push    eax
705
        mov     ebx,ed_offset
706
        mov     ebx,ed_offset
706
        add     eax,ebx ;eax = w_off= ed_offset+width
707
        add     eax,ebx ;eax = w_off= ed_offset+width
707
        mov     ebx,ebp ;ed_size
708
        mov     ebx,ebp ;ed_size
708
        
709
        
709
        cmp     eax,ebx
710
        cmp     eax,ebx
710
        jb      @f
711
        jb      @f
711
        mov     eax,ed_pos
712
        mov     eax,ed_pos
712
        sub     ebx,eax
713
        sub     ebx,eax
713
        mov     ecx,ed_offset
714
        mov     ecx,ed_offset
714
        sub     eax,ecx
715
        sub     eax,ecx
715
        jmp     edit_box_key.nxt
716
        jmp     edit_box_key.nxt
716
@@:     mov     ebx,ed_pos
717
@@:     mov     ebx,ed_pos
717
        push    ebx
718
        push    ebx
718
        sub     eax,ebx
719
        sub     eax,ebx
719
        mov     ebx,eax ;It is don't optimal
720
        mov     ebx,eax ;It is don't optimal
720
        
721
        
721
        pop     eax     ;ed_pos
722
        pop     eax     ;ed_pos
722
        mov     ecx,ed_offset
723
        mov     ecx,ed_offset
723
        sub     eax,ecx
724
        sub     eax,ecx
724
edit_box_key.nxt:
725
edit_box_key.nxt:
725
        mov     ebp,eax  ;¯à®¢¥àª  ­  ¢ë室 § ªà è¨¢ ¥¬®© ®¡« á⨠§  ¯à¥¤¥«ë ¤«¨­ë
726
        mov     ebp,eax  ;¯à®¢¥àª  ­  ¢ë室 § ªà è¨¢ ¥¬®© ®¡« á⨠§  ¯à¥¤¥«ë ¤«¨­ë
726
        add     ebp,ebx
727
        add     ebp,ebx
727
        pop     edx
728
        pop     edx
728
        cmp     ebp,edx
729
        cmp     ebp,edx
729
        je      @f
730
        je      @f
730
        inc     ebx
731
        inc     ebx
731
 
732
 
732
@@:     mov     edx,ebx
733
@@:     mov     edx,ebx
733
        lea     ebx,[eax*2+eax]
734
        lea     ebx,[eax*2+eax]
734
        shl     ebx,1
735
        shl     ebx,1
735
        add     ebx,ed_left
736
        add     ebx,ed_left
736
        inc     ebx
737
        inc     ebx
737
        shl     ebx,16
738
        shl     ebx,16
738
        lea     ecx,[edx*2+edx]
739
        lea     ecx,[edx*2+edx]
739
        shl     ecx,1   
740
        shl     ecx,1   
740
        mov     bx,cx
741
        mov     bx,cx
741
        mov     edx,ed_color
742
        mov     edx,ed_color
742
        call    edit_box.draw_bg_eax
743
        call    edit_box.draw_bg_eax
743
        ret
744
        ret
744
;;;;;;;;;;;;;;;;;;;
745
;;;;;;;;;;;;;;;;;;;
745
;;; Ž¡à ¡®âª  ¯à¨¬¨â¨¢®¢
746
;;; Ž¡à ¡®âª  ¯à¨¬¨â¨¢®¢
746
;;;;;;;;;;;;;;;;;;;;
747
;;;;;;;;;;;;;;;;;;;;
747
; à¨á®¢ âì ¯àאַ㣮«ì­¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp
748
; à¨á®¢ âì ¯àאַ㣮«ì­¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp
748
;¢å®¤­ë¥ ¯ à ¬¥âàë:
749
;¢å®¤­ë¥ ¯ à ¬¥âàë:
749
;eax=dword ed_pos
750
;eax=dword ed_pos
750
;ebp=-梥â ed_color or shift_color 
751
;ebp=-梥â ed_color or shift_color 
751
edit_box_key.draw_rectangle:
752
edit_box_key.draw_rectangle:
752
        mov     ecx,dword ed_offset
753
        mov     ecx,dword ed_offset
753
        sub     eax,ecx
754
        sub     eax,ecx
754
        lea     ebx,[eax*2+eax]
755
        lea     ebx,[eax*2+eax]
755
        shl     ebx,1
756
        shl     ebx,1
756
        inc     ebx
757
        inc     ebx
757
        add     ebx,ed_left
758
        add     ebx,ed_left
758
        shl     ebx,16
759
        shl     ebx,16
759
        add     ebx,6
760
        add     ebx,6
760
        mov     edx,ebp
761
        mov     edx,ebp
761
        call    edit_box.draw_bg_eax
762
        call    edit_box.draw_bg_eax
762
        ret
763
        ret
763
;;;;;;;;;;;;;;;;;;
764
;;;;;;;;;;;;;;;;;;
764
;;à®¢¥àª  ­ ¦ â «¨ shift
765
;;à®¢¥àª  ­ ¦ â «¨ shift
765
;;;;;;;;;;;;;;;;;;
766
;;;;;;;;;;;;;;;;;;
766
edit_box_key.check_shift:
767
edit_box_key.check_shift:
767
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
768
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
768
        mcall   66,3
769
        mcall   66,3
769
        test    al,0x03
770
        test    al,0x03
770
        je      @f
771
        je      @f
771
        or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £
772
        or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £
772
@@:edit_ex
773
@@:edit_ex
773
}
774
}
774
;¬ ªà®á ª« ¢¨è ­  ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï 
775
;¬ ªà®á ª« ¢¨è ­  ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï 
775
macro use_key_process backspase,delete,left,right,home,end,insert
776
macro use_key_process backspase,delete,left,right,home,end,insert
776
{
777
{
777
if backspase eq 
778
if backspase eq 
778
else
779
else
779
        cmp     ah,8
780
        cmp     ah,8
780
        jz      edit_box_key.backspace
781
        jz      edit_box_key.backspace
781
end if
782
end if
782
if delete eq 
783
if delete eq 
783
else
784
else
784
        cmp     ah,0xb6
785
        cmp     ah,0xb6
785
        jz      edit_box_key.delete
786
        jz      edit_box_key.delete
786
end if
787
end if
787
if left eq 
788
if left eq 
788
else
789
else
789
        cmp     ah,176
790
        cmp     ah,176
790
        jz      edit_box_key.left
791
        jz      edit_box_key.left
791
end if
792
end if
792
if right eq 
793
if right eq 
793
else
794
else
794
        cmp     ah,179
795
        cmp     ah,179
795
        jz      edit_box_key.right
796
        jz      edit_box_key.right
796
end if
797
end if
797
if home eq 
798
if home eq 
798
else
799
else
799
        cmp     ah,180
800
        cmp     ah,180
800
        jz      edit_box_key.home
801
        jz      edit_box_key.home
801
end if
802
end if
802
if home eq 
803
if home eq 
803
else
804
else
804
        cmp     ah,181
805
        cmp     ah,181
805
        jz      edit_box_key.end
806
        jz      edit_box_key.end
806
end if
807
end if
807
if insert eq 
808
if insert eq 
808
else
809
else
809
        cmp     ah,185  ;insert
810
        cmp     ah,185  ;insert
810
        jz      edit_box_key.insert
811
        jz      edit_box_key.insert
811
end if
812
end if
812
}
813
}
813
 
814
 
814
macro use_key_no_process  up,down,esc,enter,tab,numl,capsl,scrolll
815
macro use_key_no_process  up,down,esc,enter,tab,numl,capsl,scrolll
815
{
816
{
816
if up eq 
817
if up eq 
817
else
818
else
818
        cmp     ah,177
819
        cmp     ah,177
819
        jz      edit_box.editbox_exit
820
        jz      edit_box.editbox_exit
820
end if
821
end if
821
if down eq 
822
if down eq 
822
else
823
else
823
        cmp     ah,178
824
        cmp     ah,178
824
        jz      edit_box.editbox_exit
825
        jz      edit_box.editbox_exit
825
end if
826
end if
826
if esc eq 
827
if esc eq 
827
else
828
else
828
        cmp     ah,27   ;ESC - ª« ¢¨è  ))
829
        cmp     ah,27   ;ESC - ª« ¢¨è  ))
829
        jz      edit_box.editbox_exit
830
        jz      edit_box.editbox_exit
830
end if
831
end if
831
if enter eq 
832
if enter eq 
832
else
833
else
833
        cmp     ah,13   ;ENTER - ª« ¢¨è  ))
834
        cmp     ah,13   ;ENTER - ª« ¢¨è  ))
834
        jz      edit_box.editbox_exit
835
        jz      edit_box.editbox_exit
835
end if
836
end if
836
if tab eq 
837
if tab eq 
837
else
838
else
838
        cmp     ah,9   ;TAB - ª« ¢¨è  ))
839
        cmp     ah,9   ;TAB - ª« ¢¨è  ))
839
        jz      edit_box.editbox_exit
840
        jz      edit_box.editbox_exit
840
end if
841
end if
841
 
842
 
842
if numl eq 
843
if numl eq 
843
else
844
else
844
        cmp     ah,4   ;Num Lock - ª« ¢¨è  ))
845
        cmp     ah,4   ;Num Lock - ª« ¢¨è  ))
845
        jz      edit_box.editbox_exit
846
        jz      edit_box.editbox_exit
846
end if
847
end if
847
 
848
 
848
if capsl eq 
849
if capsl eq 
849
else
850
else
850
        cmp     ah,2   ;Caps Lock - ª« ¢¨è  ))
851
        cmp     ah,2   ;Caps Lock - ª« ¢¨è  ))
851
        jz      edit_box.editbox_exit
852
        jz      edit_box.editbox_exit
852
end if
853
end if
853
 
854
 
854
if scrolll eq 
855
if scrolll eq 
855
else
856
else
856
        cmp     ah,1   ;Scroll Lock - ª« ¢¨è  ))
857
        cmp     ah,1   ;Scroll Lock - ª« ¢¨è  ))
857
        jz      edit_box.editbox_exit
858
        jz      edit_box.editbox_exit
858
end if
859
end if
859
 
860
 
860
}
861
}
861
 
862
 
862
macro use_key_figures_only
863
macro use_key_figures_only
863
{
864
{
864
        test    word ed_flags,ed_figure_only  ; ⮫쪮 æ¨äàë ?
865
        test    word ed_flags,ed_figure_only  ; ⮫쪮 æ¨äàë ?
865
        jz      @f
866
        jz      @f
866
        cmp     ah,'0'
867
        cmp     ah,'0'
867
        jb      edit_box.editbox_exit
868
        jb      edit_box.editbox_exit
868
        cmp     ah,'9'
869
        cmp     ah,'9'
869
        ja      edit_box.editbox_exit
870
        ja      edit_box.editbox_exit
870
@@:
871
@@:
871
}
872
}
872
macro are_key_shift_press
873
macro are_key_shift_press
873
{
874
{
874
        test    word ed_flags,ed_shift_on
875
        test    word ed_flags,ed_shift_on
875
        je      @f
876
        je      @f
876
        ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
877
        ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
877
        push    eax
878
        push    eax
878
        mov     edx,ed_size
879
        mov     edx,ed_size
879
        mov     ecx, ed_pos
880
        mov     ecx, ed_pos
880
        pusha
881
        pusha
881
;;;;;;;;;;;;;;;;;;;;;
882
;;;;;;;;;;;;;;;;;;;;;
882
;clear input arrea
883
;clear input arrea
883
        mov     ebp,ed_color
884
        mov     ebp,ed_color
884
        mov     ebx,dword       ed_shift_pos
885
        mov     ebx,dword       ed_shift_pos
885
        call    edit_box_key.sh_cl_
886
        call    edit_box_key.sh_cl_
886
        mov     ebp,ed_size
887
        mov     ebp,ed_size
887
        call    edit_box_key.clear_bg
888
        call    edit_box_key.clear_bg
888
;;;;;;;;;;;;;;;;;;;;;
889
;;;;;;;;;;;;;;;;;;;;;
889
        popa 
890
        popa 
890
        call    edit_box_key.del_char
891
        call    edit_box_key.del_char
891
;;;;
892
;;;;
892
        mov     eax,dword ed_shift_pos
893
        mov     eax,dword ed_shift_pos
893
        mov     ebx,ed_size
894
        mov     ebx,ed_size
894
        sub     ebx,eax
895
        sub     ebx,eax
895
        mov     ed_size,ebx
896
        mov     ed_size,ebx
896
        pop     eax
897
        pop     eax
897
@@:
898
@@:
898
}
899
}
899
macro are_key_cur_end
900
macro are_key_cur_end
900
{
901
{
901
        mov     ecx,ed_size
902
        mov     ecx,ed_size
902
        mov     edx, ed_max
903
        mov     edx, ed_max
903
        test    word ed_flags,ed_insert
904
        test    word ed_flags,ed_insert
904
        jne     @f
905
        jne     @f
905
        cmp     ecx,edx
906
        cmp     ecx,edx
906
        jae     edit_box.editbox_exit
907
        jae     edit_box.editbox_exit
907
@@:     mov     ebx, ed_pos
908
@@:     mov     ebx, ed_pos
908
        cmp     ebx,edx
909
        cmp     ebx,edx
909
        jl      @f ; ¥á«¨ ¬¥­ìè¥ ¨«¨ à ¢­®
910
        jl      @f ; ¥á«¨ ¬¥­ìè¥ ¨«¨ à ¢­®
910
        jmp     edit_box.editbox_exit
911
        jmp     edit_box.editbox_exit
911
 
912
 
912
@@:     ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢¯à ¢®
913
@@:     ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢¯à ¢®
913
        mov     ecx,ed_size
914
        mov     ecx,ed_size
914
        push    edi eax
915
        push    edi eax
915
        mov     ebp,edi
916
        mov     ebp,edi
916
        mov     esi,ed_text     ; “ª § â¥«ì ­  ¡ãä¥à
917
        mov     esi,ed_text     ; “ª § â¥«ì ­  ¡ãä¥à
917
                                ;ã¤¥¬ à ¡®â âì á® áâப®©
918
                                ;ã¤¥¬ à ¡®â âì á® áâப®©
918
        add     esi,ecx         ;add ed_size ¤®¡ ¢¨¬ max size
919
        add     esi,ecx         ;add ed_size ¤®¡ ¢¨¬ max size
919
        mov     edi,esi
920
        mov     edi,esi
920
 
921
 
921
        cmp     ecx,ebx         ;…᫨ ã ­ á ¯®§¨æ¨ï ªãàá®à  = ⥪ã饬ã à §¬¥àã ­ ¯¥ç â ­­ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®­æ¥
922
        cmp     ecx,ebx         ;…᫨ ã ­ á ¯®§¨æ¨ï ªãàá®à  = ⥪ã饬ã à §¬¥àã ­ ¯¥ç â ­­ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®­æ¥
922
        je      edit_box_key.In_k
923
        je      edit_box_key.In_k
923
 
924
 
924
        test    dword bp_flags,ed_insert ;IF insert is enable  â.ª. edi ¨§¬¥­¥­  ¤à¥á㥬 ç¥à¥§ ebp
925
        test    dword bp_flags,ed_insert ;IF insert is enable  â.ª. edi ¨§¬¥­¥­  ¤à¥á㥬 ç¥à¥§ ebp
925
        jne     edit_box_key.ins_v
926
        jne     edit_box_key.ins_v
926
;clear
927
;clear
927
pusha
928
pusha
928
        mov     edi,ebp
929
        mov     edi,ebp
929
        mov     ebp,ed_size
930
        mov     ebp,ed_size
930
        call    edit_box_key.clear_bg
931
        call    edit_box_key.clear_bg
931
popa
932
popa
932
        sub     ecx,ebx         ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥­¨ï.
933
        sub     ecx,ebx         ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥­¨ï.
933
        inc     edi             ;‘¬¥á⨬ ­ è¨ ᨬ¢®«ë ¢ ¯à ¢®
934
        inc     edi             ;‘¬¥á⨬ ­ è¨ ᨬ¢®«ë ¢ ¯à ¢®
934
        std
935
        std
935
        inc     ecx
936
        inc     ecx
936
   @@:  
937
   @@:  
937
        ;--------
938
        ;--------
938
        lodsb
939
        lodsb
939
        stosb
940
        stosb
940
        ;--------
941
        ;--------
941
        loop    @b
942
        loop    @b
942
edit_box_key.In_k:  
943
edit_box_key.In_k:  
943
	cld
944
	cld
944
        pop eax
945
        pop eax
945
        mov al,ah
946
        mov al,ah
946
        stosb
947
        stosb
947
        pop edi
948
        pop edi
948
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
949
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
949
        ; 㢥«¨ç¨¢ ¥¬ §­ ç¥­¨¥ à §¬¥à  ¨ ¯®§¨æ¨¨
950
        ; 㢥«¨ç¨¢ ¥¬ §­ ç¥­¨¥ à §¬¥à  ¨ ¯®§¨æ¨¨
950
        inc      dword ed_size
951
        inc      dword ed_size
951
        inc      dword ed_pos
952
        inc      dword ed_pos
952
        call    edit_box_key.draw_all2
953
        call    edit_box_key.draw_all2
953
        jmp     edit_box_key.shift
954
        jmp     edit_box_key.shift
954
}
955
}
955
macro use_work_key
956
macro use_work_key
956
{
957
{
957
edit_box_key.insert: test   word ed_flags,ed_insert ;not    word ed_insert
958
edit_box_key.insert: test   word ed_flags,ed_insert ;not    word ed_insert
958
         je     @f
959
         je     @f
959
         and    word ed_flags,ed_insert_cl
960
         and    word ed_flags,ed_insert_cl
960
 
961
 
961
        jmp     edit_box.editbox_exit
962
        jmp     edit_box.editbox_exit
962
@@:
963
@@:
963
        or      word ed_flags,ed_insert
964
        or      word ed_flags,ed_insert
964
        jmp     edit_box.editbox_exit
965
        jmp     edit_box.editbox_exit
965
edit_box_key.ins_v:
966
edit_box_key.ins_v:
966
;        dec     dword [ebp+48];ed_size    ;processing is insert
967
;        dec     dword [ebp+48];ed_size    ;processing is insert
967
	dec	dword bp_size
968
	dec	dword bp_size
968
        sub     esi,ecx
969
        sub     esi,ecx
969
        add     esi,ebx
970
        add     esi,ebx
970
        mov     edi,esi
971
        mov     edi,esi
971
;clear
972
;clear
972
pusha
973
pusha
973
        mov     edi,ebp
974
        mov     edi,ebp
974
        mov     ebp,ed_pos
975
        mov     ebp,ed_pos
975
        call    edit_box_key.clear_bg
976
        call    edit_box_key.clear_bg
976
popa
977
popa
977
        jmp     edit_box_key.In_k
978
        jmp     edit_box_key.In_k
978
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
979
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
979
edit_box_key.delete:        
980
edit_box_key.delete:        
980
        mov     edx,ed_size
981
        mov     edx,ed_size
981
        mov     ecx,ed_pos
982
        mov     ecx,ed_pos
982
        cmp     edx,ecx
983
        cmp     edx,ecx
983
        jg      edit_box_key.bac_del
984
        jg      edit_box_key.bac_del
984
        test    word ed_flags,ed_shift_on
985
        test    word ed_flags,ed_shift_on
985
        jne     edit_box_key.del_bac
986
        jne     edit_box_key.del_bac
986
        popad
987
        popad
987
        ret     4
988
        ret     4
988
edit_box_key.bac_del:       
989
edit_box_key.bac_del:       
989
        call    edit_box_key.del_char
990
        call    edit_box_key.del_char
990
        jmp     edit_box_key.draw_all
991
        jmp     edit_box_key.draw_all
991
;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
992
;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
992
;--- ­ ¦ â  ª« ¢¨è  backspace ---
993
;--- ­ ¦ â  ª« ¢¨è  backspace ---
993
edit_box_key.backspace:
994
edit_box_key.backspace:
994
        ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
995
        ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
995
        mov     ecx,ed_pos
996
        mov     ecx,ed_pos
996
        test    ecx,ecx
997
        test    ecx,ecx
997
        jnz     edit_box_key.del_bac
998
        jnz     edit_box_key.del_bac
998
        test    word ed_flags,ed_shift_on
999
        test    word ed_flags,ed_shift_on
999
        jne     edit_box_key.bac_del
1000
        jne     edit_box_key.bac_del
1000
        popad
1001
        popad
1001
        ret     4
1002
        ret     4
1002
 
1003
 
1003
edit_box_key.del_bac:
1004
edit_box_key.del_bac:
1004
        mov     edx,ed_size
1005
        mov     edx,ed_size
1005
        cmp     edx,ecx ;if ed_pos=ed_size
1006
        cmp     edx,ecx ;if ed_pos=ed_size
1006
        je      @f
1007
        je      @f
1007
        dec     ecx
1008
        dec     ecx
1008
        call    edit_box_key.del_char
1009
        call    edit_box_key.del_char
1009
@@:     test    word ed_flags,ed_shift_on
1010
@@:     test    word ed_flags,ed_shift_on
1010
        jne     edit_box_key.bac_del
1011
        jne     edit_box_key.bac_del
1011
        dec      dword ed_pos
1012
        dec      dword ed_pos
1012
edit_box_key.draw_all:
1013
edit_box_key.draw_all:
1013
        push    edit_box_key.shift;.draw_cursor_text;eax
1014
        push    edit_box_key.shift;.draw_cursor_text;eax
1014
 
1015
 
1015
        test    word ed_flags,ed_shift_on
1016
        test    word ed_flags,ed_shift_on
1016
        je      @f
1017
        je      @f
1017
        mov     eax,dword ed_shift_pos
1018
        mov     eax,dword ed_shift_pos
1018
        mov     ebx,ed_size
1019
        mov     ebx,ed_size
1019
        sub     ebx,eax
1020
        sub     ebx,eax
1020
        mov     ed_size,ebx
1021
        mov     ed_size,ebx
1021
 
1022
 
1022
        mov     ebp,ed_color
1023
        mov     ebp,ed_color
1023
        call    edit_box.clear_cursor
1024
        call    edit_box.clear_cursor
1024
        call    edit_box.check_offset
1025
        call    edit_box.check_offset
1025
        call    edit_box.draw_bg
1026
        call    edit_box.draw_bg
1026
        ret
1027
        ret
1027
@@:     dec      dword ed_size
1028
@@:     dec      dword ed_size
1028
 
1029
 
1029
edit_box_key.draw_all2:
1030
edit_box_key.draw_all2:
1030
        and    word ed_flags,ed_shift_cl
1031
        and    word ed_flags,ed_shift_cl
1031
        mov     ebp,ed_color
1032
        mov     ebp,ed_color
1032
        call    edit_box.clear_cursor
1033
        call    edit_box.clear_cursor
1033
        call    edit_box.check_offset
1034
        call    edit_box.check_offset
1034
        mov     ebp,ed_size
1035
        mov     ebp,ed_size
1035
        call    edit_box_key.clear_bg
1036
        call    edit_box_key.clear_bg
1036
        ret
1037
        ret
1037
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1038
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1038
;--- ­ ¦ â  ª« ¢¨è  left ---
1039
;--- ­ ¦ â  ª« ¢¨è  left ---
1039
edit_box_key.left:  
1040
edit_box_key.left:  
1040
	mov     ebx,ed_pos
1041
	mov     ebx,ed_pos
1041
        test    ebx,ebx
1042
        test    ebx,ebx
1042
        jz      edit_box_key.sh_st_of
1043
        jz      edit_box_key.sh_st_of
1043
        or      word ed_flags,ed_left_fl
1044
        or      word ed_flags,ed_left_fl
1044
        call    edit_box_key.sh_first_sh
1045
        call    edit_box_key.sh_first_sh
1045
        dec      dword ed_pos
1046
        dec      dword ed_pos
1046
        call    edit_box_key.sh_enable
1047
        call    edit_box_key.sh_enable
1047
        jmp     edit_box.draw_cursor_text
1048
        jmp     edit_box.draw_cursor_text
1048
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1049
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1049
;--- ­ ¦ â  ª« ¢¨è  right ---
1050
;--- ­ ¦ â  ª« ¢¨è  right ---
1050
edit_box_key.right: 
1051
edit_box_key.right: 
1051
	mov     ebx,ed_pos
1052
	mov     ebx,ed_pos
1052
        cmp     ebx,ed_size
1053
        cmp     ebx,ed_size
1053
        je      edit_box_key.sh_st_of
1054
        je      edit_box_key.sh_st_of
1054
        and     word ed_flags,ed_right_fl
1055
        and     word ed_flags,ed_right_fl
1055
        call    edit_box_key.sh_first_sh
1056
        call    edit_box_key.sh_first_sh
1056
        inc     dword  ed_pos
1057
        inc     dword  ed_pos
1057
        call    edit_box_key.sh_enable
1058
        call    edit_box_key.sh_enable
1058
        jmp     edit_box.draw_cursor_text
1059
        jmp     edit_box.draw_cursor_text
1059
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1060
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1060
edit_box_key.home:  
1061
edit_box_key.home:  
1061
        mov     ebx,ed_pos
1062
        mov     ebx,ed_pos
1062
        test    ebx,ebx
1063
        test    ebx,ebx
1063
        jz      edit_box_key.sh_st_of
1064
        jz      edit_box_key.sh_st_of
1064
        call    edit_box_key.sh_first_sh
1065
        call    edit_box_key.sh_first_sh
1065
        xor     eax,eax
1066
        xor     eax,eax
1066
        mov     ed_pos,eax
1067
        mov     ed_pos,eax
1067
        call    edit_box_key.sh_home_end
1068
        call    edit_box_key.sh_home_end
1068
        jmp     edit_box.draw_cursor_text
1069
        jmp     edit_box.draw_cursor_text
1069
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1070
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1070
edit_box_key.end:   
1071
edit_box_key.end:   
1071
        mov     ebx,ed_pos
1072
        mov     ebx,ed_pos
1072
        cmp     ebx,dword ed_size
1073
        cmp     ebx,dword ed_size
1073
        je      edit_box_key.sh_st_of
1074
        je      edit_box_key.sh_st_of
1074
        call    edit_box_key.sh_first_sh
1075
        call    edit_box_key.sh_first_sh
1075
        mov     eax,ed_size
1076
        mov     eax,ed_size
1076
        mov     ed_pos,eax
1077
        mov     ed_pos,eax
1077
        call    edit_box_key.sh_home_end
1078
        call    edit_box_key.sh_home_end
1078
        jmp     edit_box.draw_cursor_text
1079
        jmp     edit_box.draw_cursor_text
1079
}
1080
}
1080
 
1081
 
1081
macro use_mouse_func
1082
macro use_mouse_func
1082
{
1083
{
1083
;----------------------------------------------------------
1084
;----------------------------------------------------------
1084
;--- Ž¡à ¡®âª  .mouse_wigwag
1085
;--- Ž¡à ¡®âª  .mouse_wigwag
1085
;----------------------------------------------------------
1086
;----------------------------------------------------------
1086
edit_box_mouse.mouse_wigwag:
1087
edit_box_mouse.mouse_wigwag:
1087
        shr     eax,16
1088
        shr     eax,16
1088
        or      word ed_flags,ed_shift_bac+ed_shift_on+ed_shift
1089
        or      word ed_flags,ed_shift_bac+ed_shift_on+ed_shift
1089
;;;;;;;;;;;;;;;;;;
1090
;;;;;;;;;;;;;;;;;;
1090
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox
1091
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox
1091
;;;;;;;;;;;;;;;;;;
1092
;;;;;;;;;;;;;;;;;;
1092
        test    ax,0x8000
1093
        test    ax,0x8000
1093
        jnz     edit_box_mouse.mleft
1094
        jnz     edit_box_mouse.mleft
1094
 
1095
 
1095
        mov     ebx,ed_left
1096
        mov     ebx,ed_left
1096
        cmp     eax,ebx
1097
        cmp     eax,ebx
1097
        jb      edit_box_mouse.mleft
1098
        jb      edit_box_mouse.mleft
1098
 
1099
 
1099
        add     ebx,ed_width
1100
        add     ebx,ed_width
1100
        cmp     eax,ebx
1101
        cmp     eax,ebx
1101
        ja      edit_box_mouse.mright 
1102
        ja      edit_box_mouse.mright 
1102
 
1103
 
1103
        sub     ebx,ed_width
1104
        sub     ebx,ed_width
1104
 
1105
 
1105
        xor     edx,edx
1106
        xor     edx,edx
1106
        sub     eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨­ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨­ âë ¤® editbox ¯® ®á¨ å
1107
        sub     eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨­ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨­ âë ¤® editbox ¯® ®á¨ å
1107
        mov     ebx,6
1108
        mov     ebx,6
1108
        div     ebx
1109
        div     ebx
1109
;;;;;;;;;;;;;;;;;;
1110
;;;;;;;;;;;;;;;;;;
1110
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ¢ ¯à¥¤¥« å ®¡« á⨠editbox
1111
;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ¢ ¯à¥¤¥« å ®¡« á⨠editbox
1111
;;;;;;;;;;;;;;;;;;
1112
;;;;;;;;;;;;;;;;;;
1112
;®«ã稫¨ ª®®à¤¨­ âë ¢ eax ¬ë誨, â.¥. ªã¤  ®­  ¯¥à¥¬¥á⨫ áì
1113
;®«ã稫¨ ª®®à¤¨­ âë ¢ eax ¬ë誨, â.¥. ªã¤  ®­  ¯¥à¥¬¥á⨫ áì
1113
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1114
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1114
        add     eax,ed_offset   ;¤®¡ ¢¨¬ ᬥ饭¨¥
1115
        add     eax,ed_offset   ;¤®¡ ¢¨¬ ᬥ饭¨¥
1115
        cmp     eax,dword ed_size       ;¥á«¨ ¢ë諨 §  ¯à¥¤¥«ë, â® ­¨ç¥£® ­¥ ¤¥« âì
1116
        cmp     eax,dword ed_size       ;¥á«¨ ¢ë諨 §  ¯à¥¤¥«ë, â® ­¨ç¥£® ­¥ ¤¥« âì
1116
        ja      edit_box_mouse.mwigvag
1117
        ja      edit_box_mouse.mwigvag
1117
edit_box_mouse.mdraw: 
1118
edit_box_mouse.mdraw: 
1118
        mov     dword   ed_pos,eax ;á®åà ­¨¬ ­®¢®¥ §­ ç¥­¨¥
1119
        mov     dword   ed_pos,eax ;á®åà ­¨¬ ­®¢®¥ §­ ç¥­¨¥
1119
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1120
;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
1120
        mov     ecx,dword       ed_shift_pos
1121
        mov     ecx,dword       ed_shift_pos
1121
        mov     ebx,dword       ed_shift_pos_old
1122
        mov     ebx,dword       ed_shift_pos_old
1122
        mov     dword   ed_shift_pos_old,eax    ;¢­¥á¥¬ ­®¢®¥ §­ ç¥­¨¥ áâ à®© ¯®§¨æ¨¨ ªãàá®à 
1123
        mov     dword   ed_shift_pos_old,eax    ;¢­¥á¥¬ ­®¢®¥ §­ ç¥­¨¥ áâ à®© ¯®§¨æ¨¨ ªãàá®à 
1123
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
1124
;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
1124
        cmp     ecx,ebx         ;¢ëïá­ï¥¬ ªã¤  ¡ë«® ¤¢¨¦¥­¨¥ ­  ®¤¨­ è £ ­ § ¤
1125
        cmp     ecx,ebx         ;¢ëïá­ï¥¬ ªã¤  ¡ë«® ¤¢¨¦¥­¨¥ ­  ®¤¨­ è £ ­ § ¤
1125
        je      edit_box_mouse.m1_shem        ;¤¢¨¦¥­¨ï ­¥ ¡ë«® à ­¥¥ 
1126
        je      edit_box_mouse.m1_shem        ;¤¢¨¦¥­¨ï ­¥ ¡ë«® à ­¥¥ 
1126
        jb      edit_box_mouse.msmaller       ;¤¢¨¦¥­¨¥ ¡ë«® ->
1127
        jb      edit_box_mouse.msmaller       ;¤¢¨¦¥­¨¥ ¡ë«® ->
1127
        cmp     ebx,eax         ;¤¢¨¦¥­¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤  ¤¢¨¦¥­¨¥ ¯à®¨á室¨â
1128
        cmp     ebx,eax         ;¤¢¨¦¥­¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤  ¤¢¨¦¥­¨¥ ¯à®¨á室¨â
1128
        ja      edit_box_mouse.m1_shem        ;¥á«¨ ¡ë«® ¤¢¨¦¥­¨¥ <- â® ­ã¦­® § ªà á¨âì ®¡« áâì
1129
        ja      edit_box_mouse.m1_shem        ;¥á«¨ ¡ë«® ¤¢¨¦¥­¨¥ <- â® ­ã¦­® § ªà á¨âì ®¡« áâì
1129
        je      edit_box_mouse.mwigvag        ;¥á«¨ ¨§¬¥­¥­¨ï ­¥ ¡ë«®, â® ­¨ç¥£® ­¥ ¤¥« âì
1130
        je      edit_box_mouse.mwigvag        ;¥á«¨ ¨§¬¥­¥­¨ï ­¥ ¡ë«®, â® ­¨ç¥£® ­¥ ¤¥« âì
1130
        mov     ebp,ed_color    ;âã⠭㦭® ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old
1131
        mov     ebp,ed_color    ;âã⠭㦭® ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old
1131
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1132
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1132
        call    edit_box_key.sh_cl_
1133
        call    edit_box_key.sh_cl_
1133
        jmp     edit_box_mouse.mwigvag
1134
        jmp     edit_box_mouse.mwigvag
1134
edit_box_mouse.msmaller:
1135
edit_box_mouse.msmaller:
1135
        cmp     ebx,eax
1136
        cmp     ebx,eax
1136
        jb      edit_box_mouse.m1_shem
1137
        jb      edit_box_mouse.m1_shem
1137
        mov     ebp,ed_color
1138
        mov     ebp,ed_color
1138
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1139
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1139
        call    edit_box_key.sh_cl_
1140
        call    edit_box_key.sh_cl_
1140
        jmp     edit_box_mouse.mwigvag
1141
        jmp     edit_box_mouse.mwigvag
1141
;alike  =
1142
;alike  =
1142
edit_box_mouse.m1_shem: 
1143
edit_box_mouse.m1_shem: 
1143
        mov     ebp,shift_color
1144
        mov     ebp,shift_color
1144
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1145
;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
1145
        mov     ebx,ecx
1146
        mov     ebx,ecx
1146
        call    edit_box_key.sh_cl_
1147
        call    edit_box_key.sh_cl_
1147
        jmp     edit_box_mouse.mwigvag
1148
        jmp     edit_box_mouse.mwigvag
1148
edit_box_mouse.mwigvag:
1149
edit_box_mouse.mwigvag:
1149
        and     word ed_flags,ed_shift_mcl
1150
        and     word ed_flags,ed_shift_mcl
1150
        jmp     edit_box.draw_cursor_text
1151
        jmp     edit_box.draw_cursor_text
1151
;       popa
1152
;       popa
1152
;       ret
1153
;       ret
1153
edit_box_mouse.mleft:
1154
edit_box_mouse.mleft:
1154
        mov     eax,ed_pos
1155
        mov     eax,ed_pos
1155
        cmp     eax,0                                        
1156
        cmp     eax,0                                        
1156
        jbe      edit_box_mouse.mwigvag
1157
        jbe      edit_box_mouse.mwigvag
1157
        dec     eax
1158
        dec     eax
1158
        call    edit_box.check_offset
1159
        call    edit_box.check_offset
1159
        push    eax
1160
        push    eax
1160
        mov     ebx,ed_shift_pos
1161
        mov     ebx,ed_shift_pos
1161
        mov     ebp,shift_color
1162
        mov     ebp,shift_color
1162
        call    edit_box_key.sh_cl_
1163
        call    edit_box_key.sh_cl_
1163
        pop     eax
1164
        pop     eax
1164
        jmp     edit_box_mouse.mdraw
1165
        jmp     edit_box_mouse.mdraw
1165
edit_box_mouse.mright:
1166
edit_box_mouse.mright:
1166
        mov     eax,ed_pos
1167
        mov     eax,ed_pos
1167
        mov     ebx,ed_size
1168
        mov     ebx,ed_size
1168
        cmp     eax,ebx
1169
        cmp     eax,ebx
1169
        jae     edit_box_mouse.mwigvag
1170
        jae     edit_box_mouse.mwigvag
1170
        inc     eax
1171
        inc     eax
1171
        call    edit_box.check_offset
1172
        call    edit_box.check_offset
1172
        mov     ebx,ed_shift_pos
1173
        mov     ebx,ed_shift_pos
1173
        mov     ebp,shift_color
1174
        mov     ebp,shift_color
1174
        push    eax
1175
        push    eax
1175
        call    edit_box_key.sh_cl_
1176
        call    edit_box_key.sh_cl_
1176
        pop     eax
1177
        pop     eax
1177
        jmp     edit_box_mouse.mdraw  
1178
        jmp     edit_box_mouse.mdraw  
1178
}
1179
}
1179
 
1180
 
1180
macro use_work_mouse
1181
macro use_work_mouse
1181
;----------------------------------------------------------
1182
;----------------------------------------------------------
1182
;--- € ­¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §­ë¥ áâ®à®­ë?
1183
;--- € ­¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §­ë¥ áâ®à®­ë?
1183
;----------------------------------------------------------
1184
;----------------------------------------------------------
1184
{
1185
{
1185
        test    word ed_flags,ed_mouse_on
1186
        test    word ed_flags,ed_mouse_on
1186
        jne     edit_box_mouse.mouse_wigwag
1187
        jne     edit_box_mouse.mouse_wigwag
1187
;----------------------------------------------------------
1188
;----------------------------------------------------------
1188
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
1189
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
1189
;----------------------------------------------------------
1190
;----------------------------------------------------------
1190
        mov     ebx,ed_top
1191
        mov     ebx,ed_top
1191
        cmp     ax,bx
1192
        cmp     ax,bx
1192
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1193
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1193
        
1194
        
1194
        add     ebx,ed_height
1195
        add     ebx,ed_height
1195
        cmp     ax,bx
1196
        cmp     ax,bx
1196
        jg      edit_box_mouse._blur;.mouse_end_no_focus
1197
        jg      edit_box_mouse._blur;.mouse_end_no_focus
1197
 
1198
 
1198
        shr     eax,16
1199
        shr     eax,16
1199
 
1200
 
1200
        mov     ebx,ed_left
1201
        mov     ebx,ed_left
1201
        cmp     ax,bx
1202
        cmp     ax,bx
1202
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1203
        jl      edit_box_mouse._blur;.mouse_end_no_focus
1203
 
1204
 
1204
        add     ebx,ed_width
1205
        add     ebx,ed_width
1205
 
1206
 
1206
        cmp     ax,bx
1207
        cmp     ax,bx
1207
        jg      edit_box_mouse._blur;.mouse_end_no_focus        
1208
        jg      edit_box_mouse._blur;.mouse_end_no_focus        
1208
 
1209
 
1209
;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
1210
;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
1210
        push    eax
1211
        push    eax
1211
        mov     ebp,ed_color
1212
        mov     ebp,ed_color
1212
        call    edit_box.clear_cursor
1213
        call    edit_box.clear_cursor
1213
        pop     eax
1214
        pop     eax
1214
edit_box_mouse._mvpos:
1215
edit_box_mouse._mvpos:
1215
        xor     edx,edx
1216
        xor     edx,edx
1216
        sub     eax,ed_left
1217
        sub     eax,ed_left
1217
 
1218
 
1218
        mov     ebx,6
1219
        mov     ebx,6
1219
        div     bx
1220
        div     bx
1220
        add     eax,ed_offset
1221
        add     eax,ed_offset
1221
        cmp     eax,ed_size
1222
        cmp     eax,ed_size
1222
        jna     edit_box_mouse._mshift
1223
        jna     edit_box_mouse._mshift
1223
        mov     eax,ed_size
1224
        mov     eax,ed_size
1224
 
1225
 
1225
edit_box_mouse._mshift:
1226
edit_box_mouse._mshift:
1226
;;;;;;;
1227
;;;;;;;
1227
;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥­¨ï ¯® shift
1228
;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥­¨ï ¯® shift
1228
;;;;;;;
1229
;;;;;;;
1229
        test    word ed_flags,ed_shift_bac
1230
        test    word ed_flags,ed_shift_bac
1230
        je      @f
1231
        je      @f
1231
        mov     ebp,dword       ed_color
1232
        mov     ebp,dword       ed_color
1232
        mov     ebx,dword ed_shift_pos
1233
        mov     ebx,dword ed_shift_pos
1233
        push    eax
1234
        push    eax
1234
        call    edit_box_key.sh_cl_
1235
        call    edit_box_key.sh_cl_
1235
        and     word ed_flags,ed_shift_bac_cl
1236
        and     word ed_flags,ed_shift_bac_cl
1236
        pop     eax
1237
        pop     eax
1237
@@:     
1238
@@:     
1238
        test    word ed_flags,ed_mouse_on
1239
        test    word ed_flags,ed_mouse_on
1239
        jne     @f
1240
        jne     @f
1240
        
1241
        
1241
        mov     dword ed_shift_pos,eax
1242
        mov     dword ed_shift_pos,eax
1242
        or      word  ed_flags,ed_mouse_on
1243
        or      word  ed_flags,ed_mouse_on
1243
        mov     dword ed_pos,eax
1244
        mov     dword ed_pos,eax
1244
 
1245
 
1245
;        mov     dword [mouse_flag],edi          ;ãáâ ­®¢¨¬ ¨¤¥­â¨ä¨ª â®à
1246
;        mov     dword [mouse_flag],edi          ;ãáâ ­®¢¨¬ ¨¤¥­â¨ä¨ª â®à
1246
 
1247
 
1247
       	mov	ebx,dword ed_mouse_variable
1248
       	mov	ebx,dword ed_mouse_variable
1248
	push	edi
1249
	push	edi
1249
	pop	dword [ebx]
1250
	pop	dword [ebx]
1250
 
1251
 
1251
 
1252
 
1252
 
1253
 
1253
 
1254
 
1254
        bts     word ed_flags,1                 ;ãáâ ­®¢ª  䮪ãá 
1255
        bts     word ed_flags,1                 ;ãáâ ­®¢ª  䮪ãá 
1255
        jmp     edit_box_mouse.m_sh
1256
        jmp     edit_box_mouse.m_sh
1256
@@:             
1257
@@:             
1257
        cmp     eax,dword ed_shift_pos  ;¥á«¨ ¯®§¨æ¨¨ ­¥ ¨§¬¥­¨«¨áì
1258
        cmp     eax,dword ed_shift_pos  ;¥á«¨ ¯®§¨æ¨¨ ­¥ ¨§¬¥­¨«¨áì
1258
        je      edit_box.editbox_exit
1259
        je      edit_box.editbox_exit
1259
        mov     ed_pos,eax
1260
        mov     ed_pos,eax
1260
        mov     ebp,dword shift_color
1261
        mov     ebp,dword shift_color
1261
        mov     ebx,dword ed_shift_pos
1262
        mov     ebx,dword ed_shift_pos
1262
        call    edit_box_key.sh_cl_
1263
        call    edit_box_key.sh_cl_
1263
        or      word ed_flags,ed_mous_adn_b     ;ãáâ ­®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on +
1264
        or      word ed_flags,ed_mous_adn_b     ;ãáâ ­®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on +
1264
edit_box_mouse.m_sh:  
1265
edit_box_mouse.m_sh:  
1265
	call    edit_box.draw_text
1266
	call    edit_box.draw_text
1266
        call    edit_box.draw_cursor
1267
        call    edit_box.draw_cursor
1267
;----------------------------------------------------------
1268
;----------------------------------------------------------
1268
;--- ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ 䮪ãá  ---------------------------
1269
;--- ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ 䮪ãá  ---------------------------
1269
;----------------------------------------------------------
1270
;----------------------------------------------------------
1270
        jmp     edit_box_mouse.drc
1271
        jmp     edit_box_mouse.drc
1271
edit_box_mouse._blur:
1272
edit_box_mouse._blur:
1272
        test    word ed_flags,ed_always_focus
1273
        test    word ed_flags,ed_always_focus
1273
        jne     edit_box.editbox_exit
1274
        jne     edit_box.editbox_exit
1274
        btr     word ed_flags,1 ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
1275
        btr     word ed_flags,1 ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
1275
        jnc     edit_box.editbox_exit
1276
        jnc     edit_box.editbox_exit
1276
 
1277
 
1277
        mov     ebp,ed_color
1278
        mov     ebp,ed_color
1278
        call    edit_box.clear_cursor
1279
        call    edit_box.clear_cursor
1279
edit_box_mouse.drc:   call    edit_box.draw_border
1280
edit_box_mouse.drc:   call    edit_box.draw_border
1280
        jmp     edit_box.editbox_exit
1281
        jmp     edit_box.editbox_exit
1281
}
1282
}
1282
 
1283
 
1283
 
1284
 
1284
; Œ ªà®á ¢ë室 
1285
; Œ ªà®á ¢ë室 
1285
macro edit_ex
1286
macro edit_ex
1286
{
1287
{
1287
popad          
1288
popad          
1288
ret
1289
ret
1289
}
1290
}
1290
macro debug
1291
macro debug
1291
{
1292
{
1292
        ;-----------  ®â« ¤ª 
1293
        ;-----------  ®â« ¤ª 
1293
        pushad
1294
        pushad
1294
;        mov     dword [ed_buffer.2],0
1295
;        mov     dword [ed_buffer.2],0
1295
;        mov     eax,edi
1296
;        mov     eax,edi
1296
        mov eax,dword [ed_buffer.2]
1297
        mov eax,dword [ed_buffer.2]
1297
        mov edi,ed_buffer.3
1298
        mov edi,ed_buffer.3
1298
        call .str
1299
        call .str
1299
        ;à¨á®¢ ­¨¥ ä®­ 
1300
        ;à¨á®¢ ­¨¥ ä®­ 
1300
        mov eax,13
1301
        mov eax,13
1301
        mov ebx,178*65536+70
1302
        mov ebx,178*65536+70
1302
        mov ecx,28*65536+10
1303
        mov ecx,28*65536+10
1303
        xor edx,edx
1304
        xor edx,edx
1304
        int 0x40
1305
        int 0x40
1305
        ;¢ë¢®¤ §­ ç¥­¨ï ­  íªà ­
1306
        ;¢ë¢®¤ §­ ç¥­¨ï ­  íªà ­
1306
        mov eax,4
1307
        mov eax,4
1307
        mov ebx,180*65536+30
1308
        mov ebx,180*65536+30
1308
        mov ecx,0x10DDBBCC
1309
        mov ecx,0x10DDBBCC
1309
        mov edx,ed_buffer.3
1310
        mov edx,ed_buffer.3
1310
        mov esi,8
1311
        mov esi,8
1311
        int 0x40
1312
        int 0x40
1312
        popad
1313
        popad
1313
        ;----------- ®â« ¤ª 
1314
        ;----------- ®â« ¤ª 
1314
}
1315
}
1315
macro   debug_func
1316
macro   debug_func
1316
{
1317
{
1317
.str:
1318
.str:
1318
        mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1319
        mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1319
         ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1320
         ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1320
        cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1321
        cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1321
        jb @f
1322
        jb @f
1322
        xor edx,edx  ;®ç¨áâ¨âì edx
1323
        xor edx,edx  ;®ç¨áâ¨âì edx
1323
        div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1324
        div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1324
        push edx     ;¯®«®¦¨âì ¢ á⥪
1325
        push edx     ;¯®«®¦¨âì ¢ á⥪
1325
        ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1326
        ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1326
        call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1327
        call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1327
        pop eax
1328
        pop eax
1328
        @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1329
        @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1329
        ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
1330
        ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
1330
        ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
1331
        ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
1331
        or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥ 
1332
        or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥ 
1332
        stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1333
        stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1333
 
1334
 
1334
        ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1335
        ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1335
}
1336
}
1336
 
-
 
1337
;;;;;;;;;;;;;;;
-
 
1338
;For LibGui
-
 
1339
;;;;;;;;;;;;;;;
-
 
1340
macro srt_ed_libgui
-
 
1341
{
-
 
1342
ed_width        equ [EditBox.ed_width]            ;è¨à¨­  ª®¬¯®­¥­â 
-
 
1343
ed_left         equ [EditBox.ed_left]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
-
 
1344
ed_top          equ [EditBox.ed_top]              ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
-
 
1345
ed_color        equ [EditBox.ed_color]            ;梥â ä®­  ª®¬¯®­¥­â 
-
 
1346
shift_color     equ [EditBox.shift_color]         ;=0x6a9480
-
 
1347
ed_focus_border_color   equ [EditBox.ed_focus_border_color]   ;梥â à ¬ª¨ ª®¬¯®­¥­â 
-
 
1348
ed_blur_border_color    equ [EditBox.ed_blur_border_color]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
-
 
1349
ed_text_color   equ [EditBox.ed_text_color]       ;梥â ⥪áâ 
-
 
1350
ed_max          equ [EditBox.ed_max]              ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
-
 
1351
ed_text         equ [EditBox.ed_text]             ;㪠§ â¥«ì ­  ¡ãä¥à
-
 
1352
ed_flags        equ [EditBox.ed_flags]            ;ä« £¨
-
 
1353
ed_size equ [EditBox.ed_size]                     ;ª®«-¢® ᨬ¢®«®¢
-
 
1354
ed_pos  equ [EditBox.ed_poz]                      ;¯®§¨æ¨ï ªãàá®à 
-
 
1355
ed_offset       equ [EditBox.ed_offset]           ;ᬥ饭¨¥
-
 
1356
cl_curs_x       equ [EditBox.cl_curs_x]           ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
-
 
1357
cl_curs_y       equ [EditBox.cl_curs_y]           ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
-
 
1358
ed_shift_pos    equ [EditBox.ed_shift_pos]        ;¯®«®¦¥­¨¥ ªãàá®à 
-
 
1359
ed_shift_pos_old equ [EditBox.ed_shift_pos_old]   ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
-
 
1360
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
1361
;Bit mask from editbox 
-
 
1362
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
1363
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë 
-
 
1364
ed_always_focus= 100000000000000b
-
 
1365
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
-
 
1366
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
-
 
1367
ed_shift_on_off=1111111111110111b
-
 
1368
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
-
 
1369
ed_shift_off=   1111111111111011b
-
 
1370
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
-
 
1371
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
-
 
1372
ed_shift_cl=    1111111111100011b
-
 
1373
ed_shift_mcl=   1111111111111011b
-
 
1374
ed_left_fl=               100000b
-
 
1375
ed_right_fl=    1111111111011111b
-
 
1376
ed_offset_fl=            1000000b
-
 
1377
ed_offset_cl=   1111111110111111b
-
 
1378
ed_insert=              10000000b
-
 
1379
ed_insert_cl=   1111111101111111b
-
 
1380
ed_mouse_on =          100000000b
-
 
1381
ed_mous_adn_b=         100011000b
-
 
1382
ed_mouse_on_off=1111111011111111b
-
 
1383
ed_height=24 ; ¢ëá®â 
-
 
1384
}
-
 
1385
 
1337
 
1386
ed_struc_size=76
1338
ed_struc_size=76
1387
struc  edit_box width,left,top,color,shift_color,focus_border_color,\
1339
struc  edit_box width,left,top,color,shift_color,focus_border_color,\
1388
       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
1340
       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
1389
{
1341
{
1390
.width dd width
1342
.width dd width
1391
.left dd left
1343
.left dd left
1392
.top dd top
1344
.top dd top
1393
.color dd color
1345
.color dd color
1394
.shift_color dd shift_color
1346
.shift_color dd shift_color
1395
.focus_border_color dd focus_border_color
1347
.focus_border_color dd focus_border_color
1396
.blur_border_color dd blur_border_color
1348
.blur_border_color dd blur_border_color
1397
.text_color dd text_color
1349
.text_color dd text_color
1398
.max dd max
1350
.max dd max
1399
.text dd text
1351
.text dd text
1400
.mouse_variable dd mouse_variable
1352
.mouse_variable dd mouse_variable
1401
.flags dd flags+0
1353
.flags dd flags+0
1402
.size dd size+0
1354
.size dd size+0
1403
.pos dd pos+0
1355
.pos dd pos+0
1404
.offset dd 0
1356
.offset dd 0
1405
.cl_curs_x dd 0
1357
.cl_curs_x dd 0
1406
.cl_curs_y dd 0
1358
.cl_curs_y dd 0
1407
.shift   dd 0
1359
.shift   dd 0
1408
.shift_old   dd 0
1360
.shift_old   dd 0
1409
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1361
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1410
;Bit mask from editbox 
1362
;Bit mask from editbox 
1411
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1363
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1412
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë 
1364
ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë 
1413
ed_always_focus= 100000000000000b
1365
ed_always_focus= 100000000000000b
1414
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
1366
ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
1415
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
1367
ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
1416
ed_shift_on_off=1111111111110111b
1368
ed_shift_on_off=1111111111110111b
1417
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
1369
ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
1418
ed_shift_off=   1111111111111011b
1370
ed_shift_off=   1111111111111011b
1419
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
1371
ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
1420
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
1372
ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
1421
ed_shift_cl=    1111111111100011b
1373
ed_shift_cl=    1111111111100011b
1422
ed_shift_mcl=   1111111111111011b
1374
ed_shift_mcl=   1111111111111011b
1423
ed_left_fl=               100000b
1375
ed_left_fl=               100000b
1424
ed_right_fl=    1111111111011111b
1376
ed_right_fl=    1111111111011111b
1425
ed_offset_fl=            1000000b
1377
ed_offset_fl=            1000000b
1426
ed_offset_cl=   1111111110111111b
1378
ed_offset_cl=   1111111110111111b
1427
ed_insert=              10000000b
1379
ed_insert=              10000000b
1428
ed_insert_cl=   1111111101111111b
1380
ed_insert_cl=   1111111101111111b
1429
ed_mouse_on =          100000000b
1381
ed_mouse_on =          100000000b
1430
ed_mous_adn_b=         100011000b
1382
ed_mous_adn_b=         100011000b
1431
ed_mouse_on_off=1111111011111111b
1383
ed_mouse_on_off=1111111011111111b
1432
ed_height=14 ; ¢ëá®â 
1384
ed_height=14 ; ¢ëá®â 
1433
 
1385
 
1434
}
1386
}