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 + -
显示快捷键?