📄 multipage.txt
字号:
00001c f104002a ADD r0,r4,#0x2a
000020 4629 MOV r1,r5
000022 4681 MOV r9,r0
000024 f7fffffe BL GUI_ARRAY_GetpItem
;;;711 hWin = pPage->hWin;
000028 f9b08000 LDRSH r8,[r0,#0]
;;;712 /* Remove the page from the multipage object */
;;;713 if (Index == pObj->Selection) {
00002c 6b20 LDR r0,[r4,#0x30]
00002e 42a8 CMP r0,r5
000030 d110 BNE |L3.84|
;;;714 if (Index == ((unsigned)pObj->Handles.NumItems - 1)) {
000032 8d60 LDRH r0,[r4,#0x2a]
;;;715 _ShowPage(pObj, Index - 1);
000034 4629 MOV r1,r5
000036 f1a00001 SUB r0,r0,#1 ;714
00003a 42a8 CMP r0,r5 ;714
00003c d105 BNE |L3.74|
00003e 1e49 SUBS r1,r1,#1
000040 4620 MOV r0,r4
000042 f7fffffe BL _ShowPage
;;;716 pObj->Selection--;
000046 6b20 LDR r0,[r4,#0x30]
000048 e005 B |L3.86|
|L3.74|
;;;717 } else {
;;;718 _ShowPage(pObj, Index + 1);
00004a 1c49 ADDS r1,r1,#1
00004c 4620 MOV r0,r4
00004e f7fffffe BL _ShowPage
000052 e002 B |L3.90|
|L3.84|
;;;719 }
;;;720 } else {
;;;721 if (Index < pObj->Selection) {
000054 d901 BLS |L3.90|
|L3.86|
;;;722 pObj->Selection--;
000056 1e40 SUBS r0,r0,#1
000058 6320 STR r0,[r4,#0x30]
|L3.90|
;;;723 }
;;;724 }
;;;725 GUI_ARRAY_DeleteItem(&pObj->Handles, Index);
00005a 4629 MOV r1,r5
00005c 4648 MOV r0,r9
00005e f7fffffe BL GUI_ARRAY_DeleteItem
;;;726 _UpdatePositions(hObj, pObj);
000062 4621 MOV r1,r4
000064 4630 MOV r0,r6
000066 f7fffffe BL _UpdatePositions
;;;727 /* Delete the window of the page */
;;;728 if (Delete) {
00006a 2f00 CMP r7,#0
00006c d004 BEQ |L3.120|
;;;729 WM_DeleteWindow(hWin);
00006e 4640 MOV r0,r8
000070 e8bd47f0 POP {r4-r10,lr}
000074 f7ffbffe B.W WM_DeleteWindow
|L3.120|
;;;730 }
;;;731 }
;;;732 }
;;;733 WM_UNLOCK();
;;;734 }
;;;735 }
000078 e8bd87f0 POP {r4-r10,pc}
;;;736
ENDP
AREA ||i.MULTIPAGE_DisablePage||, CODE, READONLY, ALIGN=1
MULTIPAGE_DisablePage PROC
;;;763 */
;;;764 void MULTIPAGE_DisablePage(MULTIPAGE_Handle hObj, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;765 if (hObj) {
000006 d00d BEQ |L4.36|
;;;766 MULTIPAGE_Obj* pObj;
;;;767 WM_LOCK();
;;;768 pObj = MULTIPAGE_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;769 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;770 if (pObj) {
00000e 2800 CMP r0,#0
000010 d008 BEQ |L4.36|
;;;771 _SetEnable(pObj, Index, 0);
000012 2200 MOVS r2,#0
000014 4629 MOV r1,r5
000016 f7fffffe BL _SetEnable
;;;772 WM_InvalidateWindow(hObj);
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L4.36|
;;;773 }
;;;774 WM_UNLOCK();
;;;775 }
;;;776 }
000024 bd70 POP {r4-r6,pc}
;;;777
ENDP
AREA ||i.MULTIPAGE_EnablePage||, CODE, READONLY, ALIGN=1
MULTIPAGE_EnablePage PROC
;;;781 */
;;;782 void MULTIPAGE_EnablePage(MULTIPAGE_Handle hObj, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;783 if (hObj) {
000006 d00d BEQ |L5.36|
;;;784 MULTIPAGE_Obj* pObj;
;;;785 WM_LOCK();
;;;786 pObj = MULTIPAGE_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;787 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;788 if (pObj) {
00000e 2800 CMP r0,#0
000010 d008 BEQ |L5.36|
;;;789 _SetEnable(pObj, Index, 1);
000012 2201 MOVS r2,#1
000014 4629 MOV r1,r5
000016 f7fffffe BL _SetEnable
;;;790 WM_InvalidateWindow(hObj);
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L5.36|
;;;791 }
;;;792 WM_UNLOCK();
;;;793 }
;;;794 }
000024 bd70 POP {r4-r6,pc}
;;;795
ENDP
AREA ||i.MULTIPAGE_GetSelection||, CODE, READONLY, ALIGN=1
MULTIPAGE_GetSelection PROC
;;;909 */
;;;910 int MULTIPAGE_GetSelection(MULTIPAGE_Handle hObj) {
000000 b510 PUSH {r4,lr}
;;;911 int r = 0;
000002 2400 MOVS r4,#0
;;;912 if (hObj) {
000004 b118 CBZ r0,|L6.14|
;;;913 MULTIPAGE_Obj* pObj;
;;;914 WM_LOCK();
;;;915 pObj = MULTIPAGE_H2P(hObj);
000006 f7fffffe BL GUI_ALLOC_h2p
;;;916 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;917 if (pObj) {
00000a b100 CBZ r0,|L6.14|
;;;918 r = pObj->Selection;
00000c 6b04 LDR r4,[r0,#0x30]
|L6.14|
;;;919 }
;;;920 WM_UNLOCK();
;;;921 }
;;;922 return r;
00000e 4620 MOV r0,r4
;;;923 }
000010 bd10 POP {r4,pc}
;;;924
ENDP
AREA ||i.MULTIPAGE_GetWindow||, CODE, READONLY, ALIGN=1
MULTIPAGE_GetWindow PROC
;;;928 */
;;;929 WM_HWIN MULTIPAGE_GetWindow(MULTIPAGE_Handle hObj, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 460d MOV r5,r1
;;;930 WM_HWIN r = 0;
000004 2400 MOVS r4,#0
;;;931 if (hObj) {
000006 b158 CBZ r0,|L7.32|
;;;932 MULTIPAGE_Obj* pObj;
;;;933 WM_LOCK();
;;;934 pObj = MULTIPAGE_H2P(hObj);
000008 f7fffffe BL GUI_ALLOC_h2p
;;;935 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;936 if (pObj) {
00000c b140 CBZ r0,|L7.32|
;;;937 if ((int)Index < pObj->Handles.NumItems) {
00000e 8d41 LDRH r1,[r0,#0x2a]
000010 42a9 CMP r1,r5
000012 dd05 BLE |L7.32|
;;;938 MULTIPAGE_PAGE* pPage;
;;;939 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
000014 4629 MOV r1,r5
000016 302a ADDS r0,r0,#0x2a
000018 f7fffffe BL GUI_ARRAY_GetpItem
;;;940 r = pPage->hWin;
00001c f9b04000 LDRSH r4,[r0,#0]
|L7.32|
;;;941 }
;;;942 }
;;;943 WM_UNLOCK();
;;;944 }
;;;945 return r;
000020 4620 MOV r0,r4
;;;946 }
000022 bd70 POP {r4-r6,pc}
;;;947
ENDP
AREA ||i.MULTIPAGE_IsPageEnabled||, CODE, READONLY, ALIGN=1
MULTIPAGE_IsPageEnabled PROC
;;;951 */
;;;952 int MULTIPAGE_IsPageEnabled(MULTIPAGE_Handle hObj, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 460d MOV r5,r1
;;;953 int r = 0;
000004 2400 MOVS r4,#0
;;;954 if (hObj) {
000006 b130 CBZ r0,|L8.22|
;;;955 MULTIPAGE_Obj* pObj;
;;;956 WM_LOCK();
;;;957 pObj = MULTIPAGE_H2P(hObj);
000008 f7fffffe BL GUI_ALLOC_h2p
;;;958 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;959 if (pObj) {
00000c b118 CBZ r0,|L8.22|
;;;960 r = _GetEnable(pObj, Index);
00000e 4629 MOV r1,r5
000010 f7fffffe BL _GetEnable
000014 4604 MOV r4,r0
|L8.22|
;;;961 }
;;;962 WM_UNLOCK();
;;;963 }
;;;964 return r;
000016 4620 MOV r0,r4
;;;965 }
000018 bd70 POP {r4-r6,pc}
;;;966
ENDP
AREA ||i.MULTIPAGE_SelectPage||, CODE, READONLY, ALIGN=1
MULTIPAGE_SelectPage PROC
;;;740 */
;;;741 void MULTIPAGE_SelectPage(MULTIPAGE_Handle hObj, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 0006 MOVS r6,r0
000004 460d MOV r5,r1
;;;742 if (hObj) {
000006 d01b BEQ |L9.64|
;;;743 MULTIPAGE_Obj* pObj;
;;;744 WM_LOCK();
;;;745 pObj = MULTIPAGE_H2P(hObj);
000008 4630 MOV r0,r6
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 0004 MOVS r4,r0
;;;746 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;747 if (pObj) {
000010 d016 BEQ |L9.64|
;;;748 if ((int)Index < pObj->Handles.NumItems) {
000012 8d60 LDRH r0,[r4,#0x2a]
000014 42a8 CMP r0,r5
000016 dd13 BLE |L9.64|
;;;749 if (Index != pObj->Selection && _GetEnable(pObj, Index)) {
000018 6b20 LDR r0,[r4,#0x30]
00001a 42a8 CMP r0,r5
00001c d010 BEQ |L9.64|
00001e 4629 MOV r1,r5
000020 4620 MOV r0,r4
000022 f7fffffe BL _GetEnable
000026 2800 CMP r0,#0
000028 d00a BEQ |L9.64|
;;;750 _ShowPage(pObj, Index);
00002a 4629 MOV r1,r5
00002c 4620 MOV r0,r4
00002e f7fffffe BL _ShowPage
;;;751 pObj->Selection = Index;
;;;752 _UpdatePositions(hObj, pObj);
000032 4621 MOV r1,r4
000034 4630 MOV r0,r6
000036 6325 STR r5,[r4,#0x30]
000038 e8bd4070 POP {r4-r6,lr}
00003c f7ffbffe B.W _UpdatePositions
|L9.64|
;;;753 }
;;;754 }
;;;755 }
;;;756 WM_UNLOCK();
;;;757 }
;;;758 }
000040 bd70 POP {r4-r6,pc}
;;;759
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -