ui_slider.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 891 行 · 第 1/2 页
S01
891 行
PUSH BC
LD C,61
LD DE,(file_name)
LD D,B
CALL LWRD ?0106
POP AF
; 150. main_ResShowPic(FMNUM0+file_name[1]-0x30,106-22,80);
LD C,80
PUSH BC
LD C,84
?0097:
LD DE,(file_name+1)
JR ?0098
?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 ?0107
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 ?0107
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)
?0098:
CALL LWRD ?0107
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 ?0108
; 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 ?0100
DEFW ?0055
DEFW ?0055
DEFW ?0055
DEFW ?0055
DEFW ?0100
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)
CALL LWRD ?0109
JR C,?0045
?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)
LD (HL),A
; 171. value_changed = TRUE;
; 172. need_draw = TRUE;
LD (IX-6),1
LD (IX-5),1
?0045:
; 173. }
; 174.
; 175. break;
JR ?0064
?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
CALL LWRD ?SS_CMP_L02
JR C,?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)
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 ?0100
; 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;
?0100:
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:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_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)
CALL LWRD ?0109
JR C,?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)
JR Z,?0074
?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 ?0108
; 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)
LD (IY+6),L
LD (IY+7),H
LD (IX-7),0
?0074:
JR ?0085
?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
CALL LWRD ?SS_CMP_L02
JR C,?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 ?0108
; 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)
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)
JR Z,?0087
XOR A
OR (IX-6)
JR Z,?0087
?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
?0107:
LD D,0
?0106:
LD HL,90
ADD HL,DE
EX DE,HL
?0105:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0108:
CALL LWRD ap_get_message
LD (IX-8),A
RET
?0109:
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)
JP LWRD ?SS_CMP_L02
; 288.
; 289.
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?