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

📄 listbox.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;870    */
;;;871    static int _AddKey(LISTBOX_Handle hObj, int Key) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4680              MOV      r8,r0
000006  460c              MOV      r4,r1
;;;872      LISTBOX_Obj* pObj;
;;;873      pObj = LISTBOX_H2P(hObj);
000008  f7fffffe          BL       GUI_ALLOC_h2p
;;;874      switch (Key) {
00000c  2c12              CMP      r4,#0x12
00000e  d013              BEQ      |L19.56|
000010  dc07              BGT      |L19.34|
000012  2c10              CMP      r4,#0x10
000014  d01c              BEQ      |L19.80|
000016  2c11              CMP      r4,#0x11
000018  d128              BNE      |L19.108|
;;;875      case ' ':
;;;876        _ToggleMultiSel(hObj, pObj, pObj->Sel);
;;;877        return 1;               /* Key has been consumed */
;;;878      case GUI_KEY_RIGHT:
;;;879        if (WM_SetScrollValue(&pObj->ScrollStateH, pObj->ScrollStateH.v + pObj->Props.ScrollStepH)) {
;;;880          LISTBOX_UpdateScrollers(hObj);
;;;881          LISTBOX__InvalidateInsideArea(hObj);
;;;882        }
;;;883        return 1;               /* Key has been consumed */
;;;884      case GUI_KEY_LEFT:
;;;885        if (WM_SetScrollValue(&pObj->ScrollStateH, pObj->ScrollStateH.v - pObj->Props.ScrollStepH)) {
;;;886          LISTBOX_UpdateScrollers(hObj);
;;;887          LISTBOX__InvalidateInsideArea(hObj);
;;;888        }
;;;889        return 1;               /* Key has been consumed */
;;;890      case GUI_KEY_DOWN:
;;;891        LISTBOX_IncSel(hObj);
;;;892        return 1;               /* Key has been consumed */
;;;893      case GUI_KEY_UP:
;;;894        LISTBOX_DecSel(hObj);
00001a  4640              MOV      r0,r8
00001c  f7fffffe          BL       LISTBOX_DecSel
;;;895        return 1;               /* Key has been consumed */
000020  e051              B        |L19.198|
                  |L19.34|
000022  2c13              CMP      r4,#0x13              ;874
000024  d01e              BEQ      |L19.100|
000026  2c20              CMP      r4,#0x20              ;874
000028  d120              BNE      |L19.108|
00002a  f9b02072          LDRSH    r2,[r0,#0x72]         ;876
00002e  4601              MOV      r1,r0                 ;876
000030  4640              MOV      r0,r8                 ;876
000032  f7fffffe          BL       _ToggleMultiSel
000036  e046              B        |L19.198|
                  |L19.56|
000038  f8b0204c          LDRH     r2,[r0,#0x4c]         ;879
00003c  6c01              LDR      r1,[r0,#0x40]         ;879
00003e  4411              ADD      r1,r1,r2              ;879
000040  e00a              B        |L19.88|
                  |L19.66|
000042  4640              MOV      r0,r8                 ;880
000044  f7fffffe          BL       LISTBOX_UpdateScrollers
000048  4640              MOV      r0,r8                 ;881
00004a  f7fffffe          BL       LISTBOX__InvalidateInsideArea
00004e  e03a              B        |L19.198|
                  |L19.80|
000050  f8b0204c          LDRH     r2,[r0,#0x4c]         ;885
000054  6c01              LDR      r1,[r0,#0x40]         ;885
000056  1a89              SUBS     r1,r1,r2              ;885
                  |L19.88|
000058  303c              ADDS     r0,r0,#0x3c           ;879
00005a  f7fffffe          BL       WM_SetScrollValue
00005e  2800              CMP      r0,#0                 ;879
000060  d1ef              BNE      |L19.66|
000062  e030              B        |L19.198|
                  |L19.100|
000064  4640              MOV      r0,r8                 ;891
000066  f7fffffe          BL       LISTBOX_IncSel
00006a  e02c              B        |L19.198|
                  |L19.108|
;;;896      default:
;;;897        if(_IsAlphaNum(Key)) {
00006c  4620              MOV      r0,r4
00006e  f7fffffe          BL       _Tolower
000072  f1a00161          SUB      r1,r0,#0x61
000076  2919              CMP      r1,#0x19
000078  d905              BLS      |L19.134|
00007a  3830              SUBS     r0,r0,#0x30
00007c  2809              CMP      r0,#9
00007e  d902              BLS      |L19.134|
;;;898          _SelectByKey(hObj, Key);
;;;899          return 1;               /* Key has been consumed */
;;;900        }
;;;901      }
;;;902      return 0;
000080  2000              MOVS     r0,#0
                  |L19.130|
;;;903    }
000082  e8bd81f0          POP      {r4-r8,pc}
                  |L19.134|
000086  4640              MOV      r0,r8
000088  f7fffffe          BL       GUI_ALLOC_h2p
00008c  4606              MOV      r6,r0
00008e  4620              MOV      r0,r4
000090  f7fffffe          BL       _Tolower
000094  4605              MOV      r5,r0
000096  2400              MOVS     r4,#0
000098  f1060728          ADD      r7,r6,#0x28
00009c  e00e              B        |L19.188|
                  |L19.158|
00009e  4621              MOV      r1,r4
0000a0  4630              MOV      r0,r6
0000a2  f7fffffe          BL       LISTBOX__GetpString
0000a6  7800              LDRB     r0,[r0,#0]
0000a8  f7fffffe          BL       _Tolower
0000ac  42a8              CMP      r0,r5
0000ae  d104              BNE      |L19.186|
0000b0  4621              MOV      r1,r4
0000b2  4640              MOV      r0,r8
0000b4  f7fffffe          BL       LISTBOX_SetSel
0000b8  e005              B        |L19.198|
                  |L19.186|
0000ba  1c64              ADDS     r4,r4,#1
                  |L19.188|
0000bc  4638              MOV      r0,r7
0000be  f7fffffe          BL       GUI_ARRAY_GetNumItems
0000c2  42a0              CMP      r0,r4
0000c4  d8eb              BHI      |L19.158|
                  |L19.198|
0000c6  2001              MOVS     r0,#1                 ;899
0000c8  e7db              B        |L19.130|
;;;904    
                          ENDP


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

                  _CallOwnerDraw PROC
;;;119    */
;;;120    static int _CallOwnerDraw(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Cmd, int ItemIndex) {
000000  b500              PUSH     {lr}
000002  b085              SUB      sp,sp,#0x14
;;;121      WIDGET_ITEM_DRAW_INFO ItemInfo;
;;;122      int r;
;;;123      ItemInfo.Cmd       = Cmd;
;;;124      ItemInfo.hWin      = hObj;
000004  9201              STR      r2,[sp,#4]
000006  f8ad0000          STRH     r0,[sp,#0]
;;;125      ItemInfo.ItemIndex = ItemIndex;
;;;126      if (pObj->pfDrawItem) {
00000a  9302              STR      r3,[sp,#8]
00000c  6ac9              LDR      r1,[r1,#0x2c]
;;;127        r = pObj->pfDrawItem(&ItemInfo);
00000e  4668              MOV      r0,sp
000010  b111              CBZ      r1,|L20.24|
000012  4788              BLX      r1
                  |L20.20|
;;;128      } else {
;;;129        r = LISTBOX_OwnerDraw(&ItemInfo);
;;;130      }
;;;131      return r;
;;;132    }
000014  b005              ADD      sp,sp,#0x14
000016  bd00              POP      {pc}
                  |L20.24|
000018  f7fffffe          BL       LISTBOX_OwnerDraw
00001c  e7fa              B        |L20.20|
;;;133    
                          ENDP


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

                  _GetContentsSizeX PROC
;;;220    */
;;;221    static int _GetContentsSizeX(LISTBOX_Handle hObj) {
000000  e92d4ff8          PUSH     {r3-r11,lr}
000004  4683              MOV      r11,r0
;;;222      LISTBOX_Obj* pObj;
;;;223      int i, NumItems, SizeX;
;;;224      int Result = 0;
000006  2700              MOVS     r7,#0
;;;225      pObj = LISTBOX_H2P(hObj);
000008  f7fffffe          BL       GUI_ALLOC_h2p
00000c  4680              MOV      r8,r0
00000e  3028              ADDS     r0,r0,#0x28
000010  9000              STR      r0,[sp,#0]
000012  f7fffffe          BL       GUI_ARRAY_GetNumItems
;;;226      NumItems = LISTBOX__GetNumItems(pObj);
000016  4681              MOV      r9,r0
;;;227      for (i = 0; i < NumItems; i++) {
000018  2600              MOVS     r6,#0
00001a  e01c              B        |L21.86|
                  |L21.28|
00001c  4631              MOV      r1,r6
00001e  9800              LDR      r0,[sp,#0]
000020  f7fffffe          BL       GUI_ARRAY_GetpItem
000024  0004              MOVS     r4,r0
000026  d001              BEQ      |L21.44|
000028  8825              LDRH     r5,[r4,#0]
00002a  b975              CBNZ     r5,|L21.74|
                  |L21.44|
00002c  f8d80048          LDR      r0,[r8,#0x48]
000030  f7fffffe          BL       GUI_SetFont
000034  4682              MOV      r10,r0
000036  4633              MOV      r3,r6
000038  2201              MOVS     r2,#1
00003a  4641              MOV      r1,r8
00003c  4658              MOV      r0,r11
00003e  f7fffffe          BL       _CallOwnerDraw
000042  4605              MOV      r5,r0
000044  4650              MOV      r0,r10
000046  f7fffffe          BL       GUI_SetFont
                  |L21.74|
00004a  b104              CBZ      r4,|L21.78|
00004c  8025              STRH     r5,[r4,#0]
                  |L21.78|
;;;228        SizeX = _GetItemSizeX(hObj, pObj, i);
;;;229        if (Result < SizeX) {
00004e  42af              CMP      r7,r5
000050  da00              BGE      |L21.84|
;;;230          Result = SizeX;
000052  462f              MOV      r7,r5
                  |L21.84|
000054  1c76              ADDS     r6,r6,#1              ;227
                  |L21.86|
000056  454e              CMP      r6,r9                 ;227
000058  dbe0              BLT      |L21.28|
;;;231        }
;;;232      }
;;;233      return Result;
00005a  4638              MOV      r0,r7
;;;234    }
00005c  e8bd8ff8          POP      {r3-r11,pc}
;;;235    
                          ENDP


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

                  _GetItemPosY PROC
;;;239    */
;;;240    static int _GetItemPosY(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, unsigned Index) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4680              MOV      r8,r0
000006  460f              MOV      r7,r1
000008  4616              MOV      r6,r2
00000a  f1010028          ADD      r0,r1,#0x28
00000e  f7fffffe          BL       GUI_ARRAY_GetNumItems
;;;241      if (Index < LISTBOX__GetNumItems(pObj)) {
000012  42b0              CMP      r0,r6
000014  d910              BLS      |L22.56|
;;;242        if ((int)Index >= pObj->ScrollStateV.v) {
000016  6b7c              LDR      r4,[r7,#0x34]
000018  42b4              CMP      r4,r6
00001a  dc0d              BGT      |L22.56|
;;;243          unsigned i;
;;;244          int PosY = 0;
00001c  2500              MOVS     r5,#0
;;;245          for (i = pObj->ScrollStateV.v; i < Index; i++) {
00001e  e006              B        |L22.46|
                  |L22.32|
;;;246            PosY += _GetItemSizeY(hObj, pObj, i);
000020  4622              MOV      r2,r4
000022  4639              MOV      r1,r7
000024  4640              MOV      r0,r8
000026  f7fffffe          BL       _GetItemSizeY
00002a  4405              ADD      r5,r5,r0
00002c  1c64              ADDS     r4,r4,#1              ;245
                  |L22.46|
00002e  42b4              CMP      r4,r6                 ;245
000030  d3f6              BCC      |L22.32|
;;;247          }
;;;248          return PosY;
000032  4628              MOV      r0,r5
                  |L22.52|
;;;249        }
;;;250      }
;;;251      return -1;
;;;252    }
000034  e8bd81f0          POP      {r4-r8,pc}
                  |L22.56|
000038  f04f30ff          MOV      r0,#0xffffffff        ;251
00003c  e7fa              B        |L22.52|
;;;253    
                          ENDP


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

                  _GetItemSizeY PROC
;;;197    */
;;;198    static int _GetItemSizeY(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, unsigned Index) {
000000  e92d47f0          PUSH     {r4-r10,lr}
000004  460e              MOV      r6,r1
000006  4680              MOV      r8,r0
000008  4691              MOV      r9,r2
;;;199      LISTBOX_ITEM* pItem;
;;;200      int ySize = 0;
;;;201      pItem = (LISTBOX_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, Index);
00000a  4611              MOV      r1,r2
00000c  f1060028          ADD      r0,r6,#0x28
000010  f7fffffe          BL       GUI_ARRAY_GetpItem
000014  0004              MOVS     r4,r0
;;;202      if (pItem) {
000016  d001              BEQ      |L23.28|
;;;203        ySize = pItem->ySize;
000018  8865              LDRH     r5,[r4,#2]
;;;204      }
;;;205      if (ySize == 0) {
00001a  b96d              CBNZ     r5,|L23.56|
                  |L23.28|
;;;206        const GUI_FONT GUI_UNI_PTR* pOldFont;
;;;207        pOldFont = GUI_SetFont(pObj->Props.pFont);
00001c  6cb0              LDR      r0,[r6,#0x48]
00001e  f7fffffe          BL       GUI_SetFont

⌨️ 快捷键说明

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