📄 listbox_multisel.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\listbox_multisel.o --depend=.\Obj\listbox_multisel.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Widget\LISTBOX_MultiSel.c]
THUMB
AREA ||i.LISTBOX_GetItemSel||, CODE, READONLY, ALIGN=1
LISTBOX_GetItemSel PROC
;;;82 */
;;;83 int LISTBOX_GetItemSel(LISTBOX_Handle hObj, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 460e MOV r6,r1
;;;84 int Ret = 0;
000004 2500 MOVS r5,#0
;;;85 if (hObj) {
000006 b1b0 CBZ r0,|L1.54|
;;;86 unsigned NumItems;
;;;87 LISTBOX_Obj* pObj;
;;;88 WM_LOCK();
;;;89 pObj = LISTBOX_H2P(hObj);
000008 f7fffffe BL GUI_ALLOC_h2p
00000c 4604 MOV r4,r0
;;;90 NumItems = LISTBOX__GetNumItems(pObj);
00000e f7fffffe BL LISTBOX__GetNumItems
;;;91 if ((Index < NumItems) && (pObj->Flags & LISTBOX_SF_MULTISEL)) {
000012 4286 CMP r6,r0
000014 d20f BCS |L1.54|
000016 f8940074 LDRB r0,[r4,#0x74]
00001a 0740 LSLS r0,r0,#29
00001c d50b BPL |L1.54|
;;;92 WM_HMEM hItem = GUI_ARRAY_GethItem(&pObj->ItemArray, Index);
00001e 4631 MOV r1,r6
000020 f1040028 ADD r0,r4,#0x28
000024 f7fffffe BL GUI_ARRAY_GethItem
;;;93 if (hItem) {
000028 b128 CBZ r0,|L1.54|
;;;94 LISTBOX_ITEM * pItem = (LISTBOX_ITEM *)GUI_ALLOC_h2p(hItem);
00002a f7fffffe BL GUI_ALLOC_h2p
;;;95 if (pItem->Status & LISTBOX_ITEM_SELECTED) {
00002e 7900 LDRB r0,[r0,#4]
000030 07c0 LSLS r0,r0,#31
000032 d000 BEQ |L1.54|
;;;96 Ret = 1;
000034 2501 MOVS r5,#1
|L1.54|
;;;97 }
;;;98 }
;;;99 }
;;;100 WM_UNLOCK();
;;;101 }
;;;102 return Ret;
000036 4628 MOV r0,r5
;;;103 }
000038 bd70 POP {r4-r6,pc}
;;;104
ENDP
AREA ||i.LISTBOX_GetMulti||, CODE, READONLY, ALIGN=1
LISTBOX_GetMulti PROC
;;;62 */
;;;63 int LISTBOX_GetMulti(LISTBOX_Handle hObj) {
000000 b510 PUSH {r4,lr}
;;;64 int Multi = 0;
000002 2400 MOVS r4,#0
;;;65 if (hObj) {
000004 b130 CBZ r0,|L2.20|
;;;66 LISTBOX_Obj* pObj;
;;;67 WM_LOCK();
;;;68 pObj = LISTBOX_H2P(hObj);
000006 f7fffffe BL GUI_ALLOC_h2p
;;;69 if (!(pObj->Flags & LISTBOX_SF_MULTISEL)) {
00000a f8900074 LDRB r0,[r0,#0x74]
00000e 0740 LSLS r0,r0,#29
000010 d500 BPL |L2.20|
;;;70 Multi = 0;
;;;71 } else {
;;;72 Multi = 1;
000012 2401 MOVS r4,#1
|L2.20|
;;;73 }
;;;74 WM_UNLOCK();
;;;75 }
;;;76 return Multi;
000014 4620 MOV r0,r4
;;;77 }
000016 bd10 POP {r4,pc}
;;;78
ENDP
AREA ||i.LISTBOX_SetItemSel||, CODE, READONLY, ALIGN=1
LISTBOX_SetItemSel PROC
;;;108 */
;;;109 void LISTBOX_SetItemSel(LISTBOX_Handle hObj, unsigned Index, int OnOff) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 0005 MOVS r5,r0
000006 460e MOV r6,r1
000008 4617 MOV r7,r2
;;;110 if (hObj) {
00000a d028 BEQ |L3.94|
;;;111 unsigned NumItems;
;;;112 LISTBOX_Obj* pObj;
;;;113 WM_LOCK();
;;;114 pObj = LISTBOX_H2P(hObj);
00000c 4628 MOV r0,r5
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4604 MOV r4,r0
;;;115 NumItems = LISTBOX__GetNumItems(pObj);
000014 f7fffffe BL LISTBOX__GetNumItems
;;;116 if ((Index < NumItems) && (pObj->Flags & LISTBOX_SF_MULTISEL)) {
000018 4286 CMP r6,r0
00001a d220 BCS |L3.94|
00001c f8940074 LDRB r0,[r4,#0x74]
000020 0740 LSLS r0,r0,#29
000022 d51c BPL |L3.94|
;;;117 WM_HMEM hItem = GUI_ARRAY_GethItem(&pObj->ItemArray, Index);
000024 4631 MOV r1,r6
000026 f1040028 ADD r0,r4,#0x28
00002a f7fffffe BL GUI_ARRAY_GethItem
;;;118 if (hItem) {
00002e 2800 CMP r0,#0
000030 d015 BEQ |L3.94|
;;;119 LISTBOX_ITEM * pItem = (LISTBOX_ITEM *)GUI_ALLOC_h2p(hItem);
000032 f7fffffe BL GUI_ALLOC_h2p
;;;120 if (OnOff) {
;;;121 if (!(pItem->Status & LISTBOX_ITEM_SELECTED)) {
000036 7901 LDRB r1,[r0,#4]
000038 07ca LSLS r2,r1,#31
00003a b127 CBZ r7,|L3.70|
00003c 2a00 CMP r2,#0
00003e d10e BNE |L3.94|
;;;122 pItem->Status |= LISTBOX_ITEM_SELECTED;
000040 f0410101 ORR r1,r1,#1
;;;123 LISTBOX__InvalidateItem(hObj, pObj, Index);
000044 e003 B |L3.78|
|L3.70|
;;;124 }
;;;125 } else {
;;;126 if (pItem->Status & LISTBOX_ITEM_SELECTED) {
000046 2a00 CMP r2,#0
000048 d009 BEQ |L3.94|
;;;127 pItem->Status &= ~LISTBOX_ITEM_SELECTED;
00004a f0210101 BIC r1,r1,#1
|L3.78|
00004e 7101 STRB r1,[r0,#4]
;;;128 LISTBOX__InvalidateItem(hObj, pObj, Index);
000050 4632 MOV r2,r6
000052 4621 MOV r1,r4
000054 4628 MOV r0,r5
000056 e8bd41f0 POP {r4-r8,lr}
00005a f7ffbffe B.W LISTBOX__InvalidateItem
|L3.94|
;;;129 }
;;;130 }
;;;131 }
;;;132 }
;;;133 WM_UNLOCK();
;;;134 }
;;;135 }
00005e e8bd81f0 POP {r4-r8,pc}
;;;136
ENDP
AREA ||i.LISTBOX_SetMulti||, CODE, READONLY, ALIGN=1
LISTBOX_SetMulti PROC
;;;38 */
;;;39 void LISTBOX_SetMulti(LISTBOX_Handle hObj, int Mode) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;40 if (hObj) {
000006 d016 BEQ |L4.54|
;;;41 LISTBOX_Obj* pObj;
;;;42 WM_LOCK();
;;;43 pObj = LISTBOX_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;44 if (Mode) {
;;;45 if (!(pObj->Flags & LISTBOX_SF_MULTISEL)) {
00000e f8901074 LDRB r1,[r0,#0x74]
000012 074a LSLS r2,r1,#29
000014 b125 CBZ r5,|L4.32|
000016 2a00 CMP r2,#0
000018 db0d BLT |L4.54|
;;;46 pObj->Flags |= LISTBOX_SF_MULTISEL;
00001a f0410104 ORR r1,r1,#4
;;;47 LISTBOX__InvalidateInsideArea(hObj);
00001e e003 B |L4.40|
|L4.32|
;;;48 }
;;;49 } else {
;;;50 if (pObj->Flags & LISTBOX_SF_MULTISEL) {
000020 2a00 CMP r2,#0
000022 da08 BGE |L4.54|
;;;51 pObj->Flags &= ~LISTBOX_SF_MULTISEL;
000024 f0210104 BIC r1,r1,#4
|L4.40|
000028 f8801074 STRB r1,[r0,#0x74]
;;;52 LISTBOX__InvalidateInsideArea(hObj);
00002c 4620 MOV r0,r4
00002e e8bd4070 POP {r4-r6,lr}
000032 f7ffbffe B.W LISTBOX__InvalidateInsideArea
|L4.54|
;;;53 }
;;;54 }
;;;55 WM_UNLOCK();
;;;56 }
;;;57 }
000036 bd70 POP {r4-r6,pc}
;;;58
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -