欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

wm_screen2win.txt

STM32F103ZET6+UCOSII+UCGUI源码
TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\wm_screen2win.o --depend=.\Obj\wm_screen2win.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\WM\WM_Screen2Win.c]
                          THUMB

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

                  WM_Screen2hWin PROC
;;;86     */
;;;87     WM_HWIN WM_Screen2hWin(int x, int y) {
000000  4602              MOV      r2,r0
;;;88       WM_HWIN r;
;;;89       WM_LOCK();
;;;90       r = _Screen2hWin(WM__FirstWin, 0, x, y);
000002  4803              LDR      r0,|L1.16|
000004  460b              MOV      r3,r1
000006  2100              MOVS     r1,#0
000008  f9b00000          LDRSH    r0,[r0,#0]  ; WM__FirstWin
00000c  f7ffbffe          B.W      _Screen2hWin
;;;91       WM_UNLOCK();
;;;92       return r;
;;;93     }
;;;94     
                          ENDP

                  |L1.16|
                          DCD      WM__FirstWin

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

                  WM_Screen2hWinEx PROC
;;;98     */
;;;99     WM_HWIN WM_Screen2hWinEx(WM_HWIN hStop, int x, int y) {
000000  4613              MOV      r3,r2
;;;100      WM_HWIN r;
;;;101      WM_LOCK();
;;;102      r = _Screen2hWin(WM__FirstWin, hStop, x, y);
000002  460a              MOV      r2,r1
000004  4601              MOV      r1,r0
000006  4802              LDR      r0,|L2.16|
000008  f9b00000          LDRSH    r0,[r0,#0]  ; WM__FirstWin
00000c  f7ffbffe          B.W      _Screen2hWin
;;;103      WM_UNLOCK();
;;;104      return r;
;;;105    }
;;;106    
                          ENDP

                  |L2.16|
                          DCD      WM__FirstWin

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

                  WM__IsInWindow PROC
;;;70     */
;;;71     int WM__IsInWindow(WM_Obj * pWin, int x, int y) {
000000  8b83              LDRH     r3,[r0,#0x1c]
;;;72       if (   (pWin->Status & WM_SF_ISVIS)
000002  079b              LSLS     r3,r3,#30
000004  d511              BPL      |L3.42|
;;;73           && (x >= pWin->Rect.x0)
000006  f9b03000          LDRSH    r3,[r0,#0]
00000a  428b              CMP      r3,r1
00000c  dc0d              BGT      |L3.42|
;;;74           && (x <= pWin->Rect.x1)
00000e  f9b03004          LDRSH    r3,[r0,#4]
000012  428b              CMP      r3,r1
000014  db09              BLT      |L3.42|
;;;75           && (y >= pWin->Rect.y0)
000016  f9b01002          LDRSH    r1,[r0,#2]
00001a  4291              CMP      r1,r2
00001c  dc05              BGT      |L3.42|
;;;76           && (y <= pWin->Rect.y1))
00001e  f9b00006          LDRSH    r0,[r0,#6]
000022  4290              CMP      r0,r2
000024  db01              BLT      |L3.42|
;;;77       {
;;;78         return 1;
000026  2001              MOVS     r0,#1
;;;79       }
;;;80       return 0;
;;;81     }
000028  4770              BX       lr
                  |L3.42|
00002a  2000              MOVS     r0,#0                 ;80
00002c  4770              BX       lr
;;;82     
                          ENDP


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

                  _Screen2hWin PROC
;;;41     */
;;;42     static WM_HWIN _Screen2hWin(WM_HWIN hWin, WM_HWIN hStop, int x, int y) {
000000  e92d47f0          PUSH     {r4-r10,lr}
000004  4606              MOV      r6,r0
000006  460f              MOV      r7,r1
000008  4690              MOV      r8,r2
00000a  4699              MOV      r9,r3
;;;43       WM_Obj* pWin = WM_HANDLE2PTR(hWin);
00000c  f7fffffe          BL       GUI_ALLOC_h2p
000010  4604              MOV      r4,r0
;;;44       WM_HWIN hChild;
;;;45       WM_HWIN hHit;
;;;46       /* First check if the  coordinates are in the given window. If not, return 0 */
;;;47       if (WM__IsInWindow(pWin, x, y) == 0) {
000012  464a              MOV      r2,r9
000014  4641              MOV      r1,r8
000016  f7fffffe          BL       WM__IsInWindow
00001a  2800              CMP      r0,#0
00001c  d014              BEQ      |L4.72|
;;;48         return 0;
;;;49       }
;;;50       /* If the coordinates are in a child, search deeper ... */
;;;51       for (hChild = pWin->hFirstChild; hChild && (hChild != hStop); ) {
00001e  f9b44018          LDRSH    r4,[r4,#0x18]
000022  e00d              B        |L4.64|
                  |L4.36|
;;;52         WM_Obj* pChild = WM_HANDLE2PTR(hChild);
000024  4620              MOV      r0,r4
000026  f7fffffe          BL       GUI_ALLOC_h2p
00002a  4605              MOV      r5,r0
;;;53         if ((hHit = _Screen2hWin(hChild, hStop, x, y)) != 0) {
00002c  464b              MOV      r3,r9
00002e  4642              MOV      r2,r8
000030  4639              MOV      r1,r7
000032  4620              MOV      r0,r4
000034  f7fffffe          BL       _Screen2hWin
000038  b100              CBZ      r0,|L4.60|
;;;54           hWin = hHit;        /* Found a window */
00003a  4606              MOV      r6,r0
                  |L4.60|
;;;55         }
;;;56         hChild = pChild->hNext;
00003c  f9b5401a          LDRSH    r4,[r5,#0x1a]
                  |L4.64|
000040  b10c              CBZ      r4,|L4.70|
000042  42bc              CMP      r4,r7                 ;51
000044  d1ee              BNE      |L4.36|
                  |L4.70|
;;;57       }
;;;58       return hWin;            /* No Child affected ... The parent is the right one */
000046  4630              MOV      r0,r6
                  |L4.72|
;;;59     }
000048  e8bd87f0          POP      {r4-r10,pc}
;;;60     
                          ENDP

⌨️ 快捷键说明

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