📄 listbox.txt
字号:
;;;1076 }
000080 e8bd81f0 POP {r4-r8,pc}
;;;1077
ENDP
AREA ||i.LISTBOX_SetText||, CODE, READONLY, ALIGN=1
LISTBOX_SetText PROC
;;;1020 */
;;;1021 void LISTBOX_SetText(LISTBOX_Handle hObj, const GUI_ConstString* ppText) {
000000 b570 PUSH {r4-r6,lr}
000002 0006 MOVS r6,r0
000004 460d MOV r5,r1
;;;1022 if (hObj) {
000006 d011 BEQ |L10.44|
;;;1023 int i;
;;;1024 const char* s;
;;;1025 WM_LOCK();
;;;1026 if (ppText) {
000008 b14d CBZ r5,|L10.30|
;;;1027 for (i = 0; (s = *(ppText+i)) != 0; i++) {
00000a 2400 MOVS r4,#0
00000c e003 B |L10.22|
|L10.14|
;;;1028 LISTBOX_AddString(hObj, s);
00000e 4630 MOV r0,r6
000010 f7fffffe BL LISTBOX_AddString
000014 1c64 ADDS r4,r4,#1 ;1027
|L10.22|
000016 f8551024 LDR r1,[r5,r4,LSL #2] ;1027
00001a 2900 CMP r1,#0 ;1027
00001c d1f7 BNE |L10.14|
|L10.30|
;;;1029 }
;;;1030 }
;;;1031 LISTBOX_InvalidateItem(hObj, LISTBOX_ALL_ITEMS);
00001e 4630 MOV r0,r6
000020 e8bd4070 POP {r4-r6,lr}
000024 f04f31ff MOV r1,#0xffffffff
000028 f7ffbffe B.W LISTBOX_InvalidateItem
|L10.44|
;;;1032 WM_UNLOCK();
;;;1033 }
;;;1034 }
00002c bd70 POP {r4-r6,pc}
;;;1035
ENDP
AREA ||i.LISTBOX_UpdateScrollers||, CODE, READONLY, ALIGN=1
LISTBOX_UpdateScrollers PROC
;;;555 */
;;;556 int LISTBOX_UpdateScrollers(LISTBOX_Handle hObj) {
000000 b57c PUSH {r2-r6,lr}
000002 4605 MOV r5,r0
;;;557 _ManageAutoScroll(hObj);
000004 f7fffffe BL _ManageAutoScroll
000008 4628 MOV r0,r5
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 4604 MOV r4,r0
000010 3028 ADDS r0,r0,#0x28
000012 f7fffffe BL GUI_ARRAY_GetNumItems
000016 6320 STR r0,[r4,#0x30]
000018 4629 MOV r1,r5
00001a 4620 MOV r0,r4
00001c f7fffffe BL _GetNumVisItems
000020 63a0 STR r0,[r4,#0x38]
000022 4669 MOV r1,sp
000024 4628 MOV r0,r5
000026 f7fffffe BL WM_GetInsideRectExScrollbar
00002a 4628 MOV r0,r5
00002c f7fffffe BL _GetContentsSizeX
000030 63e0 STR r0,[r4,#0x3c]
000032 f9bd0004 LDRSH r0,[sp,#4]
000036 f9bd1000 LDRSH r1,[sp,#0]
00003a 1a41 SUBS r1,r0,r1
00003c 1c49 ADDS r1,r1,#1
00003e 6461 STR r1,[r4,#0x44]
000040 4621 MOV r1,r4
000042 4628 MOV r0,r5
000044 f7fffffe BL _UpdateScrollPos
;;;558 return _CalcScrollParas(hObj);
;;;559 }
000048 bd7c POP {r2-r6,pc}
;;;560
ENDP
AREA ||i.LISTBOX__GetNumItems||, CODE, READONLY, ALIGN=1
LISTBOX__GetNumItems PROC
;;;140 */
;;;141 unsigned LISTBOX__GetNumItems(const LISTBOX_Obj* pObj) {
000000 3028 ADDS r0,r0,#0x28
;;;142 return GUI_ARRAY_GetNumItems(&pObj->ItemArray);
000002 f7ffbffe B.W GUI_ARRAY_GetNumItems
;;;143 }
;;;144
ENDP
AREA ||i.LISTBOX__GetpString||, CODE, READONLY, ALIGN=1
LISTBOX__GetpString PROC
;;;151 */
;;;152 const char* LISTBOX__GetpString(const LISTBOX_Obj* pObj, int Index) {
000000 b510 PUSH {r4,lr}
;;;153 const char* s = NULL;
000002 2400 MOVS r4,#0
;;;154 LISTBOX_ITEM* pItem = (LISTBOX_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, Index);
000004 3028 ADDS r0,r0,#0x28
000006 f7fffffe BL GUI_ARRAY_GetpItem
;;;155 if (pItem) {
00000a b100 CBZ r0,|L13.14|
;;;156 s = pItem->acText;
00000c 1d44 ADDS r4,r0,#5
|L13.14|
;;;157 }
;;;158 return s;
00000e 4620 MOV r0,r4
;;;159 }
000010 bd10 POP {r4,pc}
;;;160
ENDP
AREA ||i.LISTBOX__InvalidateInsideArea||, CODE, READONLY, ALIGN=1
LISTBOX__InvalidateInsideArea PROC
;;;449 */
;;;450 void LISTBOX__InvalidateInsideArea(LISTBOX_Handle hObj) {
000000 b51c PUSH {r2-r4,lr}
000002 4604 MOV r4,r0
;;;451 GUI_RECT Rect;
;;;452 WM_GetInsideRectExScrollbar(hObj, &Rect);
000004 4669 MOV r1,sp
000006 f7fffffe BL WM_GetInsideRectExScrollbar
;;;453 WM_InvalidateRect(hObj, &Rect);
00000a 4669 MOV r1,sp
00000c 4620 MOV r0,r4
00000e f7fffffe BL WM_InvalidateRect
;;;454 }
000012 bd1c POP {r2-r4,pc}
;;;455
ENDP
AREA ||i.LISTBOX__InvalidateItem||, CODE, READONLY, ALIGN=1
LISTBOX__InvalidateItem PROC
;;;459 */
;;;460 void LISTBOX__InvalidateItem(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Sel) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 4606 MOV r6,r0
000006 460f MOV r7,r1
000008 1e15 SUBS r5,r2,#0
;;;461 if (Sel >= 0) {
00000a db1d BLT |L15.72|
;;;462 int ItemPosY;
;;;463 ItemPosY = _GetItemPosY(hObj, pObj, Sel);
00000c 462a MOV r2,r5
00000e 4639 MOV r1,r7
000010 4630 MOV r0,r6
000012 f7fffffe BL _GetItemPosY
000016 1e04 SUBS r4,r0,#0
;;;464 if (ItemPosY >= 0) {
000018 db16 BLT |L15.72|
;;;465 GUI_RECT Rect;
;;;466 int ItemDistY;
;;;467 ItemDistY = _GetItemSizeY(hObj, pObj, Sel);
00001a 462a MOV r2,r5
00001c 4639 MOV r1,r7
00001e 4630 MOV r0,r6
000020 f7fffffe BL _GetItemSizeY
000024 4605 MOV r5,r0
;;;468 WM_GetInsideRectExScrollbar(hObj, &Rect);
000026 4669 MOV r1,sp
000028 4630 MOV r0,r6
00002a f7fffffe BL WM_GetInsideRectExScrollbar
;;;469 Rect.y0 += ItemPosY;
00002e f8bd0002 LDRH r0,[sp,#2]
000032 1901 ADDS r1,r0,r4
;;;470 Rect.y1 = Rect.y0 + ItemDistY - 1;
000034 1e68 SUBS r0,r5,#1
000036 4408 ADD r0,r0,r1
000038 f8ad1002 STRH r1,[sp,#2] ;469
00003c f8ad0006 STRH r0,[sp,#6]
;;;471 WM_InvalidateRect(hObj, &Rect);
000040 4669 MOV r1,sp
000042 4630 MOV r0,r6
000044 f7fffffe BL WM_InvalidateRect
|L15.72|
;;;472 }
;;;473 }
;;;474 }
000048 e8bd81fc POP {r2-r8,pc}
;;;475
ENDP
AREA ||i.LISTBOX__InvalidateItemAndBelow||, CODE, READONLY, ALIGN=1
LISTBOX__InvalidateItemAndBelow PROC
;;;479 */
;;;480 void LISTBOX__InvalidateItemAndBelow(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Sel) {
000000 b57c PUSH {r2-r6,lr}
000002 4605 MOV r5,r0
;;;481 if (Sel >= 0) {
000004 2a00 CMP r2,#0
000006 db11 BLT |L16.44|
;;;482 int ItemPosY;
;;;483 ItemPosY = _GetItemPosY(hObj, pObj, Sel);
000008 4628 MOV r0,r5
00000a f7fffffe BL _GetItemPosY
00000e 1e04 SUBS r4,r0,#0
;;;484 if (ItemPosY >= 0) {
000010 db0c BLT |L16.44|
;;;485 GUI_RECT Rect;
;;;486 WM_GetInsideRectExScrollbar(hObj, &Rect);
000012 4669 MOV r1,sp
000014 4628 MOV r0,r5
000016 f7fffffe BL WM_GetInsideRectExScrollbar
;;;487 Rect.y0 += ItemPosY;
00001a f8bd0002 LDRH r0,[sp,#2]
;;;488 WM_InvalidateRect(hObj, &Rect);
00001e 4669 MOV r1,sp
000020 4420 ADD r0,r0,r4 ;487
000022 f8ad0002 STRH r0,[sp,#2] ;487
000026 4628 MOV r0,r5
000028 f7fffffe BL WM_InvalidateRect
|L16.44|
;;;489 }
;;;490 }
;;;491 }
00002c bd7c POP {r2-r6,pc}
;;;492
ENDP
AREA ||i.LISTBOX__InvalidateItemSize||, CODE, READONLY, ALIGN=1
LISTBOX__InvalidateItemSize PROC
;;;436 */
;;;437 void LISTBOX__InvalidateItemSize(const LISTBOX_Obj* pObj, unsigned Index) {
000000 b510 PUSH {r4,lr}
;;;438 LISTBOX_ITEM* pItem;
;;;439 pItem = (LISTBOX_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, Index);
000002 3028 ADDS r0,r0,#0x28
000004 f7fffffe BL GUI_ARRAY_GetpItem
;;;440 if (pItem) {
000008 2800 CMP r0,#0
00000a d002 BEQ |L17.18|
;;;441 pItem->xSize = 0;
00000c 2100 MOVS r1,#0
00000e 8001 STRH r1,[r0,#0]
;;;442 pItem->ySize = 0;
000010 8041 STRH r1,[r0,#2]
|L17.18|
;;;443 }
;;;444 }
000012 bd10 POP {r4,pc}
;;;445
ENDP
AREA ||i.LISTBOX__SetScrollbarWidth||, CODE, READONLY, ALIGN=1
LISTBOX__SetScrollbarWidth PROC
;;;496 */
;;;497 void LISTBOX__SetScrollbarWidth(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj) {
000000 b570 PUSH {r4-r6,lr}
;;;498 WM_HWIN hBarH, hBarV;
;;;499 int Width;
;;;500 Width = pObj->ScrollbarWidth;
000002 f8914075 LDRB r4,[r1,#0x75]
000006 4605 MOV r5,r0 ;497
;;;501 if (Width == 0) {
000008 b914 CBNZ r4,|L18.16|
;;;502 Width = SCROLLBAR_GetDefaultWidth();
00000a f7fffffe BL SCROLLBAR_GetDefaultWidth
00000e 4604 MOV r4,r0
|L18.16|
;;;503 }
;;;504 hBarH = WM_GetDialogItem(hObj, GUI_ID_HSCROLL);
000010 21ff MOVS r1,#0xff
000012 4628 MOV r0,r5
000014 f7fffffe BL WM_GetDialogItem
000018 4606 MOV r6,r0
;;;505 hBarV = WM_GetDialogItem(hObj, GUI_ID_VSCROLL);
00001a 21fe MOVS r1,#0xfe
00001c 4628 MOV r0,r5
00001e f7fffffe BL WM_GetDialogItem
000022 4605 MOV r5,r0
;;;506 SCROLLBAR_SetWidth(hBarH, Width);
000024 4621 MOV r1,r4
000026 4630 MOV r0,r6
000028 f7fffffe BL SCROLLBAR_SetWidth
;;;507 SCROLLBAR_SetWidth(hBarV, Width);
00002c 4621 MOV r1,r4
00002e 4628 MOV r0,r5
000030 e8bd4070 POP {r4-r6,lr}
000034 f7ffbffe B.W SCROLLBAR_SetWidth
;;;508 }
;;;509
ENDP
AREA ||i._AddKey||, CODE, READONLY, ALIGN=1
_AddKey PROC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -