📄 wm.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.o --depend=.\Obj\wm.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.c]
THUMB
AREA ||i.WM_Activate||, CODE, READONLY, ALIGN=2
WM_Activate PROC
;;;1638 */
;;;1639 void WM_Activate(void) {
000000 4901 LDR r1,|L1.8|
;;;1640 WM_IsActive = 1; /* Running */
000002 2001 MOVS r0,#1
000004 7008 STRB r0,[r1,#0]
;;;1641 }
000006 4770 BX lr
;;;1642
ENDP
|L1.8|
DCD ||.data||
AREA ||i.WM_CreateWindow||, CODE, READONLY, ALIGN=1
WM_CreateWindow PROC
;;;885 */
;;;886 WM_HWIN WM_CreateWindow(int x0, int y0, int width, int height, U16 Style, WM_CALLBACK* cb, int NumExtraBytes) {
000000 e92d41ff PUSH {r0-r8,lr}
000004 460d MOV r5,r1
000006 4616 MOV r6,r2
000008 461f MOV r7,r3
;;;887 return WM_CreateWindowAsChild(x0,y0,width,height, 0 /* No parent */, Style, cb, NumExtraBytes);
00000a a90a ADD r1,sp,#0x28
00000c c90e LDM r1,{r1-r3}
00000e 4604 MOV r4,r0 ;886
000010 2000 MOVS r0,#0
000012 e88d000f STM sp,{r0-r3}
000016 463b MOV r3,r7
000018 4632 MOV r2,r6
00001a 4629 MOV r1,r5
00001c 4620 MOV r0,r4
00001e f7fffffe BL WM_CreateWindowAsChild
;;;888 }
000022 b004 ADD sp,sp,#0x10
000024 e8bd81f0 POP {r4-r8,pc}
;;;889
ENDP
AREA ||i.WM_CreateWindowAsChild||, CODE, READONLY, ALIGN=2
WM_CreateWindowAsChild PROC
;;;801 */
;;;802 WM_HWIN WM_CreateWindowAsChild( int x0, int y0, int width, int height
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;803 ,WM_HWIN hParent, U16 Style, WM_CALLBACK* cb
;;;804 ,int NumExtraBytes) {
;;;805 WM_Obj* pWin;
;;;806 WM_HWIN hWin;
;;;807 WM_ASSERT_NOT_IN_PAINT();
;;;808 WM_LOCK();
;;;809 Style |= WM__CreateFlags;
000004 4c45 LDR r4,|L3.284|
000006 4607 MOV r7,r0 ;804
000008 e9dd650a LDRD r6,r5,[sp,#0x28]
00000c 89a0 LDRH r0,[r4,#0xc] ; WM__CreateFlags
;;;810 /* Default parent is Desktop 0 */
;;;811 if (!hParent) {
00000e f8dd9034 LDR r9,[sp,#0x34]
000012 4688 MOV r8,r1 ;804
000014 4692 MOV r10,r2 ;804
000016 469b MOV r11,r3 ;804
000018 4305 ORRS r5,r5,r0 ;809
00001a b92e CBNZ r6,|L3.40|
;;;812 if (WM__NumWindows) {
00001c 88a0 LDRH r0,[r4,#4] ; WM__NumWindows
00001e b118 CBZ r0,|L3.40|
;;;813 #if GUI_NUM_LAYERS == 1
;;;814 hParent = WM__ahDesktopWin[0];
000020 f104000a ADD r0,r4,#0xa
000024 f9b06000 LDRSH r6,[r0,#0] ; WM__ahDesktopWin
|L3.40|
;;;815 #else
;;;816 hParent = WM__ahDesktopWin[GUI_Context.SelLayer];
;;;817 #endif
;;;818 }
;;;819 }
;;;820 if (hParent == WM_UNATTACHED) {
000028 1c70 ADDS r0,r6,#1
00002a d101 BNE |L3.48|
;;;821 hParent = WM_HWIN_NULL;
00002c 2600 MOVS r6,#0
00002e e019 B |L3.100|
|L3.48|
;;;822 }
;;;823 if (hParent) {
000030 b1c6 CBZ r6,|L3.100|
;;;824 WM_Obj* pParent = WM_H2P(hParent);
000032 4630 MOV r0,r6
000034 f7fffffe BL GUI_ALLOC_h2p
;;;825 x0 += pParent->Rect.x0;
000038 f9b01000 LDRSH r1,[r0,#0]
;;;826 y0 += pParent->Rect.y0;
00003c f9b02002 LDRSH r2,[r0,#2]
000040 440f ADD r7,r7,r1 ;825
000042 4490 ADD r8,r8,r2
;;;827 if (width==0) {
000044 f1ba0f00 CMP r10,#0
000048 d104 BNE |L3.84|
;;;828 width = pParent->Rect.x1 - pParent->Rect.x0+1;
00004a f9b03004 LDRSH r3,[r0,#4]
00004e 1a59 SUBS r1,r3,r1
000050 f1010a01 ADD r10,r1,#1
|L3.84|
;;;829 }
;;;830 if (height==0) {
000054 f1bb0f00 CMP r11,#0
000058 d104 BNE |L3.100|
;;;831 height = pParent->Rect.y1 - pParent->Rect.y0+1;
00005a f9b00006 LDRSH r0,[r0,#6]
00005e 1a80 SUBS r0,r0,r2
000060 f1000b01 ADD r11,r0,#1
|L3.100|
;;;832 }
;;;833 }
;;;834 if ((hWin = (WM_HWIN) GUI_ALLOC_AllocZero(NumExtraBytes + sizeof(WM_Obj))) == 0) {
000064 f1090020 ADD r0,r9,#0x20
000068 b200 SXTH r0,r0
00006a f7fffffe BL GUI_ALLOC_AllocZero
00006e ea5f0900 MOVS r9,r0
000072 d04f BEQ |L3.276|
;;;835 GUI_DEBUG_ERROROUT("WM_CreateWindow: No memory to create window");
;;;836 } else {
;;;837 WM__NumWindows++;
000074 4829 LDR r0,|L3.284|
000076 4929 LDR r1,|L3.284|
000078 8880 LDRH r0,[r0,#4] ; WM__NumWindows
00007a 1c40 ADDS r0,r0,#1
00007c 8088 STRH r0,[r1,#4]
;;;838 pWin = WM_H2P(hWin);
00007e 4648 MOV r0,r9
000080 f7fffffe BL GUI_ALLOC_h2p
;;;839 pWin->Rect.x0 = x0;
000084 8007 STRH r7,[r0,#0]
;;;840 pWin->Rect.y0 = y0;
;;;841 pWin->Rect.x1 = x0 + width - 1;
000086 eb07010a ADD r1,r7,r10
00008a f8a08002 STRH r8,[r0,#2] ;840
00008e 1e49 SUBS r1,r1,#1
000090 8081 STRH r1,[r0,#4]
;;;842 pWin->Rect.y1 = y0 + height - 1;
000092 eb08010b ADD r1,r8,r11
000096 1e49 SUBS r1,r1,#1
000098 80c1 STRH r1,[r0,#6]
;;;843 pWin->cb = cb;
00009a 990c LDR r1,[sp,#0x30]
;;;844 /* Copy the flags which can simply be accepted */
;;;845 pWin->Status |= (Style & (WM_CF_SHOW |
00009c 6101 STR r1,[r0,#0x10]
00009e 4604 MOV r4,r0 ;838
0000a0 8b81 LDRH r1,[r0,#0x1c]
0000a2 f643708f MOV r0,#0x3f8f
0000a6 4028 ANDS r0,r0,r5
0000a8 4301 ORRS r1,r1,r0
0000aa 481c LDR r0,|L3.284|
0000ac 83a1 STRH r1,[r4,#0x1c]
0000ae f9b00008 LDRSH r0,[r0,#8] ; WM__FirstWin
0000b2 b150 CBZ r0,|L3.202|
0000b4 f7fffffe BL GUI_ALLOC_h2p
0000b8 4607 MOV r7,r0
0000ba 4648 MOV r0,r9
0000bc f7fffffe BL GUI_ALLOC_h2p
0000c0 8ab9 LDRH r1,[r7,#0x14]
0000c2 8281 STRH r1,[r0,#0x14]
0000c4 f8a79014 STRH r9,[r7,#0x14]
0000c8 e002 B |L3.208|
|L3.202|
0000ca 4914 LDR r1,|L3.284|
0000cc f8a19008 STRH r9,[r1,#8]
|L3.208|
;;;846 WM_SF_MEMDEV |
;;;847 WM_CF_MEMDEV_ON_REDRAW |
;;;848 WM_SF_STAYONTOP |
;;;849 WM_SF_CONST_OUTLINE |
;;;850 WM_SF_HASTRANS |
;;;851 WM_CF_ANCHOR_RIGHT |
;;;852 WM_CF_ANCHOR_BOTTOM |
;;;853 WM_CF_ANCHOR_LEFT |
;;;854 WM_CF_ANCHOR_TOP |
;;;855 WM_CF_LATE_CLIP));
;;;856 /* Add to linked lists */
;;;857 _AddToLinList(hWin);
;;;858 WM__InsertWindowIntoList(hWin, hParent);
0000d0 4631 MOV r1,r6
0000d2 4648 MOV r0,r9
0000d4 f7fffffe BL WM__InsertWindowIntoList
;;;859 /* Activate window if WM_CF_ACTIVATE is specified */
;;;860 if (Style & WM_CF_ACTIVATE) {
0000d8 06a8 LSLS r0,r5,#26
0000da d502 BPL |L3.226|
;;;861 WM_SelectWindow(hWin); /* This is not needed if callbacks are being used, but it does not cost a lot and makes life easier ... */
0000dc 4648 MOV r0,r9
0000de f7fffffe BL WM_SelectWindow
|L3.226|
;;;862 }
;;;863 /* Handle the Style flags, one at a time */
;;;864 #if WM_SUPPORT_TRANSPARENCY
;;;865 if (Style & WM_SF_HASTRANS) {
0000e2 07e8 LSLS r0,r5,#31
0000e4 d003 BEQ |L3.238|
;;;866 WM__TransWindowCnt++; /* Increment counter for transparency windows */
0000e6 490d LDR r1,|L3.284|
0000e8 6a48 LDR r0,[r1,#0x24] ; WM__TransWindowCnt
0000ea 1c40 ADDS r0,r0,#1
0000ec 6248 STR r0,[r1,#0x24] ; WM__TransWindowCnt
|L3.238|
;;;867 }
;;;868 #endif
;;;869 if (Style & WM_CF_BGND) {
0000ee 0668 LSLS r0,r5,#25
0000f0 d502 BPL |L3.248|
;;;870 WM_BringToBottom(hWin);
0000f2 4648 MOV r0,r9
0000f4 f7fffffe BL WM_BringToBottom
|L3.248|
;;;871 }
;;;872 if (Style & WM_CF_SHOW) {
0000f8 07a8 LSLS r0,r5,#30
0000fa d507 BPL |L3.268|
;;;873 pWin->Status |= WM_SF_ISVIS; /* Set Visibility flag */
0000fc 8ba0 LDRH r0,[r4,#0x1c]
0000fe 2100 MOVS r1,#0
000100 f0400002 ORR r0,r0,#2
000104 83a0 STRH r0,[r4,#0x1c]
000106 4648 MOV r0,r9
000108 f7fffffe BL WM_InvalidateRect
|L3.268|
;;;874 WM_InvalidateWindow(hWin); /* Mark content as invalid */
;;;875 }
;;;876 WM__SendMsgNoData(hWin, WM_CREATE);
00010c 2101 MOVS r1,#1
00010e 4648 MOV r0,r9
000110 f7fffffe BL WM__SendMsgNoData
|L3.276|
;;;877 }
;;;878 WM_UNLOCK();
;;;879 return hWin;
000114 4648 MOV r0,r9
;;;880 }
000116 e8bd9ff0 POP {r4-r12,pc}
;;;881
ENDP
00011a 0000 DCW 0x0000
|L3.284|
DCD ||.data||
AREA ||i.WM_Deactivate||, CODE, READONLY, ALIGN=2
WM_Deactivate PROC
;;;1646 */
;;;1647 void WM_Deactivate(void) {
000000 4902 LDR r1,|L4.12|
;;;1648 WM_IsActive = 0; /* No clipping performed by WM */
000002 2000 MOVS r0,#0
000004 7008 STRB r0,[r1,#0]
;;;1649 WM_LOCK();
;;;1650 LCD_SetClipRectMax();
000006 f7ffbffe B.W LCD_SetClipRectMax
;;;1651 WM_UNLOCK();
;;;1652 }
;;;1653
ENDP
00000a 0000 DCW 0x0000
|L4.12|
DCD ||.data||
AREA ||i.WM_DefaultProc||, CODE, READONLY, ALIGN=1
WM_DefaultProc PROC
;;;1663 */
;;;1664 void WM_DefaultProc(WM_MESSAGE* pMsg) {
000000 b570 PUSH {r4-r6,lr}
;;;1665 WM_HWIN hWin = pMsg->hWin;
000002 f9b05004 LDRSH r5,[r0,#4]
000006 4604 MOV r4,r0 ;1664
;;;1666 const void *p = pMsg->Data.p;
;;;1667 WM_Obj* pWin = WM_H2P(hWin);
000008 6886 LDR r6,[r0,#8]
00000a 4628 MOV r0,r5
00000c f7fffffe BL GUI_ALLOC_h2p
;;;1668 /* Exec message */
;;;1669 switch (pMsg->MsgId) {
000010 6821 LDR r1,[r4,#0]
000012 2917 CMP r1,#0x17
000014 d012 BEQ |L5.60|
000016 dc07 BGT |L5.40|
000018 290e CMP r1,#0xe
00001a d011 BEQ |L5.64|
00001c 2914 CMP r1,#0x14
00001e d118 BNE |L5.82|
;;;1670 case WM_GET_INSIDE_RECT: /* return client window in absolute (screen) coordinates */
;;;1671 WM__GetClientRectWin(pWin, (GUI_RECT*)p);
000020 4631 MOV r1,r6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -