Subversion Repositories Kolibri OS

Rev

Rev 1228 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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