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

📄 wmtouch.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000110  80ae              STRH     r6,[r5,#4]
                  |L1.274|
;;;209              }
;;;210              Msg.Data.p = (void*)&State;
;;;211              WM__SendTouchMessage(CHWin.hWin, &Msg);
000112  f9bd002c          LDRSH    r0,[sp,#0x2c]
000116  f8cd8038          STR      r8,[sp,#0x38]
00011a  a90c              ADD      r1,sp,#0x30
00011c  f7fffffe          BL       WM__SendTouchMessage
                  |L1.288|
;;;212            }
;;;213          }
;;;214          /*
;;;215           * Send WM_MOUSEOVER message
;;;216           */
;;;217          #if GUI_SUPPORT_MOUSE
;;;218          else {
;;;219            /* Send WM_MOUSEOVER Message */
;;;220            if (CHWin.hWin) {
;;;221              /* Do not send messages to disabled windows */
;;;222              if (WM__IsEnabled(CHWin.hWin)) {
;;;223                State      = StateNew;
;;;224                Msg.MsgId  = WM_MOUSEOVER;
;;;225                Msg.Data.p = (void*)&State;
;;;226                WM__SendTouchMessage(CHWin.hWin, &Msg);
;;;227              }
;;;228            }
;;;229          }
;;;230          #endif
;;;231        }
;;;232        /* Store the new state */
;;;233        WM_PID__StateLast = StateNew;
000120  4648              MOV      r0,r9
000122  c80e              LDM      r0!,{r1-r3}
000124  c40e              STM      r4!,{r1-r3}
                  |L1.294|
;;;234      }
;;;235      WM__RemoveCriticalHandle(&CHWin);
000126  a80a              ADD      r0,sp,#0x28
000128  f7fffffe          BL       WM__RemoveCriticalHandle
;;;236      WM_UNLOCK();
;;;237      return r;
00012c  4638              MOV      r0,r7
;;;238    }
00012e  b00f              ADD      sp,sp,#0x3c
000130  e8bd83f0          POP      {r4-r9,pc}
;;;239    
                          ENDP

                  |L1.308|
                          DCD      WM_PID__StateLast
                  |L1.312|
                          DCD      WM__hCapture
                  |L1.316|
                          DCD      ||.data||+0x8
                  |L1.320|
                          DCD      WM__CaptureReleaseAuto

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

                  WM__IsInModalArea PROC
;;;45     */
;;;46     int WM__IsInModalArea(WM_HWIN hWin) {
000000  b570              PUSH     {r4-r6,lr}
;;;47       if ((WM__CHWinModal.hWin == 0) || WM__IsAncestor(hWin, WM__CHWinModal.hWin) || (hWin == WM__CHWinModal.hWin)) {
000002  4c09              LDR      r4,|L2.40|
000004  4605              MOV      r5,r0                 ;46
000006  88a0              LDRH     r0,[r4,#4]  ; WM__CHWinModal
000008  b148              CBZ      r0,|L2.30|
00000a  f9b41004          LDRSH    r1,[r4,#4]  ; WM__CHWinModal
00000e  4628              MOV      r0,r5
000010  f7fffffe          BL       WM__IsAncestor
000014  b918              CBNZ     r0,|L2.30|
000016  f9b40004          LDRSH    r0,[r4,#4]  ; WM__CHWinModal
00001a  42a8              CMP      r0,r5
00001c  d101              BNE      |L2.34|
                  |L2.30|
;;;48         return 1;
00001e  2001              MOVS     r0,#1
;;;49       }
;;;50       return 0;
;;;51     }
000020  bd70              POP      {r4-r6,pc}
                  |L2.34|
000022  2000              MOVS     r0,#0                 ;50
000024  bd70              POP      {r4-r6,pc}
;;;52     
                          ENDP

000026  0000              DCW      0x0000
                  |L2.40|
                          DCD      ||.data||

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

                  WM__SendPIDMessage PROC
;;;62     */
;;;63     void WM__SendPIDMessage(WM_HWIN hWin, WM_MESSAGE* pMsg) {
000000  b53e              PUSH     {r1-r5,lr}
000002  460c              MOV      r4,r1
;;;64       WM_MESSAGE Msg;
;;;65       /* Send message to the affected window */
;;;66       Msg = *pMsg;                 /* Save message as it may be modified in callback (as return value) */
000004  c90e              LDM      r1,{r1-r3}
000006  4605              MOV      r5,r0                 ;63
000008  4668              MOV      r0,sp
00000a  c00e              STM      r0!,{r1-r3}
;;;67       WM__SendMessageIfEnabled(hWin, &Msg);
00000c  4669              MOV      r1,sp
00000e  4628              MOV      r0,r5
000010  f7fffffe          BL       WM__SendMessageIfEnabled
;;;68       /* Send notification to all ancestors.
;;;69          We need to check if the window which has received the last message still exists,
;;;70          since it may have deleted itself and its parent as result of the message.
;;;71       */
;;;72       Msg.hWinSrc = hWin;
;;;73       Msg.MsgId   = WM_TOUCH_CHILD;
000014  200d              MOVS     r0,#0xd
000016  f8ad5006          STRH     r5,[sp,#6]            ;72
;;;74       while (WM_IsWindow(hWin)) {
00001a  9000              STR      r0,[sp,#0]
00001c  e009              B        |L3.50|
                  |L3.30|
;;;75         hWin = WM_GetParent(hWin);
00001e  4628              MOV      r0,r5
000020  f7fffffe          BL       WM_GetParent
000024  0005              MOVS     r5,r0
;;;76         if (hWin) {
000026  d004              BEQ      |L3.50|
;;;77           Msg.Data.p  = pMsg;            /* Needs to be set for each window, as callback is allowed to modify it */
;;;78           WM__SendMessageIfEnabled(hWin, &Msg);    /* Send message to the ancestors */
000028  4669              MOV      r1,sp
00002a  4628              MOV      r0,r5
00002c  9402              STR      r4,[sp,#8]
00002e  f7fffffe          BL       WM__SendMessageIfEnabled
                  |L3.50|
000032  4628              MOV      r0,r5                 ;74
000034  f7fffffe          BL       WM_IsWindow
000038  2800              CMP      r0,#0                 ;74
00003a  d1f0              BNE      |L3.30|
;;;79         }
;;;80       }
;;;81     }
00003c  bd3e              POP      {r1-r5,pc}
;;;82     
                          ENDP


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

                  WM__SendTouchMessage PROC
;;;86     */
;;;87     void WM__SendTouchMessage(WM_HWIN hWin, WM_MESSAGE* pMsg) {
000000  b570              PUSH     {r4-r6,lr}
;;;88       GUI_PID_STATE* pState;
;;;89       pState     = (GUI_PID_STATE*)pMsg->Data.p;
;;;90       if (pState) {
000002  688c              LDR      r4,[r1,#8]
000004  4606              MOV      r6,r0                 ;87
000006  460d              MOV      r5,r1                 ;87
000008  b164              CBZ      r4,|L4.36|
;;;91         WM_Obj* pWin;
;;;92         pWin       = WM_H2P(hWin);
00000a  4630              MOV      r0,r6
00000c  f7fffffe          BL       GUI_ALLOC_h2p
;;;93         pState->x -= pWin->Rect.x0;
000010  f9b02000          LDRSH    r2,[r0,#0]
000014  6821              LDR      r1,[r4,#0]
000016  1a89              SUBS     r1,r1,r2
;;;94         pState->y -= pWin->Rect.y0;
000018  6021              STR      r1,[r4,#0]
00001a  f9b00002          LDRSH    r0,[r0,#2]
00001e  6861              LDR      r1,[r4,#4]
000020  1a08              SUBS     r0,r1,r0
000022  6060              STR      r0,[r4,#4]
                  |L4.36|
;;;95       }
;;;96       WM__SendPIDMessage(hWin, pMsg);
000024  4629              MOV      r1,r5
000026  4630              MOV      r0,r6
000028  e8bd4070          POP      {r4-r6,lr}
00002c  f7ffbffe          B.W      WM__SendPIDMessage
;;;97     }
;;;98     
                          ENDP


                          AREA ||.data||, DATA, ALIGN=2

                  WM__CHWinModal
                          %        8
                  WM__CHWinLast
                          %        8

⌨️ 快捷键说明

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