ui_slider.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 920 行 · 第 1/2 页
S01
920 行
; 150. main_ResShowPic(FMNUM0+file_name[1]-0x30,106-22,80);
LD C,80
PUSH BC
LD C,84
?0101:
LD DE,(file_name+1)
JR ?0102
?0040:
; 151. }
; 152. }
; 153. else
?0037:
; 154. {
; 155. main_ResShowPic(FMNUM0+file_name[0]-0x30,75-22,80);
LD C,80
PUSH BC
LD C,53
LD DE,(file_name)
CALL LWRD ?0112
POP AF
; 156. main_ResShowPic(FMNUM0+file_name[1]-0x30,98-22,80);
LD C,80
PUSH BC
LD C,76
LD DE,(file_name+1)
CALL LWRD ?0112
POP AF
; 157. main_ResShowPic(FMNUM0+file_name[2]-0x30,121-22,80);
LD C,80
PUSH BC
LD C,99
LD DE,(file_name+2)
?0102:
CALL LWRD ?0112
POP AF
?0041:
?0035:
; 158. }
; 159. need_draw = FALSE;
LD (IX-5),0
?0023:
; 160. }
; 161.
; 162. //handle message
; 163. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-8),A
; 164. switch( key)
LD E,A
CALL LWRD ?C_V_SWITCH_L06
DEFW 15
DEFB 3
DEFB 4
DEFB 5
DEFB 6
DEFB 30
DEFB 33
DEFB 35
DEFB 36
DEFB 37
DEFB 38
DEFB 48
DEFB 67
DEFB 68
DEFB 69
DEFB 70
DEFW ?0060
DEFW ?0049
DEFW ?0052
DEFW ?0049
DEFW ?0052
DEFW ?0104
DEFW ?0055
DEFW ?0055
DEFW ?0055
DEFW ?0055
DEFW ?0104
DEFW ?0057
DEFW ?0043
DEFW ?0046
DEFW ?0043
DEFW ?0046
?0043:
; 165. {
; 166. case AP_KEY_NEXT:
; 167. case AP_KEY_VOLADD:
; 168. if((slider->value + slider->step) <= slider->max)
LD L,(IY+8)
LD H,(IY+9)
LD C,(IY+6)
LD B,(IY+7)
ADD HL,BC
LD C,L
LD B,H
LD L,(IY+4)
LD H,(IY+5)
OR 128
SBC HL,BC
JP PO,?0094
XOR H
?0094:
JP M,?0064
?0044:
; 169. {
; 170. slider->value += slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,(IY+8)
LD (HL),A
INC HL
LD A,(HL)
ADC A,(IY+9)
JR ?0107
; 171. value_changed = TRUE;
; 172. need_draw = TRUE;
?0045:
; 173. }
; 174.
; 175. break;
?0046:
; 176.
; 177.
; 178. case AP_KEY_PREV:
; 179. case AP_KEY_VOLSUB:
; 180. if((slider->value - slider->step) >= slider->min)
LD C,(IY+2)
LD B,(IY+3)
LD E,(IY+8)
LD D,(IY+9)
LD L,(IY+6)
LD H,(IY+7)
AND A
SBC HL,DE
OR 128
SBC HL,BC
JP PO,?0095
XOR H
?0095:
JP M,?0064
?0047:
; 181. {
; 182. slider->value -= slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
SUB (IY+8)
LD (HL),A
INC HL
LD A,(HL)
SBC A,(IY+9)
?0107:
LD (HL),A
; 183. value_changed = TRUE;
; 184. need_draw = TRUE;
LD (IX-6),1
LD (IX-5),1
?0048:
; 185. }
; 186.
; 187. break;
JR ?0064
?0049:
; 188.
; 189. //hold 用来控制加速开关
; 190. case AP_KEY_NEXT | AP_KEY_HOLD:
; 191. case AP_KEY_VOLADD | AP_KEY_HOLD:
; 192. if(hold_state == 0) hold_state = 1;
XOR A
OR (IX-7)
JR NZ,?0064
?0050:
LD (IX-7),1
?0051:
; 193.
; 194. break;
JR ?0064
?0052:
; 195.
; 196.
; 197. case AP_KEY_PREV | AP_KEY_HOLD:
; 198. case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 199. if(hold_state == 0) hold_state = 2;
XOR A
OR (IX-7)
JR NZ,?0064
?0053:
LD (IX-7),2
?0054:
; 200.
; 201. break;
JR ?0064
?0055:
; 202.
; 203.
; 204. case AP_KEY_NEXT | AP_KEY_UP:
; 205. case AP_KEY_VOLADD | AP_KEY_UP:
; 206. case AP_KEY_PREV | AP_KEY_UP:
; 207. case AP_KEY_VOLSUB | AP_KEY_UP:
; 208. hold_state = 0;
LD (IX-7),0
; 209.
; 210. break;
JR ?0064
?0056:
; 211.
; 212.
; 213. case AP_KEY_MODE | AP_KEY_UP:
; 214. case AP_KEY_PLAY | AP_KEY_UP:
; 215. return 0; //ok and return
; 216.
; 217.
; 218. case AP_MSG_WAIT_TIMEOUT:
?0057:
; 219. if(ui_auto_select) return 0;
LD A,(ui_auto_select)
OR A
JR Z,?0064
?0058:
JR ?0104
; 220.
; 221. break;
?0059:
?0060:
; 222.
; 223.
; 224. default:
; 225. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX-8),A
; 226. if(key == RESULT_REDRAW) //need_draw = TRUE;
CP 50
JR NZ,?0062
?0061:
; 227. {
; 228. //直接退出,因为控件不能重画背景
; 229. return 0;
?0104:
LD HL,0
; 230. }
JR ?0090
?0062:
; 231. else if(key != 0) return key;
XOR A
OR (IX-8)
JR Z,?0064
?0063:
LD L,A
LD H,0
; 232. }
?0090:
LD SP,IX
POP IX
POP IY
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0064:
?0042:
; 233.
; 234.
; 235. //check if holding
; 236. if(hold_state == 1) //holding up
LD B,(IX-7)
DEC B
JR NZ,?0066
?0065:
; 237. {
; 238. if((slider->value + slider->step) <= slider->max)
LD L,(IY+8)
LD H,(IY+9)
LD C,(IY+6)
LD B,(IY+7)
ADD HL,BC
LD C,L
LD B,H
LD L,(IY+4)
LD H,(IY+5)
OR 128
SBC HL,BC
JP PO,?0096
XOR H
?0096:
JP M,?0068
?0067:
; 239. {
; 240. slider->value += slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,(IY+8)
LD (HL),A
INC HL
LD A,(HL)
ADC A,(IY+9)
LD (HL),A
; 241. value_changed = TRUE;
; 242. need_draw = TRUE;
LD (IX-6),1
LD (IX-5),1
?0070:
; 243.
; 244. while(key != NULL)
XOR A
OR (IX-8)
JP Z,?0085
?0071:
; 245. {
; 246. if((key & AP_KEY_UP) != NULL)
BIT 5,(IX-8)
JR Z,?0073
?0072:
; 247. hold_state = 0;
LD (IX-7),0
?0073:
; 248. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-8),A
; 249. }
; 250. }
JR ?0070
?0069:
; 251. else
?0068:
; 252. {
; 253. hold_state = 0; //disable holding
; 254. slider->value=slider->max;
LD L,(IY+4)
LD H,(IY+5)
JR ?0108
?0074:
?0066:
; 255. }
; 256. }
; 257. else if(hold_state == 2) //holding down
LD B,(IX-7)
DEC B
DEC B
JR NZ,?0085
?0076:
; 258. {
; 259. if((slider->value - slider->step) >= slider->min)
LD C,(IY+2)
LD B,(IY+3)
LD E,(IY+8)
LD D,(IY+9)
LD L,(IY+6)
LD H,(IY+7)
AND A
SBC HL,DE
OR 128
SBC HL,BC
JP PO,?0097
XOR H
?0097:
JP M,?0079
?0078:
; 260. {
; 261. slider->value -= slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
SUB (IY+8)
LD (HL),A
INC HL
LD A,(HL)
SBC A,(IY+9)
LD (HL),A
; 262. value_changed = TRUE;
; 263. need_draw = TRUE;
LD (IX-6),1
LD (IX-5),1
?0081:
; 264.
; 265. while(key != NULL)
XOR A
OR (IX-8)
JR Z,?0085
?0082:
; 266. {
; 267. if((key & AP_KEY_UP) != NULL)
BIT 5,(IX-8)
JR Z,?0084
?0083:
; 268. hold_state = 0;
LD (IX-7),0
?0084:
; 269. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-8),A
; 270. }
; 271. }
JR ?0081
?0080:
; 272. else
?0079:
; 273. {
; 274. hold_state = 0; //disable holding
; 275. slider->value=slider->min;
LD L,(IY+2)
LD H,(IY+3)
?0108:
LD (IY+6),L
LD (IY+7),H
LD (IX-7),0
?0085:
?0077:
?0075:
; 276. }
; 277. }
; 278.
; 279. //handle callback
; 280. if(callback != NULL && value_changed)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JP Z,?0020
XOR A
OR (IX-6)
JP Z,?0020
?0089:
?0088:
?0086:
; 281. {
; 282. callback(slider->value);
LD E,(IY+6)
LD D,(IY+7)
LD A,(IX+12)
LD L,(IX+10)
LD H,(IX+11)
CALL LWRD ?BANK_CALL_DIRECT_L08
; 283. value_changed = FALSE;
LD (IX-6),0
?0087:
; 284. }
; 285.
; 286. }//while(1)
; 287. }
JP LWRD ?0020
?0112:
LD D,0
?0111:
LD HL,90
ADD HL,DE
EX DE,HL
?0110:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
; 288.
; 289.
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?