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

📄 menu.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00002c  e8bd4070          POP      {r4-r6,lr}
000030  f7ffbffe          B.W      WM_InvalidateWindow
;;;1068   }
;;;1069   
                          ENDP


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

                  MENU__SendMenuMessage PROC
;;;1110   */
;;;1111   int MENU__SendMenuMessage(MENU_Handle hObj, WM_HWIN hDestWin, U16 MsgType, U16 ItemId) {
000000  b57f              PUSH     {r0-r6,lr}
000002  4615              MOV      r5,r2
000004  4604              MOV      r4,r0
;;;1112     MENU_MSG_DATA MsgData;
;;;1113     WM_MESSAGE    Msg = {0};
000006  f04f0200          MOV      r2,#0
00000a  0008              MOVS     r0,r1                 ;1111
00000c  461e              MOV      r6,r3                 ;1111
00000e  4669              MOV      r1,sp
000010  4613              MOV      r3,r2
000012  4694              MOV      r12,r2
000014  e881100c          STM      r1,{r2,r3,r12}
;;;1114     MsgData.MsgType   = MsgType;
;;;1115     MsgData.ItemId    = ItemId;
;;;1116     Msg.MsgId         = WM_MENU;
000018  f04f012c          MOV      r1,#0x2c
;;;1117     Msg.Data.p        = &MsgData;
00001c  9100              STR      r1,[sp,#0]
00001e  f8ad500c          STRH     r5,[sp,#0xc]          ;1114
000022  a903              ADD      r1,sp,#0xc
000024  f8ad600e          STRH     r6,[sp,#0xe]          ;1115
;;;1118     Msg.hWinSrc       = hObj;
000028  9102              STR      r1,[sp,#8]
00002a  f8ad4006          STRH     r4,[sp,#6]
;;;1119     if (!hDestWin) {
00002e  d104              BNE      |L8.58|
;;;1120       hDestWin = WM_GetParent(hObj);
000030  4620              MOV      r0,r4
000032  f7fffffe          BL       WM_GetParent
;;;1121     }
;;;1122     if (hDestWin) {
000036  2800              CMP      r0,#0
000038  d003              BEQ      |L8.66|
                  |L8.58|
;;;1123       WM__SendMessage(hDestWin, &Msg);
00003a  4669              MOV      r1,sp
00003c  f7fffffe          BL       WM__SendMessage
;;;1124       return Msg.Data.v;
000040  9802              LDR      r0,[sp,#8]
                  |L8.66|
;;;1125     }
;;;1126     return 0;
;;;1127   }
000042  b004              ADD      sp,sp,#0x10
000044  bd70              POP      {r4-r6,pc}
;;;1128   
                          ENDP


                          AREA ||i.MENU__SetItem||, CODE, READONLY, ALIGN=2

                  MENU__SetItem PROC
;;;1073   */
;;;1074   char MENU__SetItem(MENU_Handle hObj, MENU_Obj* pObj, unsigned Index, const MENU_ITEM_DATA* pItemData) {
000000  e92d47ff          PUSH     {r0-r10,lr}
000004  460d              MOV      r5,r1
;;;1075     MENU_ITEM Item = {0};
000006  2100              MOVS     r1,#0
000008  4681              MOV      r9,r0                 ;1074
00000a  4690              MOV      r8,r2                 ;1074
00000c  4618              MOV      r0,r3                 ;1074
00000e  466c              MOV      r4,sp
000010  460a              MOV      r2,r1
000012  460b              MOV      r3,r1
000014  460e              MOV      r6,r1
000016  c44e              STM      r4!,{r1-r3,r6}
;;;1076     const char* pText;
;;;1077     pText = pItemData->pText;
;;;1078     if (!pText) {
000018  6804              LDR      r4,[r0,#0]
00001a  b904              CBNZ     r4,|L9.30|
;;;1079       pText = "";
00001c  a41e              ADR      r4,|L9.152|
                  |L9.30|
;;;1080     }
;;;1081     Item.Id        = pItemData->Id;
00001e  8881              LDRH     r1,[r0,#4]
000020  f8ad1002          STRH     r1,[sp,#2]
;;;1082     Item.Flags     = pItemData->Flags;
000024  88c1              LDRH     r1,[r0,#6]
000026  f8ad1004          STRH     r1,[sp,#4]
;;;1083     Item.hSubmenu  = pItemData->hSubmenu;
00002a  8900              LDRH     r0,[r0,#8]
00002c  f8ad0000          STRH     r0,[sp,#0]
000030  2600              MOVS     r6,#0
000032  b154              CBZ      r4,|L9.74|
000034  6d68              LDR      r0,[r5,#0x54]
000036  f7fffffe          BL       GUI_SetFont
00003a  4607              MOV      r7,r0
00003c  4620              MOV      r0,r4
00003e  f7fffffe          BL       GUI_GetStringDistX
000042  4606              MOV      r6,r0
000044  4638              MOV      r0,r7
000046  f7fffffe          BL       GUI_SetFont
                  |L9.74|
;;;1084     Item.TextWidth = _CalcTextWidth(pObj, pText);
;;;1085     if (Item.Flags & MENU_IF_SEPARATOR) {
00004a  f8bd0004          LDRH     r0,[sp,#4]
00004e  9602              STR      r6,[sp,#8]
000050  0780              LSLS     r0,r0,#30
000052  d502              BPL      |L9.90|
;;;1086       Item.hSubmenu = 0;   /* Ensures that no separator is a submenu */
000054  2000              MOVS     r0,#0
000056  f8ad0000          STRH     r0,[sp,#0]
                  |L9.90|
;;;1087     }
;;;1088     if (GUI_ARRAY_SetItem(&pObj->ItemArray, Index, &Item, sizeof(MENU_ITEM) + strlen(pText)) != 0) {
00005a  4620              MOV      r0,r4
00005c  f7fffffe          BL       strlen
000060  f1000310          ADD      r3,r0,#0x10
000064  f1050058          ADD      r0,r5,#0x58
000068  466a              MOV      r2,sp
00006a  4641              MOV      r1,r8
00006c  4605              MOV      r5,r0
00006e  f7fffffe          BL       GUI_ARRAY_SetItem
000072  2800              CMP      r0,#0
000074  d00d              BEQ      |L9.146|
;;;1089       MENU_ITEM* pItem = (MENU_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, Index);
000076  4641              MOV      r1,r8
000078  4628              MOV      r0,r5
00007a  f7fffffe          BL       GUI_ARRAY_GetpItem
;;;1090       strcpy(pItem->acText, pText);
00007e  4621              MOV      r1,r4
000080  300c              ADDS     r0,r0,#0xc
000082  f7fffffe          BL       strcpy
;;;1091       MENU_SetOwner(Item.hSubmenu, hObj);
000086  f9bd0000          LDRSH    r0,[sp,#0]
00008a  4649              MOV      r1,r9
00008c  f7fffffe          BL       MENU_SetOwner
;;;1092       return 1;
000090  2001              MOVS     r0,#1
                  |L9.146|
;;;1093     }
;;;1094     return 0;
;;;1095   }
000092  b004              ADD      sp,sp,#0x10
000094  e8bd87f0          POP      {r4-r10,pc}
;;;1096   
                          ENDP

                  |L9.152|
000098  00                DCB      0
000099  00                DCB      0
00009a  00                DCB      0
00009b  00                DCB      0

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

                  MENU__SetItemFlags PROC
;;;1100   */
;;;1101   void MENU__SetItemFlags(MENU_Obj* pObj, unsigned Index, U16 Mask, U16 Flags) {
000000  b570              PUSH     {r4-r6,lr}
000002  4614              MOV      r4,r2
000004  461d              MOV      r5,r3
;;;1102     MENU_ITEM* pItem = (MENU_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, Index);
000006  3058              ADDS     r0,r0,#0x58
000008  f7fffffe          BL       GUI_ARRAY_GetpItem
;;;1103     pItem->Flags &= ~Mask;
00000c  8881              LDRH     r1,[r0,#4]
00000e  43a1              BICS     r1,r1,r4
;;;1104     pItem->Flags |= Flags;
000010  b289              UXTH     r1,r1
000012  4329              ORRS     r1,r1,r5
000014  8081              STRH     r1,[r0,#4]
;;;1105   }
000016  bd70              POP      {r4-r6,pc}
;;;1106   
                          ENDP


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

                  _CalcMenuSizeX PROC
;;;278    */
;;;279    static int _CalcMenuSizeX(MENU_Handle hObj, MENU_Obj* pObj) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4680              MOV      r8,r0
000006  460f              MOV      r7,r1
000008  f1010058          ADD      r0,r1,#0x58
00000c  f7fffffe          BL       GUI_ARRAY_GetNumItems
;;;280      unsigned i, NumItems = MENU__GetNumItems(pObj);
000010  4606              MOV      r6,r0
;;;281      int xSize = 0;
000012  2400              MOVS     r4,#0
;;;282      if (pObj->Flags & MENU_SF_VERTICAL) {
000014  f8b7005e          LDRH     r0,[r7,#0x5e]
;;;283        int ItemWidth;
;;;284        for (i = 0; i < NumItems; i++) {
000018  4625              MOV      r5,r4
00001a  07c0              LSLS     r0,r0,#31             ;282
00001c  d00c              BEQ      |L11.56|
00001e  e008              B        |L11.50|
                  |L11.32|
;;;285          ItemWidth = _GetItemWidth(hObj, pObj, i);
000020  462a              MOV      r2,r5
000022  4639              MOV      r1,r7
000024  4640              MOV      r0,r8
000026  f7fffffe          BL       _GetItemWidth
;;;286          if (ItemWidth > xSize) {
00002a  42a0              CMP      r0,r4
00002c  dd00              BLE      |L11.48|
;;;287            xSize = ItemWidth;
00002e  4604              MOV      r4,r0
                  |L11.48|
000030  1c6d              ADDS     r5,r5,#1              ;284
                  |L11.50|
000032  42b5              CMP      r5,r6                 ;284
000034  d3f4              BCC      |L11.32|
000036  e009              B        |L11.76|
                  |L11.56|
;;;288          }
;;;289        }
;;;290      } else {
;;;291        for (i = 0; i < NumItems; i++) {
000038  e006              B        |L11.72|
                  |L11.58|
;;;292          xSize += _GetItemWidth(hObj, pObj, i);
00003a  462a              MOV      r2,r5
00003c  4639              MOV      r1,r7
00003e  4640              MOV      r0,r8
000040  f7fffffe          BL       _GetItemWidth
000044  4404              ADD      r4,r4,r0
000046  1c6d              ADDS     r5,r5,#1              ;291
                  |L11.72|
000048  42b5              CMP      r5,r6                 ;291
00004a  d3f6              BCC      |L11.58|
                  |L11.76|
;;;293        }
;;;294      }
;;;295      xSize += (_GetEffectSize(hObj, pObj) << 1);
00004c  4639              MOV      r1,r7
00004e  4640              MOV      r0,r8
000050  f7fffffe          BL       _GetEffectSize
000054  eb040040          ADD      r0,r4,r0,LSL #1
;;;296      return xSize;
;;;297    }
000058  e8bd81f0          POP      {r4-r8,pc}
;;;298    
                          ENDP


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

                  _CalcMenuSizeY PROC
;;;302    */
;;;303    static int _CalcMenuSizeY(MENU_Handle hObj, MENU_Obj* pObj) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4680              MOV      r8,r0
000006  460f              MOV      r7,r1
000008  f1010058          ADD      r0,r1,#0x58
00000c  f7fffffe          BL       GUI_ARRAY_GetNumItems
;;;304      unsigned i, NumItems = MENU__GetNumItems(pObj);
000010  4606              MOV      r6,r0
;;;305      int ySize = 0;
000012  2400              MOVS     r4,#0
;;;306      if (pObj->Flags & MENU_SF_VERTICAL) {
000014  f8b7005e          LDRH     r0,[r7,#0x5e]
;;;307        for (i = 0; i < NumItems; i++) {
000018  4625              MOV      r5,r4
00001a  07c0              LSLS     r0,r0,#31             ;306
00001c  d00a              BEQ      |L12.52|
00001e  e006              B        |L12.46|
                  |L12.32|
;;;308          ySize += _GetItemHeight(hObj, pObj, i);
000020  462a              MOV      r2,r5
000022  4639              MOV      r1,r7
000024  4640              MOV      r0,r8
000026  f7fffffe          BL       _GetItemHeight
00002a  4404              ADD      r4,r4,r0
00002c  1c6d              ADDS     r5,r5,#1              ;307
                  |L12.46|
00002e  42b5              CMP      r5,r6                 ;307
000030  d3f6              BCC      |L12.32|
000032  e00b              B        |L12.76|
                  |L12.52|
;;;309        }
;;;310      } else {
;;;311        int ItemHeight;
;;;312        for (i = 0; i < NumItems; i++) {
000034  e008              B        |L12.72|
                  |L12.54|
;;;313          ItemHeight = _GetItemHeight(hObj, pObj, i);
000036  462a              MOV      r2,r5
000038  4639              MOV      r1,r7
00003a  4640              MOV      r0,r8
00003c  f7fffffe          BL       _GetItemHeight
;;;314          if (ItemHeight > ySize) {
000040  42a0              CMP      r0,r4
000042  dd00              BLE      |L12.70|
;;;315            ySize = ItemHeight;
000044  4604              MOV      r4,r0
                  |L12.70|
000046  1c6d              ADDS     r5,r5,#1              ;312
                  |L12.72|
000048  42b5              CMP      r5,r6                 ;312
00004a  d3f4              BCC      |L12.54|
                  |L12.76|
;;;316          }
;;;317        }
;;;318      }

⌨️ 快捷键说明

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