📄 framewin_setresizeable.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\framewin_setresizeable.o --depend=.\Obj\framewin_setresizeable.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\FRAMEWIN_SetResizeable.c]
THUMB
AREA ||i.FRAMEWIN_SetResizeable||, CODE, READONLY, ALIGN=2
FRAMEWIN_SetResizeable PROC
;;;525 */
;;;526 void FRAMEWIN_SetResizeable(FRAMEWIN_Handle hObj, int State) {
000000 b510 PUSH {r4,lr}
000002 460c MOV r4,r1
;;;527 if (hObj) {
000004 2800 CMP r0,#0
000006 d011 BEQ |L1.44|
;;;528 FRAMEWIN_Obj* pObj;
;;;529 WM_LOCK();
;;;530 pObj = FRAMEWIN_H2P(hObj);
000008 f7fffffe BL GUI_ALLOC_h2p
;;;531 if (pObj) {
00000c 2800 CMP r0,#0
00000e d00d BEQ |L1.44|
;;;532 if (State) {
000010 b134 CBZ r4,|L1.32|
;;;533 GUI_HOOK_Add(&pObj->pFirstHook, &_HOOK_Resizeable, &_HOOKFUNC_Resizeable);
000012 e8bd4010 POP {r4,lr}
000016 4a06 LDR r2,|L1.48|
000018 4906 LDR r1,|L1.52|
00001a 3064 ADDS r0,r0,#0x64
00001c f7ffbffe B.W GUI_HOOK_Add
|L1.32|
;;;534 } else {
;;;535 GUI_HOOK_Remove(&pObj->pFirstHook, &_HOOK_Resizeable);
000020 e8bd4010 POP {r4,lr}
000024 4903 LDR r1,|L1.52|
000026 3064 ADDS r0,r0,#0x64
000028 f7ffbffe B.W GUI_HOOK_Remove
|L1.44|
;;;536 }
;;;537 }
;;;538 WM_UNLOCK();
;;;539 }
;;;540 }
00002c bd10 POP {r4,pc}
;;;541
ENDP
00002e 0000 DCW 0x0000
|L1.48|
DCD _HOOKFUNC_Resizeable
|L1.52|
DCD ||.data||+0xc
AREA ||i._ChangeWindowPosSize||, CODE, READONLY, ALIGN=2
_ChangeWindowPosSize PROC
;;;307 */
;;;308 static void _ChangeWindowPosSize(FRAMEWIN_Handle hWin, int* px, int* py) {
000000 e92d47fc PUSH {r2-r10,lr}
000004 460e MOV r6,r1
;;;309 int dx = 0, dy = 0;
000006 2400 MOVS r4,#0
000008 4681 MOV r9,r0 ;308
00000a 4617 MOV r7,r2 ;308
00000c 4625 MOV r5,r4
;;;310 GUI_RECT Rect;
;;;311 WM_GetClientRectEx(hWin, &Rect);
00000e 4669 MOV r1,sp
000010 f7fffffe BL WM_GetClientRectEx
;;;312 /* Calculate new size of window */
;;;313 if (_CaptureFlags & FRAMEWIN_RESIZE_X) {
000014 f8df8090 LDR r8,|L2.168|
000018 f8d80008 LDR r0,[r8,#8] ; _CaptureFlags
00001c 07c1 LSLS r1,r0,#31
00001e d008 BEQ |L2.50|
;;;314 dx = (_CaptureFlags & FRAMEWIN_REPOS_X) ? (_CaptureX - *px) : (*px - _CaptureX);
000020 0741 LSLS r1,r0,#29
000022 2900 CMP r1,#0
000024 6831 LDR r1,[r6,#0]
000026 f8d82000 LDR r2,[r8,#0] ; _CaptureX
00002a da01 BGE |L2.48|
00002c 1a54 SUBS r4,r2,r1
00002e e000 B |L2.50|
|L2.48|
000030 1a8c SUBS r4,r1,r2
|L2.50|
;;;315 }
;;;316 if (_CaptureFlags & FRAMEWIN_RESIZE_Y) {
000032 0781 LSLS r1,r0,#30
000034 d508 BPL |L2.72|
;;;317 dy = (_CaptureFlags & FRAMEWIN_REPOS_Y) ? (_CaptureY - *py) : (*py - _CaptureY);
000036 0701 LSLS r1,r0,#28
000038 2900 CMP r1,#0
00003a 6839 LDR r1,[r7,#0]
00003c f8d82004 LDR r2,[r8,#4] ; _CaptureY
000040 da01 BGE |L2.70|
000042 1a55 SUBS r5,r2,r1
000044 e000 B |L2.72|
|L2.70|
000046 1a8d SUBS r5,r1,r2
|L2.72|
;;;318 }
;;;319 /* Check the minimal size of window */
;;;320 if ((Rect.x1 + dx + 1) < FRAMEWIN_MINSIZE_X) {
000048 f9bd1004 LDRSH r1,[sp,#4]
00004c 1c62 ADDS r2,r4,#1
00004e 440a ADD r2,r2,r1
000050 2a14 CMP r2,#0x14
000052 da05 BGE |L2.96|
;;;321 dx = FRAMEWIN_MINSIZE_X - Rect.x1 - 1;
000054 f1c10413 RSB r4,r1,#0x13
;;;322 *px = _CaptureX + dx;
000058 f8d81000 LDR r1,[r8,#0] ; _CaptureX
00005c 4421 ADD r1,r1,r4
00005e 6031 STR r1,[r6,#0]
|L2.96|
;;;323 }
;;;324 if ((Rect.y1 + dy + 1) < FRAMEWIN_MINSIZE_Y) {
000060 f9bd1006 LDRSH r1,[sp,#6]
000064 1c6a ADDS r2,r5,#1
000066 440a ADD r2,r2,r1
000068 2a14 CMP r2,#0x14
00006a da05 BGE |L2.120|
;;;325 dy = FRAMEWIN_MINSIZE_Y - Rect.y1 - 1;
00006c f1c10513 RSB r5,r1,#0x13
;;;326 *py = _CaptureY + dy;
000070 f8d81004 LDR r1,[r8,#4] ; _CaptureY
000074 4429 ADD r1,r1,r5
000076 6039 STR r1,[r7,#0]
|L2.120|
;;;327 }
;;;328 /* Set new window position */
;;;329 if (_CaptureFlags & FRAMEWIN_REPOS_X) {
000078 0740 LSLS r0,r0,#29
00007a d504 BPL |L2.134|
;;;330 WM_MoveWindow(hWin, -dx, 0);
00007c 2200 MOVS r2,#0
00007e 4261 RSBS r1,r4,#0
000080 4648 MOV r0,r9
000082 f7fffffe BL WM_MoveWindow
|L2.134|
;;;331 }
;;;332 if (_CaptureFlags & FRAMEWIN_REPOS_Y) {
000086 f8d80008 LDR r0,[r8,#8] ; _CaptureFlags
00008a 0700 LSLS r0,r0,#28
00008c d504 BPL |L2.152|
;;;333 WM_MoveWindow(hWin, 0, -dy);
00008e 426a RSBS r2,r5,#0
000090 2100 MOVS r1,#0
000092 4648 MOV r0,r9
000094 f7fffffe BL WM_MoveWindow
|L2.152|
;;;334 }
;;;335 /* Set new window size */
;;;336 WM_ResizeWindow(hWin, dx, dy);
000098 462a MOV r2,r5
00009a 4621 MOV r1,r4
00009c 4648 MOV r0,r9
00009e f7fffffe BL WM_ResizeWindow
;;;337 }
0000a2 e8bd87fc POP {r2-r10,pc}
;;;338
ENDP
0000a6 0000 DCW 0x0000
|L2.168|
DCD ||.data||
AREA ||i._CheckBorderX||, CODE, READONLY, ALIGN=1
_CheckBorderX PROC
;;;342 */
;;;343 static int _CheckBorderX(int x, int x1, int Border) {
000000 4603 MOV r3,r0
;;;344 int Mode = 0;
000002 2000 MOVS r0,#0
;;;345 if (x > (x1 - Border)) {
000004 1a89 SUBS r1,r1,r2
000006 4299 CMP r1,r3
000008 da01 BGE |L3.14|
;;;346 Mode = FRAMEWIN_RESIZE_X;
00000a 2001 MOVS r0,#1
|L3.12|
;;;347 } else if (x < (Border)) {
;;;348 Mode = FRAMEWIN_RESIZE_X | FRAMEWIN_REPOS_X;
;;;349 }
;;;350 return Mode;
;;;351 }
00000c 4770 BX lr
|L3.14|
00000e 4293 CMP r3,r2 ;347
000010 dafc BGE |L3.12|
000012 2005 MOVS r0,#5 ;348
000014 4770 BX lr
;;;352
ENDP
AREA ||i._CheckBorderY||, CODE, READONLY, ALIGN=1
_CheckBorderY PROC
;;;356 */
;;;357 static int _CheckBorderY(int y, int y1, int Border) {
000000 4603 MOV r3,r0
;;;358 int Mode = 0;
000002 2000 MOVS r0,#0
;;;359 if (y > (y1 - Border)) {
000004 1a89 SUBS r1,r1,r2
000006 4299 CMP r1,r3
000008 da01 BGE |L4.14|
;;;360 Mode = FRAMEWIN_RESIZE_Y;
00000a 2002 MOVS r0,#2
|L4.12|
;;;361 } else if (y < (Border)) {
;;;362 Mode = FRAMEWIN_RESIZE_Y | FRAMEWIN_REPOS_Y;
;;;363 }
;;;364 return Mode;
;;;365 }
00000c 4770 BX lr
|L4.14|
00000e 4293 CMP r3,r2 ;361
000010 dafc BGE |L4.12|
000012 200a MOVS r0,#0xa ;362
000014 4770 BX lr
;;;366
ENDP
AREA ||i._HOOKFUNC_Resizeable||, CODE, READONLY, ALIGN=2
_HOOKFUNC_Resizeable PROC
;;;490 */
;;;491 static int _HOOKFUNC_Resizeable(WM_MESSAGE* pMsg) {
000000 b570 PUSH {r4-r6,lr}
;;;492 WM_HWIN hWin = pMsg->hWin;
000002 f9b06004 LDRSH r6,[r0,#4]
000006 4604 MOV r4,r0 ;491
;;;493 if (WM_HasCaptured(hWin) && (_CaptureFlags == 0)) {
000008 4630 MOV r0,r6
00000a f7fffffe BL WM_HasCaptured
00000e 4d0e LDR r5,|L5.72|
000010 b108 CBZ r0,|L5.22|
000012 68a8 LDR r0,[r5,#8] ; _CaptureFlags
000014 b1b0 CBZ r0,|L5.68|
|L5.22|
;;;494 return 0;
;;;495 }
;;;496 if (FRAMEWIN_IsMinimized(hWin) || FRAMEWIN_IsMaximized(hWin)) {
000016 4630 MOV r0,r6
000018 f7fffffe BL FRAMEWIN_IsMinimized
00001c b990 CBNZ r0,|L5.68|
00001e 4630 MOV r0,r6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -