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

📄 menu.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;727        }
;;;728        _DeselectItem(hObj, pObj);
;;;729        _ForwardMouseOverMsg(hObj, pObj, x, y);
;;;730      }
;;;731      return 1;   /* Coordinates are not in widget, we need to forward PID message to owner */
;;;732    }
00011e  b006              ADD      sp,sp,#0x18
000120  e8bd81f0          POP      {r4-r8,pc}
                  |L21.292|
000124  2d01              CMP      r5,#1                 ;720
000126  d10a              BNE      |L21.318|
000128  f89d0014          LDRB     r0,[sp,#0x14]         ;720
00012c  b938              CBNZ     r0,|L21.318|
00012e  4621              MOV      r1,r4                 ;725
000130  4640              MOV      r0,r8                 ;725
000132  f7fffffe          BL       _DeactivateMenu
000136  4621              MOV      r1,r4                 ;726
000138  4640              MOV      r0,r8                 ;726
00013a  f7fffffe          BL       _ClosePopup
                  |L21.318|
00013e  4621              MOV      r1,r4                 ;728
000140  4640              MOV      r0,r8                 ;728
000142  f7fffffe          BL       _DeselectItem
000146  2001              MOVS     r0,#1                 ;731
000148  e7e9              B        |L21.286|
;;;733    
                          ENDP


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

                  _HasEffect PROC
;;;197    */
;;;198    static int _HasEffect(MENU_Handle hObj, MENU_Obj* pObj) {
000000  b510              PUSH     {r4,lr}
;;;199      if (!(pObj->Flags & MENU_SF_POPUP)) {
000002  f8b1205e          LDRH     r2,[r1,#0x5e]
000006  0612              LSLS     r2,r2,#24
000008  d404              BMI      |L22.20|
;;;200        if (_IsTopLevelMenu(hObj, pObj)) {
00000a  f7fffffe          BL       _IsTopLevelMenu
00000e  b108              CBZ      r0,|L22.20|
;;;201          return 0;
000010  2000              MOVS     r0,#0
;;;202        }
;;;203      }
;;;204      return 1;
;;;205    }
000012  bd10              POP      {r4,pc}
                  |L22.20|
000014  2001              MOVS     r0,#1                 ;204
000016  bd10              POP      {r4,pc}
;;;206    
                          ENDP


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

                  _IsTopLevelMenu PROC
;;;186    */
;;;187    static char _IsTopLevelMenu(MENU_Handle hObj, const MENU_Obj* pObj) {
000000  b510              PUSH     {r4,lr}
;;;188      if (MENU__SendMenuMessage(hObj, pObj->hOwner, MENU_IS_MENU, 0) == 0) {
000002  f9b1105c          LDRSH    r1,[r1,#0x5c]
000006  2300              MOVS     r3,#0
000008  2205              MOVS     r2,#5
00000a  f7fffffe          BL       MENU__SendMenuMessage
00000e  b908              CBNZ     r0,|L23.20|
;;;189        return 1;
000010  2001              MOVS     r0,#1
;;;190      }
;;;191      return 0;
;;;192    }
000012  bd10              POP      {r4,pc}
                  |L23.20|
000014  2000              MOVS     r0,#0                 ;191
000016  bd10              POP      {r4,pc}
;;;193    
                          ENDP


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

                  _MENU_Callback PROC
;;;934    */
;;;935    static void _MENU_Callback(WM_MESSAGE* pMsg) {
000000  e92d43f8          PUSH     {r3-r9,lr}
000004  4604              MOV      r4,r0
;;;936      MENU_Handle hObj;
;;;937      MENU_Obj* pObj;
;;;938      hObj = pMsg->hWin;
;;;939      if (pMsg->MsgId != WM_PID_STATE_CHANGED) {
000006  6821              LDR      r1,[r4,#0]
000008  f9b08004          LDRSH    r8,[r0,#4]            ;938
00000c  2911              CMP      r1,#0x11
00000e  d005              BEQ      |L24.28|
;;;940        /* Let widget handle the standard messages */
;;;941        if (WIDGET_HandleActive(hObj, pMsg) == 0) {
000010  4621              MOV      r1,r4
000012  4640              MOV      r0,r8
000014  f7fffffe          BL       WIDGET_HandleActive
000018  2800              CMP      r0,#0
00001a  d05a              BEQ      |L24.210|
                  |L24.28|
;;;942          return;
;;;943        }
;;;944      }
;;;945      pObj = (MENU_Obj*) GUI_ALLOC_h2p(hObj);
00001c  4640              MOV      r0,r8
00001e  f7fffffe          BL       GUI_ALLOC_h2p
;;;946      switch (pMsg->MsgId) {
000022  6821              LDR      r1,[r4,#0]
000024  4605              MOV      r5,r0                 ;945
000026  290b              CMP      r1,#0xb
000028  d04a              BEQ      |L24.192|
00002a  290c              CMP      r1,#0xc
00002c  d00a              BEQ      |L24.68|
00002e  290f              CMP      r1,#0xf
000030  d041              BEQ      |L24.182|
000032  292c              CMP      r1,#0x2c
000034  d148              BNE      |L24.200|
;;;947      case WM_MENU:
;;;948        _OnMenu(hObj, pObj, pMsg);
000036  4622              MOV      r2,r4
000038  4629              MOV      r1,r5
00003a  4640              MOV      r0,r8
00003c  e8bd43f8          POP      {r3-r9,lr}
000040  f7ffbffe          B.W      _OnMenu
                  |L24.68|
000044  68a1              LDR      r1,[r4,#8]
000046  b119              CBZ      r1,|L24.80|
000048  7a0b              LDRB     r3,[r1,#8]
00004a  9300              STR      r3,[sp,#0]
00004c  c90c              LDM      r1!,{r2,r3}
00004e  e003              B        |L24.88|
                  |L24.80|
000050  f04f32ff          MOV      r2,#0xffffffff
000054  4613              MOV      r3,r2
000056  9200              STR      r2,[sp,#0]
                  |L24.88|
000058  4629              MOV      r1,r5
00005a  4640              MOV      r0,r8
00005c  f7fffffe          BL       _HandlePID
;;;949        return;     /* Message handled, do not call WM_DefaultProc() here. */
;;;950      case WM_TOUCH:
;;;951        if (_OnTouch(hObj, pObj, pMsg)) {
000060  b340              CBZ      r0,|L24.180|
000062  4629              MOV      r1,r5
000064  4640              MOV      r0,r8
000066  f7fffffe          BL       _IsTopLevelMenu
00006a  bb18              CBNZ     r0,|L24.180|
00006c  f9b5005c          LDRSH    r0,[r5,#0x5c]
000070  b910              CBNZ     r0,|L24.120|
000072  4640              MOV      r0,r8
000074  f7fffffe          BL       WM_GetParent
                  |L24.120|
000078  0006              MOVS     r6,r0
00007a  d025              BEQ      |L24.200|
00007c  68a5              LDR      r5,[r4,#8]
00007e  b1ad              CBZ      r5,|L24.172|
000080  4640              MOV      r0,r8
000082  f7fffffe          BL       WM_GetWindowOrgX
000086  4607              MOV      r7,r0
000088  4630              MOV      r0,r6
00008a  f7fffffe          BL       WM_GetWindowOrgX
00008e  6829              LDR      r1,[r5,#0]
000090  1a38              SUBS     r0,r7,r0
000092  4408              ADD      r0,r0,r1
000094  6028              STR      r0,[r5,#0]
000096  4640              MOV      r0,r8
000098  f7fffffe          BL       WM_GetWindowOrgY
00009c  4607              MOV      r7,r0
00009e  4630              MOV      r0,r6
0000a0  f7fffffe          BL       WM_GetWindowOrgY
0000a4  6869              LDR      r1,[r5,#4]
0000a6  1a38              SUBS     r0,r7,r0
0000a8  4408              ADD      r0,r0,r1
0000aa  6068              STR      r0,[r5,#4]
                  |L24.172|
0000ac  4621              MOV      r1,r4
0000ae  4630              MOV      r0,r6
0000b0  f7fffffe          BL       WM__SendMessage
                  |L24.180|
0000b4  e008              B        |L24.200|
                  |L24.182|
;;;952          _ForwardPIDMsgToOwner(hObj, pObj, pMsg);
;;;953        }
;;;954        break;
;;;955    #if (GUI_SUPPORT_MOUSE)
;;;956      case WM_MOUSEOVER:
;;;957        if (_OnMouseOver(hObj, pObj, pMsg)) {
;;;958          _ForwardPIDMsgToOwner(hObj, pObj, pMsg);
;;;959        }
;;;960        break;
;;;961    #endif
;;;962      case WM_PAINT:
;;;963        _OnPaint(hObj, pObj);
0000b6  4629              MOV      r1,r5
0000b8  4640              MOV      r0,r8
0000ba  f7fffffe          BL       _OnPaint
;;;964        break;
0000be  e003              B        |L24.200|
                  |L24.192|
;;;965      case WM_DELETE:
;;;966        GUI_ARRAY_Delete(&pObj->ItemArray);
0000c0  f1050058          ADD      r0,r5,#0x58
0000c4  f7fffffe          BL       GUI_ARRAY_Delete
                  |L24.200|
;;;967        break;      /* No return here ... WM_DefaultProc needs to be called */
;;;968      }
;;;969      WM_DefaultProc(pMsg);
0000c8  4620              MOV      r0,r4
0000ca  e8bd43f8          POP      {r3-r9,lr}
0000ce  f7ffbffe          B.W      WM_DefaultProc
                  |L24.210|
;;;970    }
0000d2  e8bd83f8          POP      {r3-r9,pc}
;;;971    
                          ENDP


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

                  _OnMenu PROC
;;;763    */
;;;764    static void _OnMenu(MENU_Handle hObj, MENU_Obj* pObj, WM_MESSAGE* pMsg) {
000000  b570              PUSH     {r4-r6,lr}
000002  4606              MOV      r6,r0
;;;765      const MENU_MSG_DATA* pData = (const MENU_MSG_DATA*)pMsg->Data.p;
;;;766      if (pData) {
000004  6890              LDR      r0,[r2,#8]
000006  460c              MOV      r4,r1                 ;764
000008  4615              MOV      r5,r2                 ;764
00000a  2800              CMP      r0,#0
00000c  d03e              BEQ      |L25.140|
;;;767        switch (pData->MsgType) {
00000e  8800              LDRH     r0,[r0,#0]
000010  2806              CMP      r0,#6
000012  d23b              BCS      |L25.140|
000014  e8dff000          TBB      [pc,r0]
000018  030f0f1d          DCB      0x03,0x0f,0x0f,0x1d
00001c  3238              DCB      0x32,0x38
;;;768        case MENU_ON_ITEMSELECT:
;;;769          _DeactivateMenu(hObj, pObj);
00001e  4621              MOV      r1,r4
000020  4630              MOV      r0,r6
000022  f7fffffe          BL       _DeactivateMenu
;;;770          _DeselectItem(hObj, pObj);
000026  4621              MOV      r1,r4
000028  4630              MOV      r0,r6
00002a  f7fffffe          BL       _DeselectItem
;;;771          _ClosePopup(hObj, pObj);
00002e  4621              MOV      r1,r4
000030  4630              MOV      r0,r6
000032  f7fffffe          BL       _ClosePopup
;;;772          /* No break here. We need to forward message to owner. */
;;;773        case MENU_ON_INITMENU:
;;;774        case MENU_ON_INITSUBMENU:
;;;775          /* Forward message to owner. */
;;;776          {
;;;777            WM_HWIN hOwner;
;;;778            hOwner = pObj->hOwner ? pObj->hOwner : WM_GetParent(hObj);
000036  f9b4005c          LDRSH    r0,[r4,#0x5c]
00003a  b910              CBNZ     r0,|L25.66|
00003c  4630              MOV      r0,r6
00003e  f7fffffe          BL       WM_GetParent
                  |L25.66|
;;;779            if (hOwner) {
000042  2800              CMP      r0,#0
000044  d022              BEQ      |L25.140|
;;;780              pMsg->hWinSrc = hObj;
000046  80ee              STRH     r6,[r5,#6]
;;;781              WM__SendMessage(hOwner, pMsg);
000048  4629              MOV      r1,r5
00004a  e8bd4070          POP      {r4-r6,lr}
00004e  f7ffbffe          B.W      WM__SendMessage
;;;782            }
;;;783          }
;;;784          break;
;;;785        case MENU_ON_OPEN:
;;;786          pObj->Sel = -1;
000052  f04f30ff          MOV      r0,#0xffffffff
000056  345c              ADDS     r4,r4,#0x5c
;;;787          pObj->IsSubmenuActive = 0;
000058  6120              STR      r0,[r4,#0x10]
00005a  2000              MOVS     r0,#0
00005c  7120              STRB     r0,[r4,#4]
;;;788          pObj->Flags |= MENU_SF_ACTIVE | MENU_SF_OPEN_ON_POINTEROVER;
00005e  8860              LDRH     r0,[r4,#2]
000060  f0400042          ORR      r0,r0,#0x42
000064  8060              STRH     r0,[r4,#2]
000066  3c5c              SUBS     r4,r4,#0x5c
;;;789          _SetCapture(hObj, pObj);
000068  4621              MOV      r1,r4
00006a  4630              MOV      r0,r6
00006c  f7fffffe          BL       _SetCapture
;;;790          MENU__ResizeMenu(hObj, pObj);
000070  4621              MOV      r1,r4
000072  4630              MOV      r0,r6
000074  e8bd4070          POP      {r4-r6,lr}
000078  f7ffbffe          B.W      MENU__ResizeMenu
;;;791          break;
;;;792        case MENU_ON_CLOSE:
;;;793          _CloseSubmenu(hObj, pObj);
00007c  4621              MOV      r1,r4
00007e  4630              MOV      r0,r6
000080  e8bd4070          POP      {r4-r6,lr}
000084  f7ffbffe          B.W      _CloseSubmenu
;;;794          break;
;;;795        case MENU_IS_MENU:
;;;796          pMsg->Data.v = 1;
000088  2001              MOVS

⌨️ 快捷键说明

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