Subversion Repositories Kolibri OS

Rev

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

  1. ;Libray from Editbox
  2. ; SEE YOU File FAQ.txt and HISTORY. Good Like!
  3. ;;;;;;;;;;;;;;;;;;
  4.  
  5. format MS COFF
  6.  
  7. public EXPORTS
  8.  
  9. section '.flat' code readable align 16
  10. include 'macros.inc'
  11. include 'editbox.mac'    ;¬ ªà®á ª®â®àë© ¤®«¦¥­ ®¡«¥£ç¨âì ¦¨§­ì :) ᯥ樠«ì­® ¤«ï editbox
  12.  
  13. edit_box:
  14. ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
  15. ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
  16. ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
  17. ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
  18. shift_color     equ [edi+16]            ;=0x6a9480 ¤«ï ¯à¨¬¥à  ¢®§ì¥¬ ¦¥«¥­ë© 梥⠡®ªá 
  19. ed_focus_border_color   equ [edi+20]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
  20. ed_blur_border_color    equ [edi+24]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
  21. ed_text_color   equ [edi+28]            ;梥â ⥪áâ 
  22. ed_max          equ [edi+32]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
  23. ed_text         equ [edi+36]                    ;㪠§ â¥«ì ­  ¡ãä¥à
  24. ed_flags        equ [edi+40]            ;ä« £¨
  25. ed_size equ [edi+44]                    ;ª®«-¢® ᨬ¢®«®¢
  26. ed_pos  equ [edi+48]                    ;¯®§¨æ¨ï ªãàá®à 
  27. ed_offset       equ [edi+52]            ;ᬥ饭¨¥
  28. cl_curs_x       equ [edi+56]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
  29. cl_curs_y       equ [edi+60]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
  30. ed_shift_pos    equ [edi+64]            ;¯®«®¦¥­¨¥ ªãàá®à 
  31. ed_shift_pos_old equ [edi+68]           ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
  32. .draw:
  33.         pusha
  34.         mov     eax,9
  35.         push    procinfo
  36.         pop     ebx
  37.         or      ecx,-1
  38.         mcall
  39. ;--- à¨á㥬 à ¬ªã ---
  40.         mov     edi,dword [esp+36]
  41.         call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
  42. .draw_bg_cursor_text:
  43. ;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
  44.         call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
  45. ;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
  46.         call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
  47. ;---- à¨á㥬 ¢ë¤¥«¥­¨¥, ¯® shift ¥á«¨ ¥áâì
  48.         call    .draw_shift
  49. .draw_cursor_text:
  50. ;--- à¨á㥬 ªãàá®à ---
  51.         ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
  52.         test    word ed_flags,ed_focus
  53.         je     @f
  54.         call    .draw_cursor
  55. @@:
  56.         call    .draw_text
  57. ;        ret
  58. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  59. ;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢
  60. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  61. .editbox_exit:
  62.         popa
  63.         ret 4
  64.  
  65. ;==========================================================
  66. ;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
  67. ;==========================================================
  68. edit_box_key:
  69. pusha
  70.         mov     edi,dword [esp+36]
  71.         test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  72.         je      edit_box.editbox_exit
  73.         test    word ed_flags,ed_mouse_on
  74.         jne     edit_box.editbox_exit
  75.  
  76. ;à®¢¥àª  ­ ¦ â shift ?
  77.         call    edit_box_key.check_shift
  78. ;----------------------------------------------------------
  79. ;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
  80. ;----------------------------------------------------------
  81. use_key_process  backspase,delete,left,right,home,end,insert
  82. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  83. ;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
  84. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  85. use_key_no_process   up,down,esc
  86. ;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
  87. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  88. ;à®¢¥àª  ãáâ ­®¢«¥­ «¨ ä« £ ¯à¨ ª®â®à®¬ ­ã¦­® ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ ­ã¦­®¬ ¡®ªá¥ ¥á«¨ â ª®©­¥®¡å®¤¨¬®á⨠­¥â ­ã¦­® § ª®¬¥­â¨à®¢ âì ¬ ªà®á
  89. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  90. use_key_figures_only
  91. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  92. ;¯à®¢¥àª  ­  shift ¡ë« «¨ ­ ¦ â
  93. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  94. are_key_shift_press
  95. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  96. ; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥ + ¤ «ì­¥©è ï ®¡à ¡®âª 
  97. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  98. are_key_cur_end
  99. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  100. ;Ž¡à ¡®âª  ª« ¢¨è insert,delete.backspase,home,end,left,right
  101. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  102. use_work_key
  103.  
  104. ;==========================================================
  105. ;=== ®¡à ¡®âª  ¬ëè¨ =======================================
  106. ;==========================================================
  107. ;save for stdcall ebx,esi,edi,ebp
  108. edit_box_mouse:
  109.         pop     eax     ;opint to back
  110.         pop     edx     ;scr_w
  111.         pop     ecx     ;ebp     ;scr_h
  112.         push    eax
  113.  
  114. ;        pop     eax
  115. ;        pop     edx     ;scr_w
  116. ;        pop     ecx     ;scr_h
  117. ;        push    eax     ;pointer to back
  118. pusha
  119.         mov     ebp,ecx
  120.  
  121.         mov     edi,dword [esp+36]
  122. ;debug
  123. ;----------------------------------------------------------
  124. ;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
  125. ;----------------------------------------------------------
  126.         mcall   37,2
  127. ;----------------------------------------------------------
  128. ;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
  129. ;----------------------------------------------------------
  130.         test    eax,1
  131.         jnz     edit_box_mouse.mouse_left_button
  132.         and     word ed_flags,ed_mouse_on_off
  133.         xor     ebx,ebx
  134.         mov     dword [mouse_flag],ebx
  135.         jmp     edit_box.editbox_exit
  136. .mouse_left_button:
  137. ;----------------------------------------------------------
  138. ;--- ¡«®ª¨à®¢ª  ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ­¨¨ ­  ­¨å ªãàá®à 
  139. ;----------------------------------------------------------
  140.         mov     eax,dword [mouse_flag]
  141.         test    eax,eax
  142.         jz      @f
  143.         cmp     eax,edi
  144.         je      @f
  145.         jmp     edit_box_mouse._blur
  146. ;----------------------------------------------------------
  147. ;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
  148. ;----------------------------------------------------------
  149. @@:     mcall   37,0
  150. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  151. ;”ã­ªæ¨ï ®¡à ¡®âª¨  ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
  152. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  153. use_work_mouse
  154. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  155. ;Ž¡é¨¥ ä㭪樨 ®¡à ¡®âª¨
  156. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  157. use_general_func
  158. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  159. ;”㭪樨 ¤«ï à ¡®âë á key
  160. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  161. use_key_func
  162. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  163. ;”㭪樨 ¤«ï à ¡®âë á mouse
  164. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  165. use_mouse_func ;scr_w
  166. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  167. ;Bit mask from editbox
  168. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  169. ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë
  170. ed_always_focus= 100000000000000b
  171. ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
  172. ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
  173. ed_shift_on_off=1111111111110111b
  174. ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
  175. ed_shift_off=   1111111111111011b
  176. ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
  177. ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
  178. ed_shift_cl=    1111111111100011b
  179. ed_shift_mcl=   1111111111111011b
  180. ed_left_fl=               100000b
  181. ed_right_fl=    1111111111011111b
  182. ed_offset_fl=            1000000b
  183. ed_offset_cl=   1111111110111111b
  184. ed_insert=              10000000b
  185. ed_insert_cl=   1111111101111111b
  186. ed_mouse_on =          100000000b
  187. ed_mous_adn_b=         100011000b
  188. ed_mouse_on_off=1111111011111111b
  189. ed_height=14 ; ¢ëá®â 
  190.  
  191. ;----------------------------------------------------
  192. ;CheckBox
  193. ;----------------------------------------------------
  194. check_box_draw:
  195. ;ch_struc_size=24
  196. ch_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
  197. ch_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
  198. ch_text_margin equ [edi+4]      ;=4 à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
  199. ch_size equ [edi+8]             ;12 à §¬¥à ª¢ ¤à â  祪 ¡®ªá 
  200. ch_color equ [edi+12]
  201. ch_border_color equ [edi+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
  202. ch_text_color equ   [edi+20];[edi+4]  ;梥â ⥪áâ 
  203. ch_text_ptr equ [edi+24]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨
  204. ch_text_length equ [edi+28]
  205. ch_flags equ [edi+32]       ;ä« £¨
  206.  
  207.        pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
  208.        mov     edi,dword [esp+36]
  209.        mov eax,13
  210.        movzx ebx,word ch_left
  211.        shl ebx,16
  212.        add ebx,ch_size
  213.        mov ecx,ch_top
  214.        shl ecx,16
  215.        add ecx,dword ch_size
  216.        mov edx,dword ch_border_color
  217.        mcall ;à¨á㥬 à ¬ªã
  218.  
  219.        mov edx,dword ch_color
  220.        add ebx,1 shl 16 - 2
  221.        add ecx,1 shl 16 - 2
  222.        mcall ;§ ªà è¨¢ ¥¬ ¢­ãâ७­®á⨠祪¡®ªá 
  223.  
  224.        test dword ch_flags,2  ;¤®áâ âì §­ ç¥­¨¥ ¡¨â  ¨§ ¯¥à¥¬¥­­®© ¨ ¯®¬¥áâ¨âì ¢  ä« £ CF
  225.        jz   @f                ;¢ ¥á«¨ CF=1, â® ¢ë¯®«­¨¬ á«¥¤ãîéãî ¯à®æ¥¤ãàã ¨­ ç¥ ¯¥à¥©â¨ ­  ­¨¦­îî @@
  226.        call check_box_draw_ch  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  227. @@:
  228. ;----------------------------
  229. ;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
  230. ;----------------------------
  231.         movzx ebx,word ch_left        ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
  232.         add   ebx,dword ch_size
  233.         add   ebx,dword ch_text_margin;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
  234.         shl   ebx,16                ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  235.         mov   bx,word ch_top        ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
  236.         add   ebx,ch_size
  237.         mov   ecx,dword ch_text_color        ;§ £à㧨¬ 梥⠭ ¤¯¨á¨ + flags
  238.         sub   ebx,7        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
  239.        
  240.         mov   edx,dword ch_text_ptr                ;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
  241.         mov   esi,dword ch_text_length
  242.         ;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
  243.         mov   eax,4
  244.         mcall                  ;‚뢮¤
  245. popa                              ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
  246. ret 4                             ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
  247.  
  248. check_box_clear_ch:                        ;®ç¨á⪠ 祪 ¡®ªá 
  249.         mov   edx,dword ch_color   ;梥⠢­ãâਠ祪 ¡®ªá 
  250.         jmp   @f             ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
  251.  
  252. check_box_draw_ch:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  253.         mov   edx,dword ch_border_color        ;§ £à㧨âì 梥â
  254. @@:
  255.         movzx ebx,word ch_left  ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
  256.         mov   eax,dword ch_size
  257.         push  ax
  258.         shr   eax,2
  259.         add   ebx,eax          ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
  260.         shl   ebx,16            ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  261.         pop   bx
  262.         shr   bx,1              ;§ £à㧨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /2)
  263.         mov   bp,bx             ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
  264.  
  265.         movzx ecx,word ch_top ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
  266.         mov   eax,dword ch_size
  267.         shr   eax,2
  268.         add   ecx,eax         ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /4)
  269.         shl   ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  270.         mov   cx,bp           ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
  271.         mov   eax,13          ;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
  272.         mcall            ;¢ë¢®¤
  273. ret                                ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
  274. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  275. ;Ž¡à ¡®â稪 mouse
  276. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  277. check_box_mouse:      ;®¡à ¡®âª  ¬ëè¨
  278. pusha
  279.         mov     edi,dword [esp+36]
  280.         mov     eax,37           ;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã ­ á çâ® - ­¨âì ­ ¦ â®
  281.         mov     ebx,2            ;¢­¥á⨠¢ ॣ¨áâà §­ ç¥­¨¥ 2
  282.         mcall             ;¯à®¢¥àª  ­¥ ­ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª­®¯ªã ¬ë誨
  283.         test    eax,eax   ;¯à®¢¥àª  ¥á«¨ ã ­ á ¢ eax=0, â® ãáâ ­®¢¨¬ ä« £ ¨ ¢ë©¤¥¬
  284.         jnz     @f         ;¯¥à¥©â¨ ­  ­¨¦­îî ¬¥âªã @@
  285.         btr     dword ch_flags,2  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥.
  286.         jmp     check_box_mouse_end
  287.        
  288. @@:
  289.         bts  dword ch_flags,2   ;¯à®¢¥àª  ä« £  â.¥. ¯¥à¥­®á ¢ cf §­ ç¥­¨¥ ¡¨â  ¨ ãáâ ­®¢ª  ¡¨â  ¢ á®áâ®ï­¨¥ ¢ª«î祭®
  290.         jc   check_box_mouse_end         ;¥á«¨ CF=1 â® ¯¥à¥©â¨  ¢ ª®­¥æ â.¥. íâ® ¢ë室
  291.         mov  esi,dword ch_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
  292.         ;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
  293.         ;lea esi,[eax*2+eax]
  294.         ;shl eax,1
  295.         imul esi,6             ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
  296.         add  esi,dword ch_text_margin ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
  297.  
  298.         mov  eax,37             ;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨
  299.         mov  ebx,1              ;¤®¡ ¢¨âì 1
  300.         mcall               ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­ 
  301.        
  302.         movzx ebx,word ch_top  ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
  303.         cmp   ax,bx              ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
  304.         jl   check_box_mouse_end          ;SF <> OF ¥á«¨ ¬¥­ìè¥
  305.         add   ebx,dword ch_size        ;¤®¡ ¢¨âì à §¬¥à
  306.         cmp   ax,bx              ;áà ¢­¨âì
  307.         jg   check_box_mouse_end          ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥
  308.              
  309.         shr   eax,16              ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
  310.         movzx ebx,word ch_left  ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
  311.         cmp   ax,bx            ;áà ¢­¨âì ॣ¨áâàë
  312.         jl   check_box_mouse_end        ;¥á«¨ ¬¥­ìè¥
  313.         add   ebx,dword ch_size      ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
  314.         add   ebx,esi          ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
  315.         cmp   ax,bx            ;áâà ¢­¨âì ॣ¨áâàë
  316.         jg   check_box_mouse_end        ;¥á«¨ ¡®«ìè¥
  317.  
  318.         bts  dword ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  1.
  319.         jc   @f                ;CF=1 â® ¯¥à¥©â¨ ­  ­¨¦­îî @@
  320.        
  321.         call check_box_draw_ch        ;®â®¡à §¨âì ¢ª«î祭­ë© 祪 ¡®ªá
  322. ;        mov   dword [esp+24],1 ;¤ «ì­¥©è ï ¯à®¢¥àª  祪 ¡®ªá®¢ ¡¥á¬ëá«¥­ , ¯® í⮬㠢 á⥪, £¤¥ à á¯®« £ ¥âáï ecx ¯®¬¥áâ¨â¬ 0
  323.         jmp  check_box_mouse_end       ;¢ë©â¨
  324. @@:
  325.         btr   word ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥.
  326.         call check_box_clear_ch         ;¢ëª«îç¨âì 祪 ¡®ªá â.¥. ­  ¬¥á⥠§ ªà è¥­­®£® ¯àאַ㣮«ì­¨ª  ®â®¡à §¨âì 梥â ä®­ .
  327. check_box_mouse_end:
  328. popa                                ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
  329. ret  4                              ;¢ë©â¨
  330.  
  331. ;--------------------------------------------------
  332. ;radiobutton Group
  333. ;--------------------------------------------------
  334. option_box_draw_box:
  335. option_group equ [edi]
  336. op_left equ [edi+4]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
  337. op_top equ [edi+6]     ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
  338. op_text_margin equ [edi+8]      ;=4 à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
  339. op_size equ [edi+12]             ;12 à §¬¥à ª¢ ¤à â  祪 ¡®ªá 
  340. op_color equ [edi+16]
  341. op_border_color equ [edi+20] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
  342. op_text_color equ   [edi+24];[edi+4]  ;梥â ⥪áâ 
  343. op_text_ptr equ [edi+28]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨
  344. op_text_length equ [edi+32]
  345. op_flags equ [edi+36]       ;ä« £¨
  346.  
  347.         pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
  348.  
  349.         movzx ebx,word op_left
  350.         shl ebx,16
  351.         add ebx,dword op_size
  352.         movzx ecx,word op_top
  353.         shl ecx,16
  354.         add ecx,dword op_size
  355.         mov edx,dword op_border_color
  356.         mov eax,13
  357.         mcall ;à¨á㥬 à ¬ªã
  358.  
  359.         mov edx,dword op_color
  360.         add ebx,1 shl 16 - 2
  361.         add ecx,1 shl 16 - 2
  362.         mcall ;§ ªà è¨¢ ¥¬ ¢­ãâ७­®á⨠祪¡®ªá 
  363.  
  364. ;        mov     eax,dword option_group
  365. ;        mov     dword eax,[eax]
  366. ;        cmp     eax,edi
  367. ;        jne     @f
  368. ;        call    option_box_draw_op  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  369.  
  370.  
  371. ;----------------------------
  372. ;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
  373. ;----------------------------
  374. @@:     movzx ebx,word op_left        ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
  375.         add   ebx,dword op_size
  376.         add   ebx,dword op_text_margin;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
  377.         shl   ebx,16                ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  378.         mov   bx,word op_top        ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
  379.         add   ebx,op_size
  380.         mov   ecx,dword op_text_color        ;§ £à㧨¬ 梥⠭ ¤¯¨á¨ + flags
  381.         sub   ebx,7        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
  382.        
  383.         mov   edx,dword op_text_ptr                ;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
  384.         mov   esi,dword op_text_length
  385.         ;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
  386.         mov   eax,4
  387.         mcall                  ;‚뢮¤
  388. popa                           ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
  389. ret                            ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
  390.  
  391. option_box_clear_op:                      ;®ç¨á⪠ 祪 ¡®ªá 
  392.         mov     edx,dword op_color    ;梥⠢­ãâਠ祪 ¡®ªá 
  393.         jmp     @f              ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
  394.  
  395.  
  396. option_box_draw_op:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  397.         mov   edx,dword op_border_color        ;§ £à㧨âì 梥â
  398. @@:
  399.         movzx ebx,word op_left  ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
  400.         mov   eax,dword op_size
  401.         push  ax
  402.         shr   eax,2
  403.         add   ebx,eax          ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
  404.         shl   ebx,16            ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  405.         pop   bx
  406.         shr   bx,1              ;§ £à㧨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /2)
  407.         mov   bp,bx             ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
  408.  
  409.         movzx ecx,word op_top ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
  410.         mov   eax,dword op_size
  411.         shr   eax,2
  412.         add   ecx,eax         ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /4)
  413.         shl   ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  414.         mov   cx,bp           ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
  415.         mov   eax,13          ;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
  416.         mcall            ;¢ë¢®¤
  417. ret                                ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
  418. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  419. ;Ž¡à ¡®â稪 mouse
  420. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  421. option_box_mouse_op:                 ;®¡à ¡®âª  ¬ëè¨
  422. pusha
  423.         mov     eax,37          ;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã ­ á çâ® - ­¨âì ­ ¦ â®
  424.         mov     ebx,2           ;¢­¥á⨠¢ ॣ¨áâà §­ ç¥­¨¥ 2
  425.         mcall           ;¯à®¢¥àª  ­¥ ­ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª­®¯ªã ¬ë誨
  426.         test    eax,eax    ;¯à®¢¥àª  ¥á«¨ ã ­ á ¢ eax=0, â® ãáâ ­®¢¨¬ ä« £ ¨ ¢ë©¤¥¬
  427.         jnz     @f         ;¯¥à¥©â¨ ­  ­¨¦­îî ¬¥âªã @@
  428.  
  429.         jmp     option_box_mouse_end
  430.                            ;¥á«¨ ­¨ç¥£® ­¥ ¯à®¨§®è«®, â® ¢®ááâ ­®¢¨¬ §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
  431.                            ;¢ë室
  432. @@:
  433.         mov     esi,dword op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
  434.         ;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
  435.         ;lea    esi,[eax*2+eax]
  436.         ;shl    eax,1
  437.         imul    esi,6               ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
  438.         xor     ebx,ebx
  439.         add     esi,dword op_text_margin   ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
  440.        
  441.         mov     eax,37          ;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨
  442.         inc     ebx             ;¤®¡ ¢¨âì 1
  443.         mcall                ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­ 
  444.  
  445.         movzx   ebx,word op_top           ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
  446.         cmp     ax,bx               ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
  447.         jl      option_box_mouse_end          ;SF <> OF ¥á«¨ ¬¥­ìè¥
  448.         add     ebx,dword op_size          ;¤®¡ ¢¨âì à §¬¥à
  449.         cmp     ax,bx               ;áà ¢­¨âì
  450.         jg      option_box_mouse_end          ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥
  451.        
  452.         shr     eax,16              ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
  453.         movzx   ebx,word op_left          ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
  454.         cmp     ax,bx                ;áà ¢­¨âì ॣ¨áâàë
  455.         jl      option_box_mouse_end           ;¥á«¨ ¬¥­ìè¥
  456.         add     ebx,dword op_size          ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
  457.         add     ebx,esi              ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
  458.         cmp     ax,bx                ;áâà ¢­¨âì ॣ¨áâàë
  459.         jg      option_box_mouse_end           ;¥á«¨ ¡®«ìè¥
  460.         mov     eax,dword option_group
  461.         mov     [eax],edi
  462.  
  463. option_box_mouse_end:
  464. popa                              ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
  465. ret                               ;¢ë©â¨
  466.  
  467. option_box_draw:
  468.         pusha
  469.  
  470.         mov     eax,dword [esp+36]
  471. @@:     mov     edi,dword [eax]
  472.         test    edi,edi
  473.         je      option_check
  474.         call    option_box_draw_box
  475.         add     eax,4
  476.         jmp    @b
  477.  
  478. option_check:
  479.         mov     eax,dword [esp+36]
  480. @@:     mov     edi,dword [eax]
  481.         test    edi,edi
  482.         je      @f
  483.        
  484.         mov     ebx,dword [edi]
  485.         mov     ebx,dword [ebx]
  486.         cmp     edi,ebx
  487.         jne     .clear_op
  488.        
  489.         pusha
  490.         call    option_box_draw_op
  491.         popa
  492.         add     eax,4
  493.         jmp     @b
  494.  
  495. .clear_op:
  496.         pusha
  497.         call    option_box_clear_op
  498.         popa
  499.         add     eax,4
  500.         jmp     @b
  501.  
  502.  
  503. @@:     popa
  504.         ret 4
  505.         ; exit ¢®®¡é¥ :)
  506.  
  507.  
  508. option_box_mouse:
  509.         pusha
  510.  
  511.         mov     eax,dword [esp+36]
  512. @@:     mov     edi,dword [eax]
  513.         test    edi,edi
  514.         je      option_check
  515.         call    option_box_mouse_op
  516.         add     eax,4
  517.         jmp    @b
  518.  
  519.  
  520. align 16
  521. EXPORTS:
  522.  
  523.         dd      sz_edit_box,            edit_box
  524.         dd      sz_edit_box_key,        edit_box_key
  525.         dd      sz_edit_box_mouse,      edit_box_mouse
  526.         dd      szVersion_ed,           0x00000001
  527.         dd      sz_check_box_draw,      check_box_draw
  528.         dd      sz_check_box_mouse,     check_box_mouse
  529.         dd      szVersion_ch,           0x00000001
  530.         dd      sz_option_box_draw,     option_box_draw
  531.         dd      sz_option_box_mouse,    option_box_mouse
  532.         dd      szVersion_op,           0x00000001
  533.         dd      0,0
  534.  
  535. sz_edit_box            db 'edit_box',0
  536. sz_edit_box_key        db 'edit_box_key',0
  537. sz_edit_box_mouse      db 'edit_box_mouse',0
  538. szVersion_ed           db 'version_ed',0
  539. sz_check_box_draw      db 'check_box_draw',0
  540. sz_check_box_mouse     db 'check_box_mouse',0
  541. szVersion_ch           db 'version_ch',0
  542. sz_option_box_draw     db 'option_box_draw',0
  543. sz_option_box_mouse    db 'option_box_mouse',0
  544. szVersion_op           db 'version_op',0
  545.  
  546. ;;;;;;;;;;;
  547. ;;Data
  548. ;;;;;;;;;;;
  549. align 16
  550. mouse_flag dd 0x0
  551. procinfo process_information