Subversion Repositories Kolibri OS

Rev

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

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