📄 window.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\window.o --depend=.\Obj\window.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\Widget\WINDOW.c]
THUMB
AREA ||i.WINDOW_CreateIndirect||, CODE, READONLY, ALIGN=2
WINDOW_CreateIndirect PROC
;;;154 */
;;;155 WM_HWIN WINDOW_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb) {
000000 e92d41ff PUSH {r0-r8,lr}
000004 4604 MOV r4,r0
000006 4608 MOV r0,r1
000008 4615 MOV r5,r2
00000a 461f MOV r7,r3
;;;156 WM_HWIN hObj;
;;;157 hObj = WM_CreateWindowAsChild(
00000c 2314 MOVS r3,#0x14
00000e 4a11 LDR r2,|L1.84|
000010 8a61 LDRH r1,[r4,#0x12]
000012 9e0a LDR r6,[sp,#0x28]
000014 e88d000f STM sp,{r0-r3}
000018 f9b4000c LDRSH r0,[r4,#0xc]
00001c f9b43010 LDRSH r3,[r4,#0x10]
000020 19c1 ADDS r1,r0,r7
000022 f9b4000a LDRSH r0,[r4,#0xa]
000026 f9b4200e LDRSH r2,[r4,#0xe]
00002a 4428 ADD r0,r0,r5
00002c f7fffffe BL WM_CreateWindowAsChild
000030 0005 MOVS r5,r0
;;;158 pCreateInfo->x0 + x0, pCreateInfo->y0 + y0, pCreateInfo->xSize, pCreateInfo->ySize, hWinParent,
;;;159 pCreateInfo->Flags, _cb, sizeof(WINDOW_OBJ) - sizeof(WM_Obj));
;;;160 if (hObj) {
000032 d00b BEQ |L1.76|
;;;161 WINDOW_OBJ* pObj;
;;;162 WM_LOCK();
;;;163 pObj = WINDOW_H2P(hObj);
000034 4628 MOV r0,r5
000036 f7fffffe BL GUI_ALLOC_h2p
00003a 4607 MOV r7,r0
;;;164 WIDGET__Init(&pObj->Widget, pCreateInfo->Id, WIDGET_STATE_FOCUSSABLE);
00003c f9b41008 LDRSH r1,[r4,#8]
000040 2210 MOVS r2,#0x10
000042 f7fffffe BL WIDGET__Init
;;;165 pObj->cb = cb;
;;;166 pObj->hFocussedChild = 0;
000046 2100 MOVS r1,#0
000048 62be STR r6,[r7,#0x28]
00004a 85b9 STRH r1,[r7,#0x2c]
|L1.76|
;;;167 WM_UNLOCK();
;;;168 }
;;;169 return hObj;
00004c 4628 MOV r0,r5
;;;170 }
00004e b004 ADD sp,sp,#0x10
000050 e8bd81f0 POP {r4-r8,pc}
;;;171
ENDP
|L1.84|
DCD _cb
AREA ||i._cb||, CODE, READONLY, ALIGN=2
_cb PROC
;;;88 */
;;;89 static void _cb(WM_MESSAGE* pMsg) {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;90 WM_HWIN hObj;
;;;91 WINDOW_OBJ* pObj;
;;;92 WM_CALLBACK* cb;
;;;93 hObj = pMsg->hWin;
000004 f9b07004 LDRSH r7,[r0,#4]
000008 4604 MOV r4,r0 ;89
;;;94 pObj = WINDOW_H2P(hObj);
00000a 4638 MOV r0,r7
00000c f7fffffe BL GUI_ALLOC_h2p
000010 4605 MOV r5,r0
;;;95 cb = pObj->cb;
;;;96 switch (pMsg->MsgId) {
000012 6a86 LDR r6,[r0,#0x28]
000014 6820 LDR r0,[r4,#0]
;;;97 case WM_HANDLE_DIALOG_STATUS:
;;;98 if (pMsg->Data.p) { /* set pointer to Dialog status */
;;;99 pObj->pDialogStatus = (WM_DIALOG_STATUS*)pMsg->Data.p;
;;;100 } else { /* return pointer to Dialog status */
;;;101 pMsg->Data.p = pObj->pDialogStatus;
;;;102 }
;;;103 return;
;;;104 case WM_SET_FOCUS:
;;;105 if (pMsg->Data.v) { /* Focus received */
;;;106 if (pObj->hFocussedChild && (pObj->hFocussedChild != hObj)) {
;;;107 WM_SetFocus(pObj->hFocussedChild);
;;;108 } else {
;;;109 pObj->hFocussedChild = WM_SetFocusOnNextChild(hObj);
;;;110 }
;;;111 pMsg->Data.v = 0; /* Focus change accepted */
;;;112 }
;;;113 return;
;;;114 case WM_GET_ACCEPT_FOCUS:
;;;115 WIDGET_HandleActive(hObj, pMsg);
;;;116 return;
;;;117 case WM_NOTIFY_CHILD_HAS_FOCUS:
;;;118 _OnChildHasFocus(hObj, pObj, pMsg);
;;;119 return;
;;;120 case WM_KEY:
;;;121 if (((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt > 0) {
;;;122 int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
;;;123 switch (Key) {
;;;124 case GUI_KEY_TAB:
;;;125 pObj->hFocussedChild = WM_SetFocusOnNextChild(hObj);
;;;126 break; /* Send to parent by not doing anything */
;;;127 }
;;;128 }
;;;129 break;
;;;130 case WM_PAINT:
;;;131 LCD_SetBkColor(WINDOW__DefaultBkColor);
000016 4930 LDR r1,|L2.216|
000018 2820 CMP r0,#0x20 ;96
00001a d025 BEQ |L2.104|
00001c dc10 BGT |L2.64|
00001e 280e CMP r0,#0xe ;96
000020 d03c BEQ |L2.156|
000022 280f CMP r0,#0xf ;96
000024 d046 BEQ |L2.180|
000026 281f CMP r0,#0x1f ;96
000028 d149 BNE |L2.190|
00002a 68a0 LDR r0,[r4,#8] ;105
00002c 2800 CMP r0,#0 ;105
00002e d010 BEQ |L2.82|
000030 f9b5002c LDRSH r0,[r5,#0x2c] ;106
000034 b188 CBZ r0,|L2.90|
000036 42b8 CMP r0,r7 ;106
000038 d00f BEQ |L2.90|
00003a f7fffffe BL WM_SetFocus
00003e e010 B |L2.98|
|L2.64|
000040 2821 CMP r0,#0x21 ;96
000042 d017 BEQ |L2.116|
000044 2822 CMP r0,#0x22 ;96
000046 d040 BEQ |L2.202|
000048 282a CMP r0,#0x2a ;96
00004a d138 BNE |L2.190|
00004c 68a0 LDR r0,[r4,#8] ;98
00004e b110 CBZ r0,|L2.86|
000050 6328 STR r0,[r5,#0x30] ;99
|L2.82|
;;;132 GUI_Clear();
;;;133 break;
;;;134 case WM_GET_BKCOLOR:
;;;135 pMsg->Data.Color = WINDOW__DefaultBkColor;
;;;136 return; /* Message handled */
;;;137 }
;;;138 if (cb) {
;;;139 (*cb)(pMsg);
;;;140 } else {
;;;141 WM_DefaultProc(pMsg);
;;;142 }
;;;143 }
000052 e8bd81f0 POP {r4-r8,pc}
|L2.86|
000056 6b28 LDR r0,[r5,#0x30] ;101
000058 e004 B |L2.100|
|L2.90|
00005a 4638 MOV r0,r7 ;109
00005c f7fffffe BL WM_SetFocusOnNextChild
000060 85a8 STRH r0,[r5,#0x2c] ;109
|L2.98|
000062 2000 MOVS r0,#0 ;111
|L2.100|
000064 60a0 STR r0,[r4,#8] ;111
000066 e7f4 B |L2.82|
|L2.104|
000068 4621 MOV r1,r4 ;115
00006a 4638 MOV r0,r7 ;115
00006c e8bd41f0 POP {r4-r8,lr} ;115
000070 f7ffbffe B.W WIDGET_HandleActive
|L2.116|
000074 68a4 LDR r4,[r4,#8] ;115
000076 2c00 CMP r4,#0 ;115
000078 d0eb BEQ |L2.82|
00007a f9b40002 LDRSH r0,[r4,#2] ;115
00007e 4639 MOV r1,r7 ;115
000080 f7fffffe BL WM__IsAncestorOrSelf
000084 2800 CMP r0,#0 ;115
000086 d1e4 BNE |L2.82|
000088 f9b40000 LDRSH r0,[r4,#0] ;115
00008c 4639 MOV r1,r7 ;115
00008e f7fffffe BL WM__IsAncestor
000092 2800 CMP r0,#0 ;115
000094 d0dd BEQ |L2.82|
000096 8820 LDRH r0,[r4,#0] ;115
000098 85a8 STRH r0,[r5,#0x2c] ;115
00009a e7da B |L2.82|
|L2.156|
00009c 68a0 LDR r0,[r4,#8] ;121
00009e 6841 LDR r1,[r0,#4] ;121
0000a0 2900 CMP r1,#0 ;121
0000a2 dd0c BLE |L2.190|
0000a4 6800 LDR r0,[r0,#0] ;122
0000a6 2809 CMP r0,#9 ;123
0000a8 d109 BNE |L2.190|
0000aa 4638 MOV r0,r7 ;125
0000ac f7fffffe BL WM_SetFocusOnNextChild
0000b0 85a8 STRH r0,[r5,#0x2c] ;125
0000b2 e004 B |L2.190|
|L2.180|
0000b4 6808 LDR r0,[r1,#0] ;131 ; WINDOW__DefaultBkColor
0000b6 f7fffffe BL LCD_SetBkColor
0000ba f7fffffe BL GUI_Clear
|L2.190|
0000be 4620 MOV r0,r4 ;139
0000c0 b12e CBZ r6,|L2.206|
0000c2 46b4 MOV r12,r6 ;139
0000c4 e8bd41f0 POP {r4-r8,lr} ;139
0000c8 4760 BX r12 ;139
|L2.202|
0000ca 6808 LDR r0,[r1,#0] ;136 ; WINDOW__DefaultBkColor
0000cc e7ca B |L2.100|
|L2.206|
0000ce e8bd41f0 POP {r4-r8,lr} ;141
0000d2 f7ffbffe B.W WM_DefaultProc
;;;144
ENDP
0000d6 0000 DCW 0x0000
|L2.216|
DCD ||.data||
AREA ||.data||, DATA, ALIGN=2
WINDOW__DefaultBkColor
DCD 0x00c0c0c0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -