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

📄 framewin.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
00005c  4668              MOV      r0,sp                 ;354
00005e  c00e              STM      r0!,{r1-r3}           ;354
000060  f8ad7004          STRH     r7,[sp,#4]            ;355
000064  4668              MOV      r0,sp                 ;356
000066  47b0              BLX      r6                    ;356
                  |L9.104|
;;;385      case WM_GET_INSIDE_RECT:        /* This should not be passed to parent ... (We do not want parents coordinates)*/
;;;386      case WM_GET_ID:                 /* This should not be passed to parent ... (Possible recursion problem)*/
;;;387      case WM_GET_CLIENT_WINDOW:      /* return handle to client window. For most windows, there is no seperate client window, so it is the same handle */
;;;388        WM_DefaultProc(pMsg);
;;;389        return;                       /* We are done ! */
;;;390      }
;;;391      /* Call user callback. Note that the user callback gets the handle of the Framewindow itself, NOT the Client. */
;;;392      if (cb) {
;;;393        pMsg->hWin = hParent;
;;;394        (*cb)(pMsg);
;;;395      } else {
;;;396        WM_DefaultProc(pMsg);
;;;397      }
;;;398    }
000068  e8bd83fe          POP      {r1-r9,pc}
                  |L9.108|
00006c  68a0              LDR      r0,[r4,#8]            ;360
00006e  2800              CMP      r0,#0                 ;360
000070  d0fa              BEQ      |L9.104|
000072  f9b5005e          LDRSH    r0,[r5,#0x5e]         ;361
000076  b120              CBZ      r0,|L9.130|
000078  42b8              CMP      r0,r7                 ;361
00007a  d002              BEQ      |L9.130|
00007c  f7fffffe          BL       WM_SetFocus
000080  e004              B        |L9.140|
                  |L9.130|
000082  4638              MOV      r0,r7                 ;364
000084  f7fffffe          BL       WM_SetFocusOnNextChild
000088  f8a5005e          STRH     r0,[r5,#0x5e]         ;364
                  |L9.140|
00008c  2000              MOVS     r0,#0                 ;366
                  |L9.142|
00008e  60a0              STR      r0,[r4,#8]            ;366
000090  e7ea              B        |L9.104|
                  |L9.146|
000092  4621              MOV      r1,r4                 ;370
000094  4640              MOV      r0,r8                 ;370
000096  b003              ADD      sp,sp,#0xc            ;370
000098  e8bd43f0          POP      {r4-r9,lr}            ;370
00009c  f7ffbffe          B.W      WIDGET_HandleActive
                  |L9.160|
0000a0  68a0              LDR      r0,[r4,#8]            ;373
0000a2  6841              LDR      r1,[r0,#4]            ;373
0000a4  2900              CMP      r1,#0                 ;373
0000a6  dd08              BLE      |L9.186|
0000a8  6800              LDR      r0,[r0,#0]            ;374
0000aa  2809              CMP      r0,#9                 ;375
0000ac  d105              BNE      |L9.186|
0000ae  4638              MOV      r0,r7                 ;377
0000b0  f7fffffe          BL       WM_SetFocusOnNextChild
0000b4  f8a5005e          STRH     r0,[r5,#0x5e]         ;377
0000b8  e7d6              B        |L9.104|
                  |L9.186|
0000ba  b13e              CBZ      r6,|L9.204|
0000bc  f8a48004          STRH     r8,[r4,#4]            ;393
0000c0  4620              MOV      r0,r4                 ;394
0000c2  46b4              MOV      r12,r6                ;394
0000c4  b003              ADD      sp,sp,#0xc            ;394
0000c6  e8bd43f0          POP      {r4-r9,lr}            ;394
0000ca  4760              BX       r12                   ;394
                  |L9.204|
0000cc  4620              MOV      r0,r4                 ;396
0000ce  e8bd43fe          POP      {r1-r9,lr}            ;396
0000d2  f7ffbffe          B.W      WM_DefaultProc
;;;399    
                          ENDP


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

                  _FRAMEWIN_Callback PROC
;;;245    */
;;;246    static void _FRAMEWIN_Callback (WM_MESSAGE *pMsg) {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;247      FRAMEWIN_Handle hWin = (FRAMEWIN_Handle)(pMsg->hWin);
000004  f9b06004          LDRSH    r6,[r0,#4]
000008  4605              MOV      r5,r0                 ;246
00000a  b088              SUB      sp,sp,#0x20           ;246
;;;248      FRAMEWIN_Obj* pObj = FRAMEWIN_H2P(hWin);
00000c  4630              MOV      r0,r6
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  4604              MOV      r4,r0
;;;249      GUI_RECT* pRect = (GUI_RECT*)(pMsg->Data.p);
;;;250      POSITIONS Pos;
;;;251      GUI_HOOK* pHook;
;;;252      /* Call hook functions */
;;;253      for (pHook = pObj->pFirstHook; pHook; pHook = pHook->pNext) {
000014  f8d58008          LDR      r8,[r5,#8]
000018  6e47              LDR      r7,[r0,#0x64]
00001a  e005              B        |L10.40|
                  |L10.28|
;;;254        int r;
;;;255        r = (*pHook->pHookFunc)(pMsg);
00001c  6879              LDR      r1,[r7,#4]
00001e  4628              MOV      r0,r5
000020  4788              BLX      r1
;;;256        if (r) {
000022  2800              CMP      r0,#0
000024  d128              BNE      |L10.120|
000026  683f              LDR      r7,[r7,#0]            ;253
                  |L10.40|
000028  2f00              CMP      r7,#0                 ;253
00002a  d1f7              BNE      |L10.28|
;;;257          return;   /* Message handled */
;;;258        }
;;;259      }
;;;260      switch (pMsg->MsgId) {
00002c  6828              LDR      r0,[r5,#0]
00002e  2817              CMP      r0,#0x17
000030  d045              BEQ      |L10.190|
000032  dc32              BGT      |L10.154|
000034  280d              CMP      r0,#0xd
000036  d075              BEQ      |L10.292|
000038  dc21              BGT      |L10.126|
00003a  280b              CMP      r0,#0xb
00003c  d071              BEQ      |L10.290|
00003e  280c              CMP      r0,#0xc
000040  d13c              BNE      |L10.188|
000042  68ad              LDR      r5,[r5,#8]
000044  2d00              CMP      r5,#0
000046  d017              BEQ      |L10.120|
000048  7a28              LDRB     r0,[r5,#8]
00004a  2800              CMP      r0,#0
00004c  d014              BEQ      |L10.120|
00004e  f8b4005c          LDRH     r0,[r4,#0x5c]
000052  0700              LSLS     r0,r0,#28
000054  d402              BMI      |L10.92|
000056  4630              MOV      r0,r6
000058  f7fffffe          BL       WM_SetFocus
                  |L10.92|
00005c  4630              MOV      r0,r6
00005e  f7fffffe          BL       WM_BringToTop
000062  f8b4005c          LDRH     r0,[r4,#0x5c]
000066  06c0              LSLS     r0,r0,#27
000068  d506              BPL      |L10.120|
00006a  4849              LDR      r0,|L10.400|
00006c  4629              MOV      r1,r5
00006e  f9b02000          LDRSH    r2,[r0,#0]  ; FRAMEWIN__MinVisibility
000072  4630              MOV      r0,r6
000074  f7fffffe          BL       WM_SetCaptureMove
                  |L10.120|
;;;261      case WM_HANDLE_DIALOG_STATUS:
;;;262        if (pMsg->Data.p) {                           /* set pointer to Dialog status */
;;;263          pObj->pDialogStatus = (WM_DIALOG_STATUS*)pMsg->Data.p;
;;;264        } else {                                      /* return pointer to Dialog status */
;;;265          pMsg->Data.p = pObj->pDialogStatus;      
;;;266        }
;;;267        return;
;;;268      case WM_PAINT:
;;;269        _Paint(pObj);
;;;270        break;
;;;271      case WM_TOUCH:
;;;272        _OnTouch(hWin, pObj, pMsg);
;;;273        return;                       /* Return here ... Message handled */
;;;274      case WM_GET_INSIDE_RECT:
;;;275        FRAMEWIN__CalcPositions(pObj, &Pos);
;;;276    		*pRect = Pos.rClient;
;;;277        return;                       /* Return here ... Message handled */
;;;278      case WM_GET_CLIENT_WINDOW:      /* return handle to client window. For most windows, there is no seperate client window, so it is the same handle */
;;;279        pMsg->Data.v = (int)pObj->hClient;
;;;280        return;                       /* Return here ... Message handled */
;;;281      case WM_NOTIFY_PARENT:
;;;282        if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) {
;;;283          WM_MESSAGE Msg;
;;;284          Msg.hWinSrc = hWin;
;;;285          Msg.Data    = pMsg->Data;
;;;286          Msg.MsgId   = WM_NOTIFY_PARENT_REFLECTION;
;;;287          WM_SendMessage(pMsg->hWinSrc, &Msg);
;;;288        }
;;;289        return;
;;;290      case WM_SET_FOCUS:                 /* We have received or lost focus */
;;;291        if (pMsg->Data.v == 1) {
;;;292          if (WM_IsWindow(pObj->hFocussedChild)) {
;;;293            WM_SetFocus(pObj->hFocussedChild);
;;;294          } else {
;;;295            pObj->hFocussedChild = WM_SetFocusOnNextChild(pObj->hClient);
;;;296          }
;;;297          FRAMEWIN_SetActive(hWin, 1);
;;;298          pMsg->Data.v = 0;              /* Focus could be accepted */
;;;299        } else {
;;;300          FRAMEWIN_SetActive(hWin, 0);
;;;301        }
;;;302        return;
;;;303      case WM_TOUCH_CHILD:
;;;304        /* If a child of this framewindow has been touched and the frame window was not active,
;;;305           the framewindow will receive the focus.
;;;306         */
;;;307        if (!(pObj->Flags & FRAMEWIN_SF_ACTIVE)) {
;;;308          const WM_MESSAGE * pMsgOrg;
;;;309          const GUI_PID_STATE * pState;
;;;310          pMsgOrg = (const WM_MESSAGE*)pMsg->Data.p;      /* The original touch message */
;;;311          pState = (const GUI_PID_STATE*)pMsgOrg->Data.p;
;;;312          if (pState) {          /* Message may not have a valid pointer (moved out) ! */
;;;313            if (pState->Pressed) {
;;;314              WM_SetFocus(hWin);
;;;315            }
;;;316          }
;;;317        }
;;;318        break;
;;;319      case WM_NOTIFY_CHILD_HAS_FOCUS:
;;;320        _OnChildHasFocus(hWin, pObj, pMsg);
;;;321        break;
;;;322      case WM_DELETE:
;;;323        GUI_DEBUG_LOG("FRAMEWIN: _FRAMEWIN_Callback(WM_DELETE)\n");
;;;324        GUI_ALLOC_FreePtr(&pObj->hText);
;;;325        break;
;;;326      }
;;;327      /* Let widget handle the standard messages */
;;;328      if (WIDGET_HandleActive(hWin, pMsg) == 0) {
;;;329        return;
;;;330      }
;;;331      WM_DefaultProc(pMsg);
;;;332    }
000078  b008              ADD      sp,sp,#0x20
00007a  e8bd81f0          POP      {r4-r8,pc}
                  |L10.126|
00007e  280f              CMP      r0,#0xf               ;260
000080  d019              BEQ      |L10.182|
000082  2814              CMP      r0,#0x14              ;260
000084  d17a              BNE      |L10.380|
000086  a903              ADD      r1,sp,#0xc            ;275
000088  4620              MOV      r0,r4                 ;275
00008a  f7fffffe          BL       FRAMEWIN__CalcPositions
00008e  2208              MOVS     r2,#8                 ;276
000090  a904              ADD      r1,sp,#0x10           ;276
000092  4640              MOV      r0,r8                 ;276
000094  f7fffffe          BL       __aeabi_memcpy
                  |L10.152|
000098  e7ee              B        |L10.120|
                  |L10.154|
00009a  281f              CMP      r0,#0x1f              ;260
00009c  d021              BEQ      |L10.226|
00009e  2821              CMP      r0,#0x21              ;260
0000a0  d04d              BEQ      |L10.318|
0000a2  2826              CMP      r0,#0x26              ;260
0000a4  d00e              BEQ      |L10.196|
0000a6  282a              CMP      r0,#0x2a              ;260
0000a8  d168              BNE      |L10.380|
0000aa  68a8              LDR      r0,[r5,#8]            ;262
0000ac  b108              CBZ      r0,|L10.178|
0000ae  6620              STR      r0,[r4,#0x60]         ;263
0000b0  e7e2              B        |L10.120|
                  |L10.178|
0000b2  6e20              LDR      r0,[r4,#0x60]         ;265
0000b4  e02d              B        |L10.274|
                  |L10.182|
0000b6  4620              MOV      r0,r4                 ;269
0000b8  f7fffffe          BL       _Paint
                  |L10.188|
0000bc  e05e              B        |L10.380|
                  |L10.190|
0000be  f9b4004c          LDRSH    r0,[r4,#0x4c]         ;279
0000c2  e026              B        |L10.274|
                  |L10.196|
0000c4  68a8              LDR      r0,[r5,#8]            ;282
0000c6  2802              CMP      r0,#2                 ;282
0000c8  d1d6              BNE      |L10.120|
0000ca  f8ad6006          STRH     r6,[sp,#6]            ;284
0000ce  68a8              LDR      r0,[r5,#8]            ;285
0000d0  9002              STR      r0,[sp,#8]            ;286
0000d2  2027              MOVS     r0,#0x27              ;286
0000d4  9000              STR      r0,[sp,#0]            ;287
0000d6  f9b50006          LDRSH    r0,[r5,#6]            ;287
0000da  4669              MOV      r1,sp                 ;287
0000dc  f7fffffe          BL       WM_SendMessage
0000e0  e7ca              B        |L10.120|
                  |L10.226|
0000e2  68a8              LDR      r0,[r5,#8]            ;291
0000e4  2801              CMP      r0,#1                 ;291
0000e6  d116              BNE      |L10.278|
0000e8  f9b4005e          LDRSH    r0,[r4,#0x5e]         ;292
0000ec  f7fffffe          BL       WM_IsWindow
0000f0  b120              CBZ      r0,|L10.252|
0000f2  f9b4005e          LDRSH    r0,[r4,#0x5e]         ;293
0000f6  f7fffffe          BL       WM_SetFocus
0000fa  e005              B        |L10.264|
                  |L10.252|
0000fc  f9b4004c          LDRSH    r0,[r4,#0x4c]         ;295
000100  f7fffffe          BL       WM_SetFocusOnNextChild
000104  f8a4005e          STRH     r0,[r4,#0x5e]         ;295
                  |L10.264|
000108  2101              MOVS     r1,#1                 ;297
00010a  4630              MOV      r0,r6                 ;297
00010c  f7fffffe          BL       FRAMEWIN_SetActive
000110  2000              MOVS     r0,#0                 ;298

⌨️ 快捷键说明

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