ui_slider.lst

来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,032 行 · 第 1/4 页

LST
1,032
字号
     66                  callback, 滑动杆的回调函数,=NULL 表示没有回调函数
     67          *
     68          * Returns     : 结果消息, 或者0
     69          *
     70          * Notes       : 控件本身没有重画功能, 因为控件不能重画背景
     71          *
     72          ********************************************************************************
     73          */
     74          int ui_slider(slider_t *slider, const void (*callback)(int res_id))
     75          {
   \   013D  C5                PUSH    BC
   \   013E  FDE5              PUSH    IY
   \   0140  DDE5              PUSH    IX
   \   0142  DD210000          LD      IX,0
   \   0146  DD39              ADD     IX,SP
   \   0148  F5                PUSH    AF
   \   0149  F5                PUSH    AF
   \   014A  F5                PUSH    AF
   \   014B  F5                PUSH    AF
   \   014C  D5                PUSH    DE
   \   014D  FDE1              POP     IY
     76              int start, end;        //x坐标
     77              char buf[10];    //注意可能含符号 <<-0000>>
     78              BYTE StrLength; 
     79              char key;
     80              BOOL need_draw=TRUE;
   \   014F  DD36FB01          LD      (IX-5),1
     81              BOOL value_changed=TRUE;    //值是否改变, 需要callback
   \   0153  DD36FA01          LD      (IX-6),1
     82           
     83              ///const region_t num_region={44, 16, 40, 16};    //数字区域
     84              WORD value;    //to keep slider->value
     85              BYTE hold_state=0;    //按住状态,为了加快控件改变的速度
   \   0157  DD36F900          LD      (IX-7),0
     86                          //0:normal; 1:holding up, 2:holding down
     87                  
     88              ASSERT(slider->value <= slider->max);
     89              ASSERT(slider->value >= slider->min);
     90              ASSERT(slider->step > 0);   
     91              ///-SetTextOutMode(1);                                                                 
     92              SetPenColor(Color_BLACK_def);
   \   015B  010000            LD      BC,0
   \   015E  110000            LD      DE,0
   \   0161  CD0000            CALL    LWRD SetPenColor
   \   0164            ?0020:
     93              while(1)
     94              {
     95                  if(need_draw)
   \   0164  AF                XOR     A
   \   0165  DDB6FB            OR      (IX-5)
   \   0168  CA4503            JP      Z,?0023
   \   016B            ?0022:
     96                  {        
     97                      value = slider_pox_x_def +
     98                              (slider_width_def-8) * (slider->value - slider->min) / (slider->max - slider->min);
   \   016B  FD4E02            LD      C,(IY+2)
   \   016E  FD4603            LD      B,(IY+3)
   \   0171  FD6E06            LD      L,(IY+6)
   \   0174  FD6607            LD      H,(IY+7)
   \   0177  A7                AND     A
   \   0178  ED42              SBC     HL,BC
   \   017A  4D                LD      C,L
   \   017B  44                LD      B,H
   \   017C  117800            LD      DE,120
   \   017F  CD0000            CALL    LWRD ?S_MUL_L02
   \   0182  FD4E02            LD      C,(IY+2)
   \   0185  FD4603            LD      B,(IY+3)
   \   0188  FD6E04            LD      L,(IY+4)
   \   018B  FD6605            LD      H,(IY+5)
   \   018E  A7                AND     A
   \   018F  ED42              SBC     HL,BC
   \   0191  4D                LD      C,L
   \   0192  44                LD      B,H
   \   0193  CD0000            CALL    LWRD ?SS_DIV_L02
   \   0196  211800            LD      HL,24
   \   0199  19                ADD     HL,DE
   \   019A  DD75FC            LD      (IX-4),L
   \   019D  DD74FD            LD      (IX-3),H
     99                         
    100                      slider_atoi4 (file_name,slider->value);
   \   01A0  FD4E06            LD      C,(IY+6)
   \   01A3  FD4607            LD      B,(IY+7)
   \   01A6  110000            LD      DE,file_name
   \   01A9  3E00              LD      A,BYTE3 slider_atoi4
   \   01AB  210000            LD      HL,LWRD slider_atoi4
   \   01AE  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    101                      StrLength=(BYTE)strlen(file_name);
   \   01B1  210000            LD      HL,file_name
   \   01B4  CD0000            CALL    LWRD ?STRLEN_L11
   \   01B7  DD75FE            LD      (IX-2),L
    102          
    103                      ResShowPic(SSBCK,0,0);
   \   01BA  0E00              LD      C,0
   \   01BC  C5                PUSH    BC
   \   01BD  0E00              LD      C,0
   \   01BF  11FE00            LD      DE,254
   \   01C2  3E00              LD      A,BYTE3 ResShowPic
   \   01C4  210000            LD      HL,LWRD ResShowPic
   \   01C7  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01CA  F1                POP     AF
    104                      SetBackgdColor(0x0000df1c);
   \   01CB  010000            LD      BC,0
   \   01CE  111CDF            LD      DE,57116
   \   01D1  CD0000            CALL    LWRD SetBackgdColor
    105                      ///-SetTextOutMode(1);
    106                      ResShowMultiString(slider->title, slider->string_id, 255, 1);
   \   01D4  0E01              LD      C,1
   \   01D6  C5                PUSH    BC
   \   01D7  0EFF              LD      C,255
   \   01D9  C5                PUSH    BC
   \   01DA  FD4E0A            LD      C,(IY+10)
   \   01DD  FD5E00            LD      E,(IY+0)
   \   01E0  FD5601            LD      D,(IY+1)
   \   01E3  3E00              LD      A,BYTE3 ResShowMultiString
   \   01E5  210000            LD      HL,LWRD ResShowMultiString
   \   01E8  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01EB  F1                POP     AF
   \   01EC  F1                POP     AF
    107                      ///-SetTextOutMode(0);
    108                      SetBackgdColor(Color_MENU_def);
   \   01ED  010000            LD      BC,0
   \   01F0  11FFFF            LD      DE,65535
   \   01F3  CD0000            CALL    LWRD SetBackgdColor
    109                      
    110                      // 画滑动杆
    111                          #ifdef EAR_PROTECT
    112                          if (g_EarProtect_flag)
   \   01F6  3A0000            LD      A,(g_EarProtect_flag)
   \   01F9  B7                OR      A
   \   01FA  2847              JR      Z,?0025
   \   01FC            ?0024:
    113                          {
    114                              if (EarProtectThreshold == 22)
   \   01FC  3A0000            LD      A,(EarProtectThreshold)
   \   01FF  FE16              CP      22
   \   0201  2013              JR      NZ,?0027
   \   0203            ?0026:
    115                              {
    116                                     main_ResShowPic(SSLIDER1,slider_pox_x_def,slider_pox_y_def);
   \   0203  0E37              LD      C,55
   \   0205  C5                PUSH    BC
   \   0206  0E18              LD      C,24
   \   0208  110001            LD      DE,256
   \   020B  3E00              LD      A,BYTE3 main_ResShowPic
   \   020D  210000            LD      HL,LWRD main_ResShowPic
   \   0210  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0213  F1                POP     AF
   \   0214  183E              JR      ?0032
   \   0216            ?0027:
    117                              }
    118                              else if (EarProtectThreshold == 25)
   \   0216  3A0000            LD      A,(EarProtectThreshold)
   \   0219  FE19              CP      25
   \   021B  2013              JR      NZ,?0030
   \   021D            ?0029:
    119                              {
    120                                     main_ResShowPic(SSLIDER2,slider_pox_x_def,slider_pox_y_def);
   \   021D  0E37              LD      C,55
   \   021F  C5                PUSH    BC
   \   0220  0E18              LD      C,24
   \   0222  110101            LD      DE,257
   \   0225  3E00              LD      A,BYTE3 main_ResShowPic
   \   0227  210000            LD      HL,LWRD main_ResShowPic
   \   022A  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   022D  F1                POP     AF
    121                              }
    122                              else
   \   022E  1824              JR      ?0032
   \   0230            ?0030:
    123                              {
    124                                     main_ResShowPic(SSLIDER3,slider_pox_x_def,slider_pox_y_def);
   \   0230  0E37              LD      C,55
   \   0232  C5                PUSH    BC
   \   0233  0E18              LD      C,24
   \   0235  110201            LD      DE,258
   \   0238  3E00              LD      A,BYTE3 main_ResShowPic
   \   023A  210000            LD      HL,LWRD main_ResShowPic
   \   023D  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0240  F1                POP     AF
   \   0241            ?0031:
   \   0241            ?0028:
    125                              }   
    126                          }
    127                          else
   \   0241  1811              JR      ?0032
   \   0243            ?0025:
    128                          {
    129                                          main_ResShowPic(SSLIDER,slider_pox_x_def,slider_pox_y_def);
   \   0243  0E37              LD      C,55
   \   0245  C5                PUSH    BC
   \   0246  0E18              LD      C,24
   \   0248  11FF00            LD      DE,255
   \   024B  3E00              LD      A,BYTE3 main_ResShowPic
   \   024D  210000            LD      HL,LWRD main_ResShowPic
   \   0250  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0253  F1                POP     AF
   \   0254            ?0032:
    130                          }
    131                          #else
    132                              main_ResShowPic(SSLIDER,slider_pox_x_def,slider_pox_y_def);
    133                          #endif
    134                      // 画滑动游标                                  
    135                      main_ResShowPic(SLIDPTR, value, slider_cursor_y_def); 
   \   0254  0E37              LD      C,55
   \   0256  C5                PUSH    BC
   \   0257  DD4EFC            LD      C,(IX-4)
   \   025A  11FD00            LD      DE,253
   \   025D  3E00              LD      A,BYTE3 main_ResShowPic
   \   025F  210000            LD      HL,LWRD main_ResShowPic
   \   0262  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0265  F1                POP     AF
    136                                             
    137                      // 显示当前值                        
    138                      if(StrLength==1)
   \   0266  DD46FE            LD      B,(IX-2)
   \   0269  05                DEC     B
   \   026A  201C              JR      NZ,?0034
   \   026C            ?0033:
    139                          main_ResShowPic(FMNUM0+file_name[0]-0x30,98-22,80);
   \   026C  0E50              LD      C,80
   \   026E  C5                PUSH    BC
   \   026F  0E4C              LD      C,76
   \   0271  ED5B0000          LD      DE,(file_name)
   \   0275  1600              LD      D,0
   \   0277  215A00            LD      HL,90
   \   027A  19                ADD     HL,DE
   \   027B  EB                EX      DE,HL
   \   027C  3E00              LD      A,BYTE3 main_ResShowPic
   \   027E  210000            LD      HL,LWRD main_ResShowPic
   \   0281  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0284  F1                POP     AF
   \   0285  C34103            JP      LWRD ?0041
   \   0288            ?0034:
    140                      else if(StrLength==2)
   \   0288  DD46FE            LD      B,(IX-2)
   \   028B  05                DEC     B
   \   028C  05                DEC     B
   \   028D  2067              JR      NZ,?0037
   \   028F            ?0036:
    141                      {
    142                          if(file_name[0]=='-')
   \   028F  3A0000            LD      A,(file_name)
   \   0292  FE2D              CP      45
   \   0294  202C              JR      NZ,?0039
   \   0296            ?0038:
    143                          {
    144                              main_ResShowPic(MENUNEG,90,83); 
   \   0296  0E53              LD      C,83
   \   0298  C5                PUSH    BC
   \   0299  0E5A              LD      C,90
   \   029B  11B800            LD      DE,184
   \   029E  3E00              LD      A,BYTE3 main_ResShowPic
   \   02A0  210000            LD      HL,LWRD main_ResShowPic
   \   02A3  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   02A6  F1                POP     AF
    145                              main_ResShowPic(FMNUM0+file_name[1]-0x30,108-22,80);    
   \   02A7  0E50              LD      C,80
   \   02A9  C5                PUSH    BC

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?