📄 listview.txt
字号:
000096 4618 MOV r0,r3
000098 9500 STR r5,[sp,#0]
00009a 9303 STR r3,[sp,#0xc]
00009c f7fffffe BL HEADER_CreateEx
0000a0 8520 STRH r0,[r4,#0x28]
;;;616 LISTVIEW__UpdateScrollParas(hObj, pObj);
0000a2 4621 MOV r1,r4
0000a4 4628 MOV r0,r5
0000a6 f7fffffe BL LISTVIEW__UpdateScrollParas
|L3.170|
;;;617 WM_UNLOCK();
;;;618 } else {
;;;619 GUI_DEBUG_ERROROUT_IF(hObj==0, "LISTVIEW_Create failed")
;;;620 }
;;;621 return hObj;
0000aa 4628 MOV r0,r5
;;;622 }
0000ac b004 ADD sp,sp,#0x10
0000ae e8bd87f0 POP {r4-r10,pc}
;;;623
ENDP
0000b2 0000 DCW 0x0000
|L3.180|
DCD _LISTVIEW_Callback
|L3.184|
DCD ||.data||
AREA ||i.LISTVIEW_DecSel||, CODE, READONLY, ALIGN=1
LISTVIEW_DecSel PROC
;;;642 */
;;;643 void LISTVIEW_DecSel(LISTVIEW_Handle hObj) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;644 int Sel = LISTVIEW_GetSel(hObj);
000004 f7fffffe BL LISTVIEW_GetSel
;;;645 if (Sel) {
000008 2800 CMP r0,#0
00000a d005 BEQ |L4.24|
;;;646 LISTVIEW_SetSel(hObj, Sel - 1);
00000c 1e41 SUBS r1,r0,#1
00000e 4620 MOV r0,r4
000010 e8bd4010 POP {r4,lr}
000014 f7ffbffe B.W LISTVIEW_SetSel
|L4.24|
;;;647 }
;;;648 }
000018 bd10 POP {r4,pc}
;;;649
ENDP
AREA ||i.LISTVIEW_IncSel||, CODE, READONLY, ALIGN=1
LISTVIEW_IncSel PROC
;;;633 */
;;;634 void LISTVIEW_IncSel(LISTVIEW_Handle hObj) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;635 int Sel = LISTVIEW_GetSel(hObj);
000004 f7fffffe BL LISTVIEW_GetSel
;;;636 LISTVIEW_SetSel(hObj, Sel + 1);
000008 1c41 ADDS r1,r0,#1
00000a 4620 MOV r0,r4
00000c e8bd4010 POP {r4,lr}
000010 f7ffbffe B.W LISTVIEW_SetSel
;;;637 }
;;;638
ENDP
AREA ||i.LISTVIEW__GetRowDistY||, CODE, READONLY, ALIGN=1
LISTVIEW__GetRowDistY PROC
;;;105 */
;;;106 unsigned LISTVIEW__GetRowDistY(const LISTVIEW_Obj* pObj) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;107 unsigned RowDistY;
;;;108 if (pObj->RowDistY) {
000004 6dc0 LDR r0,[r0,#0x5c]
000006 2800 CMP r0,#0
000008 d106 BNE |L6.24|
;;;109 RowDistY = pObj->RowDistY;
;;;110 } else {
;;;111 RowDistY = GUI_GetYDistOfFont(pObj->Props.pFont);
00000a 6d20 LDR r0,[r4,#0x50]
00000c f7fffffe BL GUI_GetYDistOfFont
;;;112 if (pObj->ShowGrid) {
000010 6da1 LDR r1,[r4,#0x58]
000012 2900 CMP r1,#0
000014 d000 BEQ |L6.24|
;;;113 RowDistY++;
000016 1c40 ADDS r0,r0,#1
|L6.24|
;;;114 }
;;;115 }
;;;116 return RowDistY;
;;;117 }
000018 bd10 POP {r4,pc}
;;;118
ENDP
AREA ||i.LISTVIEW__InvalidateInsideArea||, CODE, READONLY, ALIGN=1
LISTVIEW__InvalidateInsideArea PROC
;;;280 */
;;;281 void LISTVIEW__InvalidateInsideArea(LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj) {
000000 b57c PUSH {r2-r6,lr}
000002 4605 MOV r5,r0
;;;282 GUI_RECT Rect;
;;;283 int HeaderHeight;
;;;284 HeaderHeight = HEADER_GetHeight(pObj->hHeader);
000004 f9b10028 LDRSH r0,[r1,#0x28]
000008 f7fffffe BL HEADER_GetHeight
00000c 4604 MOV r4,r0
;;;285 WM_GetInsideRectExScrollbar(hObj, &Rect);
00000e 4669 MOV r1,sp
000010 4628 MOV r0,r5
000012 f7fffffe BL WM_GetInsideRectExScrollbar
;;;286 Rect.y0 += HeaderHeight;
000016 f8bd0002 LDRH r0,[sp,#2]
;;;287 WM_InvalidateRect(hObj, &Rect);
00001a 4669 MOV r1,sp
00001c 4420 ADD r0,r0,r4 ;286
00001e f8ad0002 STRH r0,[sp,#2] ;286
000022 4628 MOV r0,r5
000024 f7fffffe BL WM_InvalidateRect
;;;288 }
000028 bd7c POP {r2-r6,pc}
;;;289
ENDP
AREA ||i.LISTVIEW__InvalidateRow||, CODE, READONLY, ALIGN=1
LISTVIEW__InvalidateRow PROC
;;;293 */
;;;294 void LISTVIEW__InvalidateRow(LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj, int Sel) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 4680 MOV r8,r0
000006 460d MOV r5,r1
000008 1e16 SUBS r6,r2,#0
;;;295 if (Sel >= 0) {
00000a db1d BLT |L8.72|
;;;296 GUI_RECT Rect;
;;;297 int HeaderHeight, RowDistY;
;;;298 HeaderHeight = HEADER_GetHeight(pObj->hHeader);
00000c f9b50028 LDRSH r0,[r5,#0x28]
000010 f7fffffe BL HEADER_GetHeight
000014 4607 MOV r7,r0
;;;299 RowDistY = LISTVIEW__GetRowDistY(pObj);
000016 4628 MOV r0,r5
000018 f7fffffe BL LISTVIEW__GetRowDistY
00001c 4604 MOV r4,r0
;;;300 WM_GetInsideRectExScrollbar(hObj, &Rect);
00001e 4669 MOV r1,sp
000020 4640 MOV r0,r8
000022 f7fffffe BL WM_GetInsideRectExScrollbar
;;;301 Rect.y0 += HeaderHeight + (Sel - pObj->ScrollStateV.v) * RowDistY;
000026 6ee9 LDR r1,[r5,#0x6c]
000028 f9bd0002 LDRSH r0,[sp,#2]
00002c 1a71 SUBS r1,r6,r1
00002e fb010104 MLA r1,r1,r4,r0
000032 19c8 ADDS r0,r1,r7
000034 f8ad0002 STRH r0,[sp,#2]
;;;302 Rect.y1 = Rect.y0 + RowDistY - 1;
000038 1e64 SUBS r4,r4,#1
00003a 4420 ADD r0,r0,r4
00003c f8ad0006 STRH r0,[sp,#6]
;;;303 WM_InvalidateRect(hObj, &Rect);
000040 4669 MOV r1,sp
000042 4640 MOV r0,r8
000044 f7fffffe BL WM_InvalidateRect
|L8.72|
;;;304 }
;;;305 }
000048 e8bd81fc POP {r2-r8,pc}
;;;306
ENDP
AREA ||i.LISTVIEW__UpdateScrollParas||, CODE, READONLY, ALIGN=1
LISTVIEW__UpdateScrollParas PROC
;;;441 */
;;;442 int LISTVIEW__UpdateScrollParas(LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj) {
000000 e92d47fc PUSH {r2-r10,lr}
000004 4681 MOV r9,r0
000006 460d MOV r5,r1
;;;443 int NumRows;
;;;444 NumRows = GUI_ARRAY_GetNumItems(&pObj->RowArray);
000008 f101002a ADD r0,r1,#0x2a
00000c f7fffffe BL GUI_ARRAY_GetNumItems
000010 4604 MOV r4,r0
;;;445 /* update vertical scrollbar */
;;;446 pObj->ScrollStateV.PageSize = _GetNumVisibleRows(hObj, pObj);
000012 4629 MOV r1,r5
000014 4648 MOV r0,r9
000016 f7fffffe BL _GetNumVisibleRows
;;;447 pObj->ScrollStateV.NumItems = (NumRows) ? NumRows : 1;
00001a 6728 STR r0,[r5,#0x70]
00001c 2001 MOVS r0,#1
00001e b104 CBZ r4,|L9.34|
000020 4620 MOV r0,r4
|L9.34|
000022 66a8 STR r0,[r5,#0x68]
000024 4669 MOV r1,sp
000026 4648 MOV r0,r9
000028 f7fffffe BL WM_GetInsideRectExScrollbar
00002c f9bd0004 LDRSH r0,[sp,#4]
000030 2401 MOVS r4,#1
000032 1c40 ADDS r0,r0,#1
;;;448 /* update horizontal scrollbar */
;;;449 pObj->ScrollStateH.PageSize = _GetXSize(hObj);
;;;450 pObj->ScrollStateH.NumItems = _GetHeaderWidth(pObj, pObj->hHeader);
000034 67e8 STR r0,[r5,#0x7c]
000036 f9b58028 LDRSH r8,[r5,#0x28]
00003a 4640 MOV r0,r8
00003c f7fffffe BL HEADER_GetNumItems
000040 0007 MOVS r7,r0
000042 d00a BEQ |L9.90|
000044 2600 MOVS r6,#0
000046 4634 MOV r4,r6
000048 e005 B |L9.86|
|L9.74|
00004a 4631 MOV r1,r6
00004c 4640 MOV r0,r8
00004e f7fffffe BL HEADER_GetItemWidth
000052 4404 ADD r4,r4,r0
000054 1c76 ADDS r6,r6,#1
|L9.86|
000056 42be CMP r6,r7
000058 dbf7 BLT |L9.74|
|L9.90|
00005a e9d5011e LDRD r0,r1,[r5,#0x78]
00005e 1a62 SUBS r2,r4,r1
000060 4290 CMP r0,r2
000062 dd02 BLE |L9.106|
000064 1a20 SUBS r0,r4,r0
000066 1a08 SUBS r0,r1,r0
000068 4404 ADD r4,r4,r0
|L9.106|
;;;451 return LISTVIEW__UpdateScrollPos(hObj, pObj);
00006a 4629 MOV r1,r5
00006c 4648 MOV r0,r9
00006e 676c STR r4,[r5,#0x74]
000070 e8bd47fc POP {r2-r10,lr}
000074 f7ffbffe B.W LISTVIEW__UpdateScrollPos
;;;452 }
;;;453
ENDP
AREA ||i.LISTVIEW__UpdateScrollPos||, CODE, READONLY, ALIGN=1
LISTVIEW__UpdateScrollPos PROC
;;;419 */
;;;420 int LISTVIEW__UpdateScrollPos(LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 460c MOV r4,r1
;;;421 int PrevScrollStateV;
;;;422 PrevScrollStateV = pObj->ScrollStateV.v;
;;;423 if (pObj->Sel >= 0) {
000006 6ecd LDR r5,[r1,#0x6c]
000008 6d49 LDR r1,[r1,#0x54]
00000a 4680 MOV r8,r0 ;420
;;;424 WM_CheckScrollPos(&pObj->ScrollStateV, pObj->Sel, 0, 0);
00000c f1040668 ADD r6,r4,#0x68
000010 2900 CMP r1,#0 ;423
000012 db05 BLT |L10.32|
000014 2300 MOVS r3,#0
000016 461a MOV r2,r3
000018 4630 MOV r0,r6
00001a f7fffffe BL WM_CheckScrollPos
00001e e002 B |L10.38|
|L10.32|
000020 4630 MOV r0,r6
;;;425 } else {
;;;426 WM_CheckScrollBounds(&pObj->ScrollStateV);
000022 f7fffffe BL WM_CheckScrollBounds
|L10.38|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -