⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_pop_up_list.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 4 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       18/Nov/107  22:39:36 #
# 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_amv\list\ui_pop_up_list.lst   #
#       Object file   =  d:\case_i_d913f\ap\ap_amv\obj\ui_pop_up_list.r01    #
#       ASM file      =  d:\case_i_d913f\ap\ap_amv\list\ui_pop_up_list.s01   #
#       Command line  =  -v0 -mb -OD:\case_i_d913f\ap\ap_amv\Obj\ -e -K -w   #
#                        -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT         #
#                        -LD:\case_i_d913f\ap\ap_amv\List\ -q -t8            #
#                        -AD:\case_i_d913f\ap\ap_amv\List\                   #
#                        -ND:\case_i_d913f\ap\ap_amv\List\ -X                #
#                        -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;
     90              bool need_drawall=TRUE;
     91              bool value_changed=FALSE;
     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;
   \   0013  210400            LD      HL,4
   \   0016  19                ADD     HL,DE
   \   0017  46                LD      B,(HL)
   \   0018  DD70E0            LD      (IX-32),B
   \   001B  23                INC     HL
   \   001C  66                LD      H,(HL)
   \   001D  DD74E1            LD      (IX-31),H
     99              GetDCStatus(&oldDC_sav);
   \   0020  210A00            LD      HL,10
   \   0023  39                ADD     HL,SP
   \   0024  EB                EX      DE,HL
   \   0025  CD0000            CALL    LWRD GetDCStatus
   \   0028  DD36FB00          LD      (IX-5),0
   \   002C  DD36FE01          LD      (IX-2),1
   \   0030  DD36FD00          LD      (IX-3),0
   \   0034            ?0003:
    100          
    101              ///-SetTextOutMode(1);       //设字体透明
    102          
    103              while(1)
    104              {
    105                    tregion.x = 3;
   \   0034  DD36E403          LD      (IX-28),3
    106                  tregion.y = 19;
   \   0038  DD36E513          LD      (IX-27),19
    107                  ///-tregion.width = 160;
    108                  tregion.height = 157;
   \   003C  DD36E79D          LD      (IX-25),157
    109                  
    110                  if(need_drawall)
   \   0040  AF                XOR     A
   \   0041  DDB6FE            OR      (IX-2)
   \   0044  2808              JR      Z,?0006
   \   0046            ?0005:
    111                  {
    112                      need_drawall=FALSE;
    113                      need_draw=TRUE;
   \   0046  DD36FE00          LD      (IX-2),0
   \   004A  DD36FB01          LD      (IX-5),1
   \   004E            ?0006:
    114                  }
    115                  if(need_draw)
   \   004E  AF                XOR     A
   \   004F  DDB6FB            OR      (IX-5)
   \   0052  CA8002            JP      Z,?0008
   \   0055            ?0007:
    116                  {
    117                      old_active=active;
    118                      cur_group = active / LIST_NUM_ONE_PAGE;
   \   0055  010600            LD      BC,6
   \   0058  DD5EE0            LD      E,(IX-32)
   \   005B  DD56E1            LD      D,(IX-31)
   \   005E  CD0000            CALL    LWRD ?SS_DIV_L02
   \   0061  DD73F6            LD      (IX-10),E
   \   0064  DD72F7            LD      (IX-9),D
    119                      n = cur_group*LIST_NUM_ONE_PAGE;
   \   0067  EB                EX      DE,HL
   \   0068  29                ADD     HL,HL
   \   0069  4D                LD      C,L
   \   006A  44                LD      B,H
   \   006B  29                ADD     HL,HL
   \   006C  09                ADD     HL,BC
   \   006D  DD75F4            LD      (IX-12),L
   \   0070  DD74F5            LD      (IX-11),H
    120                      
    121                      if(list->total > LIST_NUM_ONE_PAGE)
   \   0073  DD6EE0            LD      L,(IX-32)
   \   0076  DD66E1            LD      H,(IX-31)
   \   0079  DD75F2            LD      (IX-14),L
   \   007C  DD74F3            LD      (IX-13),H
   \   007F  FD4E02            LD      C,(IY+2)
   \   0082  FD4603            LD      B,(IY+3)
   \   0085  210600            LD      HL,6
   \   0088  F680              OR      128
   \   008A  ED42              SBC     HL,BC
   \   008C  E29000            JP      PO,?0075
   \   008F  AC                XOR     H
   \   0090            ?0075:
   \   0090  F2AB00            JP      P,?0010
   \   0093            ?0009:
    122                      {
    123                            tregion.width = 144;
   \   0093  DD36E690          LD      (IX-26),144
    124                            constX = 153;
    125                            resID = MENUBCK2;
    126                                  ResShowPic(MENUTWO,0,0);
   \   0097  0E00              LD      C,0
   \   0099  C5                PUSH    BC
   \   009A  11C300            LD      DE,195
   \   009D  CDB305            CALL    LWRD ?0095
   \   00A0  F1                POP     AF
   \   00A1  DD36FC99          LD      (IX-4),153
   \   00A5  DD36F8B6          LD      (IX-8),182
   \   00A9  1816              JR      ?0086
    127                      }
    128                      else
   \   00AB            ?0010:
    129                      {
    130                            tregion.width = 160;
   \   00AB  DD36E6A0          LD      (IX-26),160
    131                            constX = 163;
    132                            resID = MENUBCK;
    133                                  ResShowPic(MENUTWO1,0,0);
   \   00AF  0E00              LD      C,0
   \   00B1  C5                PUSH    BC
   \   00B2  11C400            LD      DE,196
   \   00B5  CDB305            CALL    LWRD ?0095
   \   00B8  F1                POP     AF
   \   00B9  DD36FCA3          LD      (IX-4),163
   \   00BD  DD36F8B4          LD      (IX-8),180
   \   00C1            ?0086:
   \   00C1  DD36F900          LD      (IX-7),0
   \   00C5            ?0011:
    134                      }
    135                      
    136                      SetPenColor(Color_BLACK_def);
   \   00C5  010000            LD      BC,0
   \   00C8  59                LD      E,C
   \   00C9  50                LD      D,B
   \   00CA  CD0000            CALL    LWRD SetPenColor
    137                      SetBackgdColor(0x0000df1c);
   \   00CD  010000            LD      BC,0
   \   00D0  111CDF            LD      DE,57116
   \   00D3  CD0000            CALL    LWRD SetBackgdColor
    138                      ///-SetTextOutMode(1);
    139                      ResShowMultiString(list->headid, list->string_id,255, 1);
   \   00D6  0E01              LD      C,1
   \   00D8  C5                PUSH    BC
   \   00D9  0EFF              LD      C,255
   \   00DB  C5                PUSH    BC
   \   00DC  FD4E08            LD      C,(IY+8)
   \   00DF  FD5E06            LD      E,(IY+6)
   \   00E2  FD5607            LD      D,(IY+7)
   \   00E5  3E00              LD      A,BYTE3 ResShowMultiString
   \   00E7  210000            LD      HL,LWRD ResShowMultiString
   \   00EA  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   00ED  F1                POP     AF
   \   00EE  F1                POP     AF
    140                      ///-SetTextOutMode(0);
    141                      SetBackgdColor(Color_MENU_def);
   \   00EF  010000            LD      BC,0
   \   00F2  11FFFF            LD      DE,65535
   \   00F5  CD0000            CALL    LWRD SetBackgdColor
    142                      
    143                      if(callback != NULL)
   \   00F8  DD7E0A            LD      A,(IX+10)
   \   00FB  DDB60B            OR      (IX+11)

⌨️ 快捷键说明

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