Subversion Repositories Kolibri OS

Rev

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

  1. ;ä䥪⨢­®¥ ¯à®£à ¬¬¨à®¢ ­¨¥ ¢ KOLIBRI
  2. ;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â CheckBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32)
  3. ;Ž¯â¨¬¨§¨à®¢ ­ ¢ë¢®¤ áâப¨ ­ ¤¯¨á¨ ¤«ï CheckBox'a + ⥯¥àì, ¯à¨ ¯à®¢¥àª¥ ­¥ ¯à®¨á室¨â ¯®¤áç¥â ª®«-¢  ᨬ¢®«®¢ ¢ áâப¥
  4. ;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤ - ®âª § «áï ®â á®åà ­¥­¨ï ॣ¨áâ஢ ¢ á⥪¥.
  5. ;17.07.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï, ¯à¨ ãáâ ­®¢ª¥ 祪 ¡®ªá  ¢ ¯®«®¦¥­¨¥ ¢ª«î祭® ¯®á«¥¤ãî騥 祪 ¡®ªáë ¢ â®â ¦¥ ¯à®¬¥¦ã⮪ ¢à¥¬¥­¨ ­¥ ¯à®¢¥àïîâáï
  6. ;<Lrz>  - ’¥¯«®¢ €«¥ªá¥©  www.test-kolibri.narod.ru
  7.  
  8. macro use_check_box
  9. {
  10. ch_text_margin=4     ;à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
  11. ch_size=10           ;à §¬¥à ª¢ ¤à â  祪 ¡®ªá 
  12. ch_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
  13. ch_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
  14. ch_color equ [edi+4] ;梥⠢­ãâਠcheckbox
  15. ch_border_color equ [edi+8] ;梥â à ¬ª¨ checkbox
  16. ch_text_color equ [edi+12]  ;梥â ⥪áâ 
  17. ch_text_ptr equ [edi+16]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨
  18. ch_text_length equ [edi+20] ;¤«¨­  ­ ¤¯¨á¨ (2^64 â ª®© ¤«¨­ë ¬®¦¥â ¡ëâì ⥪áâ)
  19. ch_flags equ [edi+24]       ;ä« £¨
  20. check_box:
  21. .draw:
  22. pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
  23.         mov     eax,38          ;à¨á®¢ ­¨¥ «¨­¨¨
  24.         mov     bx,ch_left      ;¯®«®¦¥­¨¥ ¯® å
  25.         ;mov     cx,bx           ;á®åà ­¨¬ ¢ ॣ¨áâॠcx §­ ç¥­¨¥ bx
  26.         push   bx  ;3 - ¬¨ªà®®¯¥à æ¨¨  ¨á¯®«ì§ãï á⥪ ¬®¦­® ¢ë¨£à âì ¢ à §¬¥à¥, ¨á¯®«ì§ãï ॣ¨áâàë - ¢ ᪮à®áâ¨
  27.         shl     ebx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  28.         pop    bx  ;2 - ¬¨ªà®®¯¥à æ¨¨  ­  ¤ ­­ë© ¬®¬¥­â áä®à¬¨à®¢ ­  [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]
  29.         ;mov     bx,cx           ;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ bx
  30.         mov     cx,ch_top       ;§ £à㧨¬ ¢ cx §­ ç¥­¨¥ y
  31.         mov     si,cx           ;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì si
  32.         ;push   cx
  33.         shl     ecx,16          ; ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)      mov     cx,si           ;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
  34.         mov     cx,si           ;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
  35.         ;pop    cx      ;[ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]
  36.         ;push   cx
  37.         add     cx,ch_size ;[ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]*65536 + [ª®®à¤¨­ â  ª®­æ  ¯® ®á¨ y]
  38.         mov     edx,ch_border_color ;–¢¥â «¨­¨¨
  39.         int     0x40   ;à¨á®¢ ­¨¥ ¢¥à⨪ «ì­®© «¥¢®© «¨­¨¨ ª¢ ¤à â  (¯àאַ㣮«ì­¨ª )
  40. ;
  41.         mov     bp,bx   ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
  42.         ;push   bx   ;¢â®«ª­ãâì ¢ bx [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ å]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]
  43.         add     bx,ch_size      ;[ª®®à¤¨­ â  ­ ç «  + ¤«¨­  áâ®à®­ë ¯® ®á¨ å]
  44.         ror     ebx,16          ;[ª®®à¤¨­ â  ­ ç «  + ¤¨­  áâ®à®­ë ¯® ®á¨ å]*65536
  45.         add     bx,ch_size      ;[ª®®à¤¨­ â  ­ ç « +¤«¨­  áâ®à®­ë ¯® ®á¨ å]*65536 + [ª®®à¤¨­ â  ­ ç « +¤«¨­  áâ®à®­ë ¯® ®á¨ x]
  46.         int     0x40
  47.         mov     bx,bp           ;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  bx
  48.         ;pop    bx
  49.         mov     cx,si           ;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì
  50.         ;pop    cx
  51.         int     0x40
  52.         add     cx,ch_size      ;¤®¡ ¢¨¬ à §¬¥à áâ®à®­ë
  53.         mov     si,cx           ;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì si
  54.         ;push   cx
  55.         shl     ecx,16
  56.         mov     cx,si
  57.         ;pop    cx
  58.         int     0x40            ;­ à¨á®¢ «¨ ¯àאַ㣮«ì­¨ª
  59.  
  60.         mov     eax,13          ;§ ªà è¨¢ ¥¬ ¥£®. ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯®«®áã
  61.         mov     bx,ch_left      ;§ £à㧨âì ¢ bx, ¯®«®¦¥­¨¥ ¯® å
  62.         add     bx,1            ;ᤢ¨­¥¬ ­  1 â.¥. ¯à¨¡ ¢¨¬ 1 ¨­ ç¥ § âà¥âáï à ¬ª 
  63.         shl     ebx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  64.         mov     bx,ch_size      ;¯à¨¡ ¢¨¬ ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
  65.         sub     bx,1            ;¢ëç⥬ 1 â.ª. ¨­ ç¥ § âà¥âáï à ¬ª 
  66.         mov     bp,bx           ; á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
  67.         ;push   bx
  68.         mov     cx,ch_top       ;§ £à㧨¬ ª®®à¤¨­ âë ¯® y
  69.         add     cx,1            ;ᤢ¨­¥¬ ­  1 â.¥. ¯à¨¡ ¢¨¬ 1 ¨­ ç¥ § âà¥âáï à ¬ª 
  70.         shl     ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  71.         mov     cx,bp           ;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
  72.         ;pop    cx
  73.         mov     edx,ch_color    ;§ £à㧨¬ 梥⠯®«®áë
  74.         int     0x40            ;§ ªà á¨«¨
  75.         bt      dword ch_flags,1  ;¤®áâ âì §­ ç¥­¨¥ ¡¨â  ¨§ ¯¥à¥¬¥­­®© ¨ ¯®¬¥áâ¨âì ¢  ä« £ CF
  76.         jnc     @f              ;¢ ¥á«¨ CF=1, â® ¢ë¯®«­¨¬ á«¥¤ãîéãî ¯à®æ¥¤ãàã ¨­ ç¥ ¯¥à¥©â¨ ­  ­¨¦­îî @@
  77.         call    .draw_ch  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  78. @@:
  79. ;----------------------------
  80. ;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
  81. ;----------------------------
  82.         mov     bx,ch_left      ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
  83.         add     bx,(ch_size+ch_text_margin) ;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
  84.         shl     ebx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  85.         mov     bx,ch_top       ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
  86.         add     bx,(ch_size-9+2)        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
  87.         mov     ecx,ch_text_color       ;§ £à㧨¬ 梥⠭ ¤¯¨á¨
  88.  
  89.         mov     edx,ch_text_ptr         ;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
  90.         mov     esi,ch_text_length      ;‡ £à㧨¬ ¤«¨­ã ­ ¤¯¨á¨ ¢ esi
  91.         xor     eax,eax                 ;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
  92.         add     eax,4
  93.         int     0x40            ;‚뢮¤
  94. popa                            ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
  95. ret                             ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
  96.  
  97. .clear_ch:                      ;®ç¨á⪠ 祪 ¡®ªá 
  98.         mov     edx,ch_color    ;梥⠢­ãâਠ祪 ¡®ªá 
  99.         jmp     @f              ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
  100.  
  101. .draw_ch:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  102.         mov     edx,ch_border_color     ;§ £à㧨âì 梥â
  103. @@:
  104.         mov     bx,ch_left      ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
  105.         add     bx,(ch_size/3)  ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
  106.         shl     ebx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  107.         mov     bx,(ch_size/2)  ;§ £à㧨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /2)
  108.         mov     bp,bx           ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
  109.         ;push   bx
  110.         mov     cx,ch_top       ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
  111.         add     cx,(ch_size/3)  ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
  112.         shl     ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  113.         mov     cx,bp           ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
  114.         ;pop    cx
  115.         mov     eax,13          ;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
  116.         int     0x40            ;¢ë¢®¤
  117. ret                             ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
  118.  
  119. .mouse:                 ;®¡à ¡®âª  ¬ëè¨
  120. pusha
  121.         mov     eax,37          ;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã ­ á çâ® - ­¨âì ­ ¦ â®
  122.         xor     ebx,ebx         ;®¡­ã«¨âì ॣ¨áâà ebx (¨§¬¥­ï¥â ä« £¨)
  123.         add     ebx,2           ;¢­¥á⨠¢ ॣ¨áâà §­ ç¥­¨¥ 2
  124.         int     0x40            ;¯à®¢¥àª  ­¥ ­ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª­®¯ªã ¬ë誨
  125.         test    eax,eax    ;¯à®¢¥àª  ¥á«¨ ã ­ á ¢ eax=0, â® ãáâ ­®¢¨¬ ä« £ ¨ ¢ë©¤¥¬
  126.         jnz     @f         ;¯¥à¥©â¨ ­  ­¨¦­îî ¬¥âªã @@
  127.         btr     dword ch_flags,2  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥.
  128.         popa                    ;¥á«¨ ­¨ç¥£® ­¥ ¯à®¨§®è«®, â® ¢®ááâ ­®¢¨¬ §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
  129.         ret                     ;¢ë室
  130. @@:
  131.         bts     dword ch_flags,2   ;¯à®¢¥àª  ä« £  â.¥. ¯¥à¥­®á ¢ cf §­ ç¥­¨¥ ¡¨â  ¨ ãáâ ­®¢ª  ¡¨â  ¢ á®áâ®ï­¨¥ ¢ª«î祭®
  132.         jc      .mouse_end         ;¥á«¨ CF=1 â® ¯¥à¥©â¨  ¢ ª®­¥æ â.¥. íâ® ¢ë室
  133.         mov     esi,ch_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
  134.         ;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
  135.         ;lea    esi,[eax*2+eax]
  136.         ;shl    eax,1
  137.         imul    esi,6               ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
  138.         add     esi,ch_text_margin   ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
  139.  
  140.         mov     eax,37          ;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨
  141.         xor     ebx,ebx         ;®¡­ã«¨âì ॣ¨áâà
  142.         add     ebx,1           ;¤®¡ ¢¨âì 1
  143.         int     0x40                ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­ 
  144.  
  145.         mov     bx,ch_top           ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
  146.         cmp     ax,bx               ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
  147.         jl      .mouse_end          ;SF <> OF ¥á«¨ ¬¥­ìè¥
  148.         add     bx,ch_size          ;¤®¡ ¢¨âì à §¬¥à
  149.         cmp     ax,bx               ;áà ¢­¨âì
  150.         jg      .mouse_end          ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥
  151.  
  152.         shr     eax,16              ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
  153.         mov     bx,ch_left          ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
  154.         cmp     ax,bx                ;áà ¢­¨âì ॣ¨áâàë
  155.         jl      .mouse_end           ;¥á«¨ ¬¥­ìè¥
  156.         add     bx,ch_size           ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
  157.         add     bx,si               ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
  158.         cmp     ax,bx                ;áâà ¢­¨âì ॣ¨áâàë
  159.         jg      .mouse_end           ;¥á«¨ ¡®«ìè¥
  160.  
  161.         bts     dword ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  1.
  162.         jc      @f                ;CF=1 â® ¯¥à¥©â¨ ­  ­¨¦­îî @@
  163.  
  164.         call    .draw_ch          ;®â®¡à §¨âì ¢ª«î祭­ë© 祪 ¡®ªá
  165.         mov     dword [esp+24],1  ;¤ «ì­¥©è ï ¯à®¢¥àª  祪 ¡®ªá®¢ ¡¥á¬ëá«¥­ , ¯® í⮬㠢 á⥪, £¤¥ à á¯®« £ ¥âáï ecx ¯®¬¥áâ¨â¬ 0
  166.         jmp     .mouse_end        ;¢ë©â¨
  167. @@:
  168.         btr     dword ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥.
  169.         call    .clear_ch         ;¢ëª«îç¨âì 祪 ¡®ªá â.¥. ­  ¬¥á⥠§ ªà è¥­­®£® ¯àאַ㣮«ì­¨ª  ®â®¡à §¨âì 梥â ä®­ .
  170. .mouse_end:
  171. popa                              ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
  172. ret                               ;¢ë©â¨
  173. }
  174.  
  175. struc check_box left,top,color,border_color,text_color,text,text_length,flags
  176. {       ;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
  177. .left: dw left  ;+0     ;¯®«®¦¥­¨¥ ¯® å
  178. .top: dw top    ;+2     ;¯®«®¦¥­¨¥ ¯® ã
  179. .color: dd color ;+4    ;梥⠢­ãâਠ祪 ¡®ªá 
  180. .border_color: dd border_color ;+8      æ¢¥â à ¬ª¨
  181. .text_color: dd text_color     ;+12     梥â ⥪áâ  ­ ¤¯¨á¨
  182. .text: dd text       ;+16                ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâà
  183. .text_length: dd text_length ; +20      ¤«¨­  ⥪áâ 
  184. .flags: dd flags+0   ;+24               ä« £¨
  185. }
  186. ch_struc_size=28                        ;®¡é ï áâàãªâãà  28 ¡ ©â
  187. macro draw_check_boxes start,end        ;à¨á®¢ âì 祪 ¡®ªáë
  188. {
  189.         mov     edi,start                       ;“ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
  190.         mov     ecx,((end-start)/ch_struc_size) ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
  191. @@:
  192.         call    check_box.draw                  ;Žâ®¡à §¨âì 祪 ¡®ªá
  193.         add     edi,ch_struc_size               ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë  â.¥. +28
  194.         loop    @b      ;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
  195. }
  196. macro mouse_check_boxes start,end       ;ãáâ ­®¢ª  祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï
  197. {
  198.         mov     edi,start               ; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
  199.         mov     ecx,((end-start)/ch_struc_size) ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
  200. @@:
  201.         call    check_box.mouse         ;¯à®¢¥àª  ¬ë誨 ¨ ®¡à ¡®âª  ᮡë⨩
  202.         add     edi,ch_struc_size       ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë
  203.         loop    @b      ;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
  204. }
  205. macro check_boxes_set_sys_color start,end,color_table
  206. {
  207.         mov     edi,start
  208.         mov     ecx,((end-start)/ch_struc_size)
  209.         mov     esi,color_table
  210. @@:
  211.         push    dword [esi+32]
  212.         pop     dword ch_text_color
  213.         push    dword [esi+36]
  214.         pop     dword ch_border_color
  215.         add     edi,ch_struc_size
  216.         loop    @b
  217. }