📄 ui_pop_up_list.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:39:49 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ui_pop_up_list.c #
# List file = d:\case_i_d913f\ap\ap_setting\list\ui_pop_up_list.lst#
# Object file = d:\case_i_d913f\ap\ap_setting\release\obj\ui_pop_up_list.r01#
# Command line = -v0 -mb #
# -OD:\case_i_d913f\ap\ap_setting\release\Obj\ -e -K #
# -w -gA -s7 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_setting\List\ -q -t8 #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\COMMON\ui_pop_up_list.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_pop_up_list(17)
\ 0000 RSEG COM_CTRL(0)
\ 0000 RSEG CONST(0)
\ 0000 EXTERN GetDCStatus
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN TextOutRect
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC menu_pos_list
\ 0000 PUBLIC menulist_bck_pic
\ 0000 PUBLIC menuptr_height_list
\ 0000 EXTERN ui_auto_select
\ 0000 PUBLIC ui_popup_list
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?C_MUL_L01
\ 0000 EXTERN ?SS_DIV_L02
\ 0000 EXTERN ?SS_MOD_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG COM_CTRL
\ 0000 ui_popup_list:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * ap common lib file
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ui_pop_up_list.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
10 *******************************************************************************
11 */
12 #include "ap_common.h"
13 #include "common.h"
14
15 #define LIST_NUM_ONE_PAGE 6
16 const char menu_pos_list[LIST_NUM_ONE_PAGE] = { 22,22+18,22+18*2,22+18*3,22+18*4,22+18*5};
17 const WORD menulist_bck_pic[LIST_NUM_ONE_PAGE]={ FILEBCK1,FILEBCK1,FILEBCK1,FILEBCK1,FILEBCK1,FILEBCK1 };
18 const char menuptr_height_list[9] = { 8*9,8*8,8*7,8*6,8*5,8*4,8*3,8*2,8*1, };
19 #pragma codeseg(COM_CTRL)
20 // 定义背景颜色
21 /*
22 void show_active_list1(pop_up_list_t *list,int old_active, int active)
23 {
24 int tmp;
25
26 //---------------------//
27 //清除旧的活动菜单项
28 tmp = old_active%6;
29 if(list->total > LIST_NUM_ONE_PAGE)
30 ResShowPic(MENUBCK3, 0, menu_pos_list[tmp]-1);
31 else
32 ResShowPic(MENUBCK1, 0, menu_pos_list[tmp]-1);
33 SetPenColor(Color_BLACK_def);
34 SetBackgdColor(Color_MENU_def);
35 ResShowMultiString(list->strid[old_active],list->string_id, 3, menu_pos_list[tmp]);
36 if(list->total > LIST_NUM_ONE_PAGE)
37 ResShowPic(MENUARR, 153, menu_pos_list[tmp]-1);
38 else
39 ResShowPic(MENUARR, 163, menu_pos_list[tmp]-1);
40
41
42
43 tmp = active%6;
44 if(list->total > LIST_NUM_ONE_PAGE)
45 {
46 ResShowPic(MENUBCK2, 0, menu_pos_list[tmp]-1);
47 ResShowPic(MENUARR1, 153, menu_pos_list[tmp]-1);
48 }
49 else
50 {
51 ResShowPic(MENUBCK, 0, menu_pos_list[tmp]-1);
52 ResShowPic(MENUARR1, 163, menu_pos_list[tmp]-1);
53 }
54
55 SetPenColor(Color_WHITE_def);
56 SetBackgdColor(0x00003358);
57 ResShowMultiString(list->strid[active],list->string_id, 3, menu_pos_list[tmp]);
58 if(list->total > LIST_NUM_ONE_PAGE)
59 {
60 ResShowPic(MENUPTR, 166, 19);
61 tmp = 113-menuptr_height_list[(list->total-1)/LIST_NUM_ONE_PAGE]; //注意,最多九级!!!
62 if(tmp%(list->total-1)>=active)
63 ResShowPic(MENUPTR1, 166, 19+active+(tmp/(list->total-1))*active);
64 else
65 ResShowPic(MENUPTR1, 166, 19+(tmp/(list->total-1))*active);
66 }
67 //---------------------//
68 }
69 */
70 /*
71 ********************************************************************************
72 * Description : 弹出式列表选择窗体
73 *
74 * Arguments :
75 * list, 弹出式列表结构体指针
76 * list->string, 语言
77 *
78 * Returns : key
79 *
80 * Notes :
81 *
82 ********************************************************************************
83 */
84 int ui_popup_list(pop_up_list_t *list, const void (*callback)(int value))
85 {
\ 0000 C5 PUSH BC
\ 0001 FDE5 PUSH IY
\ 0003 DDE5 PUSH IX
\ 0005 DD210000 LD IX,0
\ 0009 DD39 ADD IX,SP
\ 000B 21E0FF LD HL,65504
\ 000E 39 ADD HL,SP
\ 000F F9 LD SP,HL
\ 0010 D5 PUSH DE
\ 0011 FDE1 POP IY
86 int i,active,old_active;
87 char key,constX;
88 WORD resID;
89 bool need_draw=FALSE;
\ 0013 DD36FB00 LD (IX-5),0
90 bool need_drawall=TRUE;
\ 0017 DD36FE01 LD (IX-2),1
91 bool value_changed=FALSE;
\ 001B DD36FD00 LD (IX-3),0
92 int cur_group; //list->active / LIST_NUM_ONE_PAGE
93 int n; //the item to show
94 int tmp;
95 DC oldDC_sav;
96 region_t tregion; //Jerry Xie Add for test
97
98 active = list->active;
\ 001F 210400 LD HL,4
\ 0022 19 ADD HL,DE
\ 0023 46 LD B,(HL)
\ 0024 23 INC HL
\ 0025 66 LD H,(HL)
\ 0026 68 LD L,B
\ 0027 DD75E0 LD (IX-32),L
\ 002A DD74E1 LD (IX-31),H
99 GetDCStatus(&oldDC_sav);
\ 002D 210A00 LD HL,10
\ 0030 39 ADD HL,SP
\ 0031 5D LD E,L
\ 0032 54 LD D,H
\ 0033 CD0000 CALL LWRD GetDCStatus
\ 0036 ?0003:
100
101 ///-SetTextOutMode(1); //设字体透明
102
103 while(1)
104 {
105 tregion.x = 3;
\ 0036 DD36E403 LD (IX-28),3
106 tregion.y = 19;
\ 003A DD36E513 LD (IX-27),19
107 ///-tregion.width = 160;
108 tregion.height = 157;
\ 003E DD36E79D LD (IX-25),157
109
110 if(need_drawall)
\ 0042 AF XOR A
\ 0043 DDB6FE OR (IX-2)
\ 0046 2808 JR Z,?0006
\ 0048 ?0005:
111 {
112 need_drawall=FALSE;
\ 0048 DD36FE00 LD (IX-2),0
113 need_draw=TRUE;
\ 004C DD36FB01 LD (IX-5),1
\ 0050 ?0006:
114 }
115 if(need_draw)
\ 0050 AF XOR A
\ 0051 DDB6FB OR (IX-5)
\ 0054 CA7003 JP Z,?0008
\ 0057 ?0007:
116 {
117 old_active=active;
\ 0057 DD6EE0 LD L,(IX-32)
\ 005A DD66E1 LD H,(IX-31)
\ 005D DD75F2 LD (IX-14),L
\ 0060 DD74F3 LD (IX-13),H
118 cur_group = active / LIST_NUM_ONE_PAGE;
\ 0063 010600 LD BC,6
\ 0066 DD5EE0 LD E,(IX-32)
\ 0069 DD56E1 LD D,(IX-31)
\ 006C CD0000 CALL LWRD ?SS_DIV_L02
\ 006F DD73F6 LD (IX-10),E
\ 0072 DD72F7 LD (IX-9),D
119 n = cur_group*LIST_NUM_ONE_PAGE;
\ 0075 EB EX DE,HL
\ 0076 29 ADD HL,HL
\ 0077 4D LD C,L
\ 0078 44 LD B,H
\ 0079 29 ADD HL,HL
\ 007A 09 ADD HL,BC
\ 007B DD75F4 LD (IX-12),L
\ 007E DD74F5 LD (IX-11),H
120
121 if(list->total > LIST_NUM_ONE_PAGE)
\ 0081 FD4E02 LD C,(IY+2)
\ 0084 FD4603 LD B,(IY+3)
\ 0087 210600 LD HL,6
\ 008A F680 OR 128
\ 008C ED42 SBC HL,BC
\ 008E E29200 JP PO,?0075
\ 0091 AC XOR H
\ 0092 ?0075:
\ 0092 F2B800 JP P,?0010
\ 0095 ?0009:
122 {
123 tregion.width = 144;
\ 0095 DD36E690 LD (IX-26),144
124 constX = 153;
\ 0099 DD36FC99 LD (IX-4),153
125 resID = MENUBCK2;
\ 009D DD36F8B6 LD (IX-8),182
\ 00A1 DD36F900 LD (IX-7),0
126 ResShowPic(MENUTWO,0,0);
\ 00A5 0E00 LD C,0
\ 00A7 C5 PUSH BC
\ 00A8 0E00 LD C,0
\ 00AA 11C300 LD DE,195
\ 00AD 3E00 LD A,BYTE3 ResShowPic
\ 00AF 210000 LD HL,LWRD ResShowPic
\ 00B2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00B5 F1 POP AF
127 }
128 else
\ 00B6 1821 JR ?0011
\ 00B8 ?0010:
129 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -