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

📄 listbox_multisel.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\listbox_multisel.o --depend=.\Obj\listbox_multisel.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Widget\LISTBOX_MultiSel.c]
                          THUMB

                          AREA ||i.LISTBOX_GetItemSel||, CODE, READONLY, ALIGN=1

                  LISTBOX_GetItemSel PROC
;;;82     */
;;;83     int LISTBOX_GetItemSel(LISTBOX_Handle hObj, unsigned Index) {
000000  b570              PUSH     {r4-r6,lr}
000002  460e              MOV      r6,r1
;;;84       int Ret = 0;
000004  2500              MOVS     r5,#0
;;;85       if (hObj) {
000006  b1b0              CBZ      r0,|L1.54|
;;;86         unsigned NumItems;
;;;87         LISTBOX_Obj* pObj;
;;;88         WM_LOCK();
;;;89         pObj = LISTBOX_H2P(hObj);
000008  f7fffffe          BL       GUI_ALLOC_h2p
00000c  4604              MOV      r4,r0
;;;90         NumItems = LISTBOX__GetNumItems(pObj);
00000e  f7fffffe          BL       LISTBOX__GetNumItems
;;;91         if ((Index < NumItems) && (pObj->Flags & LISTBOX_SF_MULTISEL)) {
000012  4286              CMP      r6,r0
000014  d20f              BCS      |L1.54|
000016  f8940074          LDRB     r0,[r4,#0x74]
00001a  0740              LSLS     r0,r0,#29
00001c  d50b              BPL      |L1.54|
;;;92           WM_HMEM hItem = GUI_ARRAY_GethItem(&pObj->ItemArray, Index);
00001e  4631              MOV      r1,r6
000020  f1040028          ADD      r0,r4,#0x28
000024  f7fffffe          BL       GUI_ARRAY_GethItem
;;;93           if (hItem) {
000028  b128              CBZ      r0,|L1.54|
;;;94             LISTBOX_ITEM * pItem = (LISTBOX_ITEM *)GUI_ALLOC_h2p(hItem);
00002a  f7fffffe          BL       GUI_ALLOC_h2p
;;;95             if (pItem->Status & LISTBOX_ITEM_SELECTED) {
00002e  7900              LDRB     r0,[r0,#4]
000030  07c0              LSLS     r0,r0,#31
000032  d000              BEQ      |L1.54|
;;;96               Ret = 1;
000034  2501              MOVS     r5,#1
                  |L1.54|
;;;97             }
;;;98           }
;;;99         }
;;;100        WM_UNLOCK();
;;;101      }
;;;102      return Ret;
000036  4628              MOV      r0,r5
;;;103    }
000038  bd70              POP      {r4-r6,pc}
;;;104    
                          ENDP


                          AREA ||i.LISTBOX_GetMulti||, CODE, READONLY, ALIGN=1

                  LISTBOX_GetMulti PROC
;;;62     */
;;;63     int LISTBOX_GetMulti(LISTBOX_Handle hObj) {
000000  b510              PUSH     {r4,lr}
;;;64       int Multi = 0;
000002  2400              MOVS     r4,#0
;;;65       if (hObj) {
000004  b130              CBZ      r0,|L2.20|
;;;66         LISTBOX_Obj* pObj;
;;;67         WM_LOCK();
;;;68         pObj = LISTBOX_H2P(hObj);
000006  f7fffffe          BL       GUI_ALLOC_h2p
;;;69         if (!(pObj->Flags & LISTBOX_SF_MULTISEL)) {
00000a  f8900074          LDRB     r0,[r0,#0x74]
00000e  0740              LSLS     r0,r0,#29
000010  d500              BPL      |L2.20|
;;;70           Multi = 0;
;;;71         } else {
;;;72           Multi = 1;
000012  2401              MOVS     r4,#1
                  |L2.20|
;;;73         }
;;;74         WM_UNLOCK();
;;;75       }
;;;76       return Multi;
000014  4620              MOV      r0,r4
;;;77     }
000016  bd10              POP      {r4,pc}
;;;78     
                          ENDP


                          AREA ||i.LISTBOX_SetItemSel||, CODE, READONLY, ALIGN=1

                  LISTBOX_SetItemSel PROC
;;;108    */
;;;109    void LISTBOX_SetItemSel(LISTBOX_Handle hObj, unsigned Index, int OnOff) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  0005              MOVS     r5,r0
000006  460e              MOV      r6,r1
000008  4617              MOV      r7,r2
;;;110      if (hObj) {
00000a  d028              BEQ      |L3.94|
;;;111        unsigned NumItems;
;;;112        LISTBOX_Obj* pObj;
;;;113        WM_LOCK();
;;;114        pObj = LISTBOX_H2P(hObj);
00000c  4628              MOV      r0,r5
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  4604              MOV      r4,r0
;;;115        NumItems = LISTBOX__GetNumItems(pObj);
000014  f7fffffe          BL       LISTBOX__GetNumItems
;;;116        if ((Index < NumItems) && (pObj->Flags & LISTBOX_SF_MULTISEL)) {
000018  4286              CMP      r6,r0
00001a  d220              BCS      |L3.94|
00001c  f8940074          LDRB     r0,[r4,#0x74]
000020  0740              LSLS     r0,r0,#29
000022  d51c              BPL      |L3.94|
;;;117          WM_HMEM hItem = GUI_ARRAY_GethItem(&pObj->ItemArray, Index);
000024  4631              MOV      r1,r6
000026  f1040028          ADD      r0,r4,#0x28
00002a  f7fffffe          BL       GUI_ARRAY_GethItem
;;;118          if (hItem) {
00002e  2800              CMP      r0,#0
000030  d015              BEQ      |L3.94|
;;;119            LISTBOX_ITEM * pItem = (LISTBOX_ITEM *)GUI_ALLOC_h2p(hItem);
000032  f7fffffe          BL       GUI_ALLOC_h2p
;;;120            if (OnOff) {
;;;121              if (!(pItem->Status & LISTBOX_ITEM_SELECTED)) {
000036  7901              LDRB     r1,[r0,#4]
000038  07ca              LSLS     r2,r1,#31
00003a  b127              CBZ      r7,|L3.70|
00003c  2a00              CMP      r2,#0
00003e  d10e              BNE      |L3.94|
;;;122                pItem->Status |= LISTBOX_ITEM_SELECTED;
000040  f0410101          ORR      r1,r1,#1
;;;123                LISTBOX__InvalidateItem(hObj, pObj, Index);
000044  e003              B        |L3.78|
                  |L3.70|
;;;124              }
;;;125            } else {
;;;126              if (pItem->Status & LISTBOX_ITEM_SELECTED) {
000046  2a00              CMP      r2,#0
000048  d009              BEQ      |L3.94|
;;;127                pItem->Status &= ~LISTBOX_ITEM_SELECTED;
00004a  f0210101          BIC      r1,r1,#1
                  |L3.78|
00004e  7101              STRB     r1,[r0,#4]
;;;128                LISTBOX__InvalidateItem(hObj, pObj, Index);
000050  4632              MOV      r2,r6
000052  4621              MOV      r1,r4
000054  4628              MOV      r0,r5
000056  e8bd41f0          POP      {r4-r8,lr}
00005a  f7ffbffe          B.W      LISTBOX__InvalidateItem
                  |L3.94|
;;;129              }
;;;130            }
;;;131          }
;;;132        }
;;;133        WM_UNLOCK();
;;;134      }
;;;135    }
00005e  e8bd81f0          POP      {r4-r8,pc}
;;;136    
                          ENDP


                          AREA ||i.LISTBOX_SetMulti||, CODE, READONLY, ALIGN=1

                  LISTBOX_SetMulti PROC
;;;38     */
;;;39     void LISTBOX_SetMulti(LISTBOX_Handle hObj, int Mode) {
000000  b570              PUSH     {r4-r6,lr}
000002  0004              MOVS     r4,r0
000004  460d              MOV      r5,r1
;;;40       if (hObj) {
000006  d016              BEQ      |L4.54|
;;;41         LISTBOX_Obj* pObj;
;;;42         WM_LOCK();
;;;43         pObj = LISTBOX_H2P(hObj);
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;44         if (Mode) {
;;;45           if (!(pObj->Flags & LISTBOX_SF_MULTISEL)) {
00000e  f8901074          LDRB     r1,[r0,#0x74]
000012  074a              LSLS     r2,r1,#29
000014  b125              CBZ      r5,|L4.32|
000016  2a00              CMP      r2,#0
000018  db0d              BLT      |L4.54|
;;;46             pObj->Flags |= LISTBOX_SF_MULTISEL;
00001a  f0410104          ORR      r1,r1,#4
;;;47             LISTBOX__InvalidateInsideArea(hObj);
00001e  e003              B        |L4.40|
                  |L4.32|
;;;48           }
;;;49         } else {
;;;50           if (pObj->Flags & LISTBOX_SF_MULTISEL) {
000020  2a00              CMP      r2,#0
000022  da08              BGE      |L4.54|
;;;51             pObj->Flags &= ~LISTBOX_SF_MULTISEL;
000024  f0210104          BIC      r1,r1,#4
                  |L4.40|
000028  f8801074          STRB     r1,[r0,#0x74]
;;;52             LISTBOX__InvalidateInsideArea(hObj);
00002c  4620              MOV      r0,r4
00002e  e8bd4070          POP      {r4-r6,lr}
000032  f7ffbffe          B.W      LISTBOX__InvalidateInsideArea
                  |L4.54|
;;;53           }
;;;54         }
;;;55         WM_UNLOCK();
;;;56       }
;;;57     }
000036  bd70              POP      {r4-r6,pc}
;;;58     
                          ENDP

⌨️ 快捷键说明

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