📄 framewin_setresizeable.txt
字号:
000020 f7fffffe BL FRAMEWIN_IsMaximized
000024 b970 CBNZ r0,|L5.68|
;;;497 return 0;
;;;498 }
;;;499 switch(pMsg->MsgId) {
000026 6820 LDR r0,[r4,#0]
000028 280c CMP r0,#0xc
00002a d005 BEQ |L5.56|
00002c 2818 CMP r0,#0x18
00002e d109 BNE |L5.68|
;;;500 case WM_TOUCH:
;;;501 return _OnTouch(hWin, pMsg);
;;;502 #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
;;;503 case WM_MOUSEOVER:
;;;504 return _OnMouseOver(hWin, pMsg);
;;;505 #endif
;;;506 case WM_CAPTURE_RELEASED:
;;;507 #if GUI_SUPPORT_CURSOR
;;;508 _SetResizeCursor(0);
;;;509 #endif
;;;510 _CaptureFlags = 0;
000030 2000 MOVS r0,#0
;;;511 return 1;
000032 60a8 STR r0,[r5,#8] ; _CaptureFlags
000034 2001 MOVS r0,#1
;;;512 }
;;;513 return 0;
;;;514 }
000036 bd70 POP {r4-r6,pc}
|L5.56|
000038 4621 MOV r1,r4 ;501
00003a 4630 MOV r0,r6 ;501
00003c e8bd4070 POP {r4-r6,lr} ;501
000040 f7ffbffe B.W _OnTouch
|L5.68|
000044 2000 MOVS r0,#0 ;513
000046 bd70 POP {r4-r6,pc}
;;;515
ENDP
|L5.72|
DCD ||.data||
AREA ||i._OnTouch||, CODE, READONLY, ALIGN=2
_OnTouch PROC
;;;392 */
;;;393 static int _OnTouch(FRAMEWIN_Handle hWin, WM_MESSAGE* pMsg) {
000000 e92d47ff PUSH {r0-r10,lr}
;;;394 const GUI_PID_STATE* pState = (const GUI_PID_STATE*)pMsg->Data.p;
;;;395 if (pState) { /* Something happened in our area (pressed or released) */
000004 688d LDR r5,[r1,#8]
000006 4681 MOV r9,r0 ;393
000008 2d00 CMP r5,#0
00000a d05d BEQ |L6.200|
;;;396 int x, y, Mode;
;;;397 x = pState->x;
00000c 6828 LDR r0,[r5,#0]
;;;398 y = pState->y;
00000e 9003 STR r0,[sp,#0xc]
000010 686f LDR r7,[r5,#4]
;;;399 Mode = _CheckReactBorder(hWin, x, y);
000012 4606 MOV r6,r0
000014 2400 MOVS r4,#0
000016 4669 MOV r1,sp
000018 4648 MOV r0,r9
00001a 9702 STR r7,[sp,#8]
00001c f7fffffe BL WM_GetClientRectEx
000020 2e00 CMP r6,#0
000022 db27 BLT |L6.116|
000024 2f00 CMP r7,#0
000026 db25 BLT |L6.116|
000028 f9bd1004 LDRSH r1,[sp,#4]
00002c 42b1 CMP r1,r6
00002e db21 BLT |L6.116|
000030 f9bd0006 LDRSH r0,[sp,#6]
000034 42b8 CMP r0,r7
000036 db1d BLT |L6.116|
000038 2203 MOVS r2,#3
00003a 4630 MOV r0,r6
00003c f7fffffe BL _CheckBorderX
000040 f9bd1006 LDRSH r1,[sp,#6]
000044 ea5f0800 MOVS r8,r0
000048 d006 BEQ |L6.88|
00004a 220c MOVS r2,#0xc
00004c 4638 MOV r0,r7
00004e f7fffffe BL _CheckBorderY
000052 ea400008 ORR r0,r0,r8
000056 e00c B |L6.114|
|L6.88|
000058 2203 MOVS r2,#3
00005a 4638 MOV r0,r7
00005c f7fffffe BL _CheckBorderY
000060 0004 MOVS r4,r0
000062 d007 BEQ |L6.116|
000064 f9bd1004 LDRSH r1,[sp,#4]
000068 220c MOVS r2,#0xc
00006a 4630 MOV r0,r6
00006c f7fffffe BL _CheckBorderX
000070 4320 ORRS r0,r0,r4
|L6.114|
000072 4604 MOV r4,r0
|L6.116|
;;;400 if (pState->Pressed == 1) {
000074 7a28 LDRB r0,[r5,#8]
;;;401 if (_CaptureFlags & FRAMEWIN_RESIZE) {
000076 4d15 LDR r5,|L6.204|
000078 2801 CMP r0,#1 ;400
00007a d117 BNE |L6.172|
00007c 68a8 LDR r0,[r5,#8] ; _CaptureFlags
00007e 0700 LSLS r0,r0,#28
000080 d006 BEQ |L6.144|
;;;402 _ChangeWindowPosSize(hWin, &x, &y);
000082 aa02 ADD r2,sp,#8
000084 a903 ADD r1,sp,#0xc
000086 4648 MOV r0,r9
000088 f7fffffe BL _ChangeWindowPosSize
;;;403 _SetCapture(hWin, x, y, 0);
00008c 2300 MOVS r3,#0
;;;404 return 1;
00008e e007 B |L6.160|
|L6.144|
;;;405 } else if (Mode) {
000090 b1d4 CBZ r4,|L6.200|
;;;406 WM_SetFocus(hWin);
000092 4648 MOV r0,r9
000094 f7fffffe BL WM_SetFocus
;;;407 WM_BringToTop(hWin);
000098 4648 MOV r0,r9
00009a f7fffffe BL WM_BringToTop
;;;408 _SetCapture(hWin, x, y, Mode);
00009e 4623 MOV r3,r4
|L6.160|
0000a0 e9dd2102 LDRD r2,r1,[sp,#8] ;403
0000a4 4648 MOV r0,r9 ;403
0000a6 f7fffffe BL _SetCapture
0000aa e009 B |L6.192|
|L6.172|
;;;409 return 1;
;;;410 }
;;;411 #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
;;;412 else if (_CaptureFlags) {
;;;413 WM_ReleaseCapture();
;;;414 return 1;
;;;415 }
;;;416 #endif
;;;417 } else if (WM_HasCaptured(hWin)) {
0000ac 4648 MOV r0,r9
0000ae f7fffffe BL WM_HasCaptured
0000b2 b148 CBZ r0,|L6.200|
;;;418 _CaptureFlags &= ~(FRAMEWIN_RESIZE);
0000b4 68a8 LDR r0,[r5,#8] ; _CaptureFlags
0000b6 f020000f BIC r0,r0,#0xf
;;;419 #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
;;;420 if (!Mode)
;;;421 #endif
;;;422 {
;;;423 WM_ReleaseCapture();
0000ba 60a8 STR r0,[r5,#8] ; _CaptureFlags
0000bc f7fffffe BL WM_ReleaseCapture
|L6.192|
;;;424 }
;;;425 return 1;
0000c0 2001 MOVS r0,#1
|L6.194|
;;;426 }
;;;427 }
;;;428 return 0;
;;;429 }
0000c2 b004 ADD sp,sp,#0x10
0000c4 e8bd87f0 POP {r4-r10,pc}
|L6.200|
0000c8 2000 MOVS r0,#0 ;428
0000ca e7fa B |L6.194|
;;;430
ENDP
|L6.204|
DCD ||.data||
AREA ||i._SetCapture||, CODE, READONLY, ALIGN=2
_SetCapture PROC
;;;282 */
;;;283 static void _SetCapture(FRAMEWIN_Handle hWin, int x, int y, int Mode) {
000000 b570 PUSH {r4-r6,lr}
;;;284 if ((_CaptureFlags & FRAMEWIN_REPOS_X) == 0) {
000002 4d0d LDR r5,|L7.56|
000004 4606 MOV r6,r0 ;283
000006 68a8 LDR r0,[r5,#8] ; _CaptureFlags
000008 461c MOV r4,r3 ;283
00000a 0743 LSLS r3,r0,#29
00000c d400 BMI |L7.16|
;;;285 _CaptureX = x;
00000e 6029 STR r1,[r5,#0] ; _CaptureX
|L7.16|
;;;286 }
;;;287 if ((_CaptureFlags & FRAMEWIN_REPOS_Y) == 0) {
000010 0700 LSLS r0,r0,#28
000012 d400 BMI |L7.22|
;;;288 _CaptureY = y;
000014 606a STR r2,[r5,#4] ; _CaptureY
|L7.22|
;;;289 }
;;;290 if (Mode) {
000016 2c00 CMP r4,#0
000018 d00d BEQ |L7.54|
;;;291 if (WM_HasCaptured(hWin) == 0) {
00001a 4630 MOV r0,r6
00001c f7fffffe BL WM_HasCaptured
000020 b918 CBNZ r0,|L7.42|
;;;292 WM_SetCapture(hWin, 0);
000022 2100 MOVS r1,#0
000024 4630 MOV r0,r6
000026 f7fffffe BL WM_SetCapture
|L7.42|
;;;293 }
;;;294 #if GUI_SUPPORT_CURSOR
;;;295 _SetResizeCursor(Mode);
;;;296 #endif
;;;297 if (Mode & FRAMEWIN_MOUSEOVER) {
00002a 06e0 LSLS r0,r4,#27
00002c d500 BPL |L7.48|
;;;298 Mode = 0;
00002e 2400 MOVS r4,#0
|L7.48|
;;;299 }
;;;300 _CaptureFlags = (Mode | FRAMEWIN_MOUSEOVER);
000030 f0440010 ORR r0,r4,#0x10
000034 60a8 STR r0,[r5,#8] ; _CaptureFlags
|L7.54|
;;;301 }
;;;302 }
000036 bd70 POP {r4-r6,pc}
;;;303
ENDP
|L7.56|
DCD ||.data||
AREA ||.data||, DATA, ALIGN=2
_CaptureX
DCD 0x00000000
_CaptureY
DCD 0x00000000
_CaptureFlags
DCD 0x00000000
_HOOK_Resizeable
% 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -