📄 multipage.txt
字号:
000020 f7fffffe BL GUI_GetYSizeOfFont
000024 8861 LDRH r1,[r4,#2] ;225
000026 1d80 ADDS r0,r0,#6 ;225
000028 4408 ADD r0,r0,r1 ;225
00002a 8060 STRH r0,[r4,#2] ;225
00002c bd70 POP {r4-r6,pc}
;;;228
ENDP
AREA ||i._Callback||, CODE, READONLY, ALIGN=1
_Callback PROC
;;;506 */
;;;507 static void _Callback (WM_MESSAGE *pMsg) {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;508 MULTIPAGE_Handle hObj = pMsg->hWin;
000004 f9b07004 LDRSH r7,[r0,#4]
000008 4604 MOV r4,r0 ;507
;;;509 MULTIPAGE_Obj* pObj;
;;;510 int Handled;
;;;511 WM_LOCK();
;;;512 pObj = MULTIPAGE_H2P(hObj);
00000a 4638 MOV r0,r7
00000c f7fffffe BL GUI_ALLOC_h2p
000010 4605 MOV r5,r0
;;;513 Handled = WIDGET_HandleActive(hObj, pMsg);
000012 4621 MOV r1,r4
000014 4638 MOV r0,r7
000016 f7fffffe BL WIDGET_HandleActive
00001a 4606 MOV r6,r0
;;;514 switch (pMsg->MsgId) {
00001c 6820 LDR r0,[r4,#0]
00001e 2814 CMP r0,#0x14
000020 d03f BEQ |L17.162|
000022 dc0c BGT |L17.62|
000024 2805 CMP r0,#5
000026 d017 BEQ |L17.88|
000028 280b CMP r0,#0xb
00002a d040 BEQ |L17.174|
00002c 280c CMP r0,#0xc
00002e d019 BEQ |L17.100|
000030 280f CMP r0,#0xf
000032 d140 BNE |L17.182|
;;;515 case WM_PAINT:
;;;516 _Paint(pObj);
000034 4628 MOV r0,r5
000036 e8bd41f0 POP {r4-r8,lr}
00003a f7ffbffe B.W _Paint
|L17.62|
00003e 2817 CMP r0,#0x17 ;514
000040 d02a BEQ |L17.152|
000042 2826 CMP r0,#0x26 ;514
000044 d015 BEQ |L17.114|
000046 f5b07f40 CMP r0,#0x300 ;514
00004a d134 BNE |L17.182|
;;;517 break;
;;;518 case WM_TOUCH:
;;;519 _OnTouch(hObj, pObj, pMsg);
;;;520 break;
;;;521 case WM_NOTIFY_PARENT:
;;;522 if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) {
;;;523 if (WM_GetId(pMsg->hWinSrc) == GUI_ID_HSCROLL) {
;;;524 pObj->ScrollState = SCROLLBAR_GetValue(pMsg->hWinSrc);
;;;525 WM_InvalidateWindow(hObj);
;;;526 }
;;;527 }
;;;528 break;
;;;529 case WM_GET_CLIENT_WINDOW:
;;;530 pMsg->Data.v = (int)pObj->hClient;
;;;531 break;
;;;532 case WM_GET_INSIDE_RECT:
;;;533 _CalcClientRect(pObj, (GUI_RECT*)(pMsg->Data.p));
;;;534 break;
;;;535 case WM_WIDGET_SET_EFFECT:
;;;536 WIDGET_SetEffect(WM_GetScrollbarH(hObj), (WIDGET_EFFECT const *)pMsg->Data.p);
00004c 4638 MOV r0,r7
00004e f7fffffe BL WM_GetScrollbarH
000052 68a1 LDR r1,[r4,#8]
000054 f7fffffe BL WIDGET_SetEffect
|L17.88|
;;;537 case WM_SIZE:
;;;538 _UpdatePositions(hObj, pObj);
000058 4629 MOV r1,r5
00005a 4638 MOV r0,r7
00005c e8bd41f0 POP {r4-r8,lr}
000060 f7ffbffe B.W _UpdatePositions
|L17.100|
000064 4622 MOV r2,r4 ;519
000066 4629 MOV r1,r5 ;519
000068 4638 MOV r0,r7 ;519
00006a e8bd41f0 POP {r4-r8,lr} ;519
00006e f7ffbffe B.W _OnTouch
|L17.114|
000072 68a0 LDR r0,[r4,#8] ;522
000074 2805 CMP r0,#5 ;522
000076 d112 BNE |L17.158|
000078 f9b40006 LDRSH r0,[r4,#6] ;523
00007c f7fffffe BL WM_GetId
000080 28ff CMP r0,#0xff ;523
000082 d10c BNE |L17.158|
000084 f9b40006 LDRSH r0,[r4,#6] ;524
000088 f7fffffe BL SCROLLBAR_GetValue
00008c 6368 STR r0,[r5,#0x34] ;525
00008e 4638 MOV r0,r7 ;525
000090 e8bd41f0 POP {r4-r8,lr} ;525
000094 f7ffbffe B.W WM_InvalidateWindow
|L17.152|
000098 f9b50028 LDRSH r0,[r5,#0x28] ;530
00009c 60a0 STR r0,[r4,#8] ;531
|L17.158|
;;;539 break;
;;;540 case WM_DELETE:
;;;541 GUI_ARRAY_Delete(&pObj->Handles);
;;;542 /* No break here ... WM_DefaultProc needs to be called */
;;;543 default:
;;;544 /* Let widget handle the standard messages */
;;;545 if (Handled) {
;;;546 WM_DefaultProc(pMsg);
;;;547 }
;;;548 }
;;;549 WM_UNLOCK();
;;;550 }
00009e e8bd81f0 POP {r4-r8,pc}
|L17.162|
0000a2 4628 MOV r0,r5 ;533
0000a4 68a1 LDR r1,[r4,#8] ;533
0000a6 e8bd41f0 POP {r4-r8,lr} ;533
0000aa f7ffbffe B.W _CalcClientRect
|L17.174|
0000ae f105002a ADD r0,r5,#0x2a ;541
0000b2 f7fffffe BL GUI_ARRAY_Delete
|L17.182|
0000b6 2e00 CMP r6,#0 ;545
0000b8 d0f1 BEQ |L17.158|
0000ba 4620 MOV r0,r4 ;546
0000bc e8bd41f0 POP {r4-r8,lr} ;546
0000c0 f7ffbffe B.W WM_DefaultProc
;;;551
ENDP
AREA ||i._ClickedOnMultipage||, CODE, READONLY, ALIGN=1
_ClickedOnMultipage PROC
;;;441 */
;;;442 static int _ClickedOnMultipage(MULTIPAGE_Handle hObj, MULTIPAGE_Obj* pObj, int x, int y) {
000000 e92d47fc PUSH {r2-r10,lr}
000004 4688 MOV r8,r1
000006 4681 MOV r9,r0
000008 4616 MOV r6,r2
00000a 461c MOV r4,r3
;;;443 GUI_RECT rText;
;;;444 _GetTextRect(pObj, &rText);
00000c 4669 MOV r1,sp
00000e 4640 MOV r0,r8
000010 f7fffffe BL _GetTextRect
;;;445 if ((y >= rText.y0) && (y <= rText.y1)) {
000014 f9bd0002 LDRSH r0,[sp,#2]
000018 42a0 CMP r0,r4
00001a dc2f BGT |L18.124|
00001c f9bd0006 LDRSH r0,[sp,#6]
000020 42a0 CMP r0,r4
000022 db2b BLT |L18.124|
;;;446 if ((pObj->Handles.NumItems > 0) && (x >= rText.x0) && (x <= rText.x1)) {
000024 f8b8002a LDRH r0,[r8,#0x2a]
000028 b380 CBZ r0,|L18.140|
00002a f9bd4000 LDRSH r4,[sp,#0]
00002e 42b4 CMP r4,r6
000030 dc2c BGT |L18.140|
000032 f9bd0004 LDRSH r0,[sp,#4]
000036 42b0 CMP r0,r6
000038 db28 BLT |L18.140|
;;;447 int i, w = 0, x0 = rText.x0;
;;;448 /* Check if another page must be selected */
;;;449 if (pObj->Widget.State & MULTIPAGE_STATE_SCROLLMODE) {
00003a f8b80026 LDRH r0,[r8,#0x26]
00003e 2700 MOVS r7,#0 ;447
000040 05c0 LSLS r0,r0,#23
000042 d505 BPL |L18.80|
;;;450 x0 -= _GetPagePosX(pObj, pObj->ScrollState);
000044 4640 MOV r0,r8
000046 f8d81034 LDR r1,[r8,#0x34]
00004a f7fffffe BL _GetPagePosX
00004e 1a24 SUBS r4,r4,r0
|L18.80|
;;;451 }
;;;452 for (i = 0; i < pObj->Handles.NumItems; i++) {
000050 2500 MOVS r5,#0
000052 e017 B |L18.132|
|L18.84|
;;;453 x0 += w;
000054 443c ADD r4,r4,r7
;;;454 w = _GetPageSizeX(pObj, i);
000056 4629 MOV r1,r5
000058 4640 MOV r0,r8
00005a f7fffffe BL _GetPageSizeX
00005e 4607 MOV r7,r0
;;;455 if (x >= x0 && x <= (x0 + w - 1)) {
000060 42a6 CMP r6,r4
000062 db0e BLT |L18.130|
000064 19e0 ADDS r0,r4,r7
000066 1e40 SUBS r0,r0,#1
000068 42b0 CMP r0,r6
00006a db0a BLT |L18.130|
;;;456 MULTIPAGE_SelectPage(hObj, i);
00006c 4629 MOV r1,r5
00006e 4648 MOV r0,r9
000070 f7fffffe BL MULTIPAGE_SelectPage
;;;457 WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
000074 2105 MOVS r1,#5
000076 4648 MOV r0,r9
000078 f7fffffe BL WM_NotifyParent
|L18.124|
;;;458 return 1;
;;;459 }
;;;460 }
;;;461 }
;;;462 return 0;
;;;463 }
;;;464 return 1;
00007c 2001 MOVS r0,#1
|L18.126|
;;;465 }
00007e e8bd87fc POP {r2-r10,pc}
|L18.130|
000082 1c6d ADDS r5,r5,#1 ;452
|L18.132|
000084 f8b8002a LDRH r0,[r8,#0x2a] ;452
000088 42a8 CMP r0,r5 ;452
00008a dce3 BGT |L18.84|
|L18.140|
00008c 2000 MOVS r0,#0 ;462
00008e e7f6 B |L18.126|
;;;466
ENDP
AREA ||i._ClientCallback||, CODE, READONLY, ALIGN=1
_ClientCallback PROC
;;;555 */
;;;556 static void _ClientCallback(WM_MESSAGE* pMsg) {
000000 b570 PUSH {r4-r6,lr}
;;;557 WM_HWIN hObj = pMsg->hWin;
000002 f9b05004 LDRSH r5,[r0,#4]
000006 4604 MOV r4,r0 ;556
;;;558 WM_HWIN hParent = WM_GetParent(hObj);
000008 4628 MOV r0,r5
00000a f7fffffe BL WM_GetParent
00000e 4606 MOV r6,r0
;;;559 MULTIPAGE_Obj* pParent;
;;;560 WM_LOCK();
;;;561 pParent = MULTIPAGE_H2P(hParent);
000010 f7fffffe BL GUI_ALLOC_h2p
;;;562 switch (pMsg->MsgId) {
000014 6821 LDR r1,[r4,#0]
000016 290c CMP r1,#0xc
000018 d00e BEQ |L19.56|
00001a 290f CMP r1,#0xf
00001c d005 BEQ |L19.42|
00001e 2914 CMP r1,#0x14
000020 d012 BEQ |L19.72|
000022 2917 CMP r1,#0x17
000024 d100 BNE |L19.40|
;;;563 case WM_PAINT:
;;;564 LCD_SetBkColor(pParent->aBkColor[1]);
;;;565 GUI_Clear();
;;;566 break;
;;;567 case WM_TOUCH:
;;;568 WM_SetFocus(hParent);
;;;569 WM_BringToTop(hParent);
;;;570 break;
;;;571 case WM_GET_CLIENT_WINDOW:
;;;572 pMsg->Data.v = (int)hObj;
;;;573 break;
000026 60a5 STR r5,[r4,#8]
|L19.40|
;;;574 case WM_GET_INSIDE_RECT:
;;;575 WM_DefaultProc(pMsg);
;;;576 }
;;;577 WM_UNLOCK();
;;;578 }
000028 bd70 POP {r4-r6,pc}
|L19.42|
00002a 6c40 LDR r0,[r0,#0x44] ;564
00002c f7fffffe BL LCD_SetBkColor
000030 e8bd4070 POP {r4-r6,lr} ;565
000034 f7ffbffe B.W GUI_Clear
|L19.56|
000038 4630 MOV r0,r6 ;568
00003a f7fffffe BL WM_SetFocus
00003e 4630 MOV r0,r6 ;569
000040 e8bd4070 POP {r4-r6,lr} ;569
000044 f7ffbffe B.W WM_BringToTop
|L19.72|
000048 4620 MOV r0,r4 ;575
00004a e8bd4070 POP {r4-r6,lr} ;575
00004e f7ffbffe B.W WM_DefaultProc
;;;579
ENDP
AREA ||i._DrawTextItem||, CODE, READONLY, ALIGN=2
_DrawTextItem PROC
;;;360 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -