wm_screen2win.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 + -