Subversion Repositories Kolibri OS

Rev

Rev 1214 | Blame | Last modification | View Log | Download | RSS feed

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