dialog.txt
来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 256 行
TXT
256 行
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\dialog.o --depend=.\Obj\dialog.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\DIALOG.c]
THUMB
AREA ||i.DIALOG_GetBkColor||, CODE, READONLY, ALIGN=2
DIALOG_GetBkColor PROC
;;;62 */
;;;63 LCD_COLOR DIALOG_GetBkColor(void) {
000000 4801 LDR r0,|L1.8|
;;;64 return _BkColor;
000002 6800 LDR r0,[r0,#0] ; _BkColor
;;;65 }
000004 4770 BX lr
;;;66
ENDP
000006 0000 DCW 0x0000
|L1.8|
DCD ||.data||
AREA ||i.DIALOG_SetBkColor||, CODE, READONLY, ALIGN=2
DIALOG_SetBkColor PROC
;;;70 */
;;;71 LCD_COLOR DIALOG_SetBkColor(LCD_COLOR BkColor) {
000000 4902 LDR r1,|L2.12|
000002 4602 MOV r2,r0
;;;72 LCD_COLOR r;
;;;73 r = _BkColor;
;;;74 _BkColor = BkColor;
000004 6808 LDR r0,[r1,#0] ; _BkColor
;;;75 return r;
000006 600a STR r2,[r1,#0] ; _BkColor
;;;76 }
000008 4770 BX lr
;;;77 /*********************************************************************
ENDP
00000a 0000 DCW 0x0000
|L2.12|
DCD ||.data||
AREA ||i.GUI_CreateDialogBox||, CODE, READONLY, ALIGN=1
GUI_CreateDialogBox PROC
;;;101 */
;;;102 WM_HWIN GUI_CreateDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent,
000000 e92d43f8 PUSH {r3-r9,lr}
;;;103 int x0, int y0)
;;;104 {
000004 460d MOV r5,r1
000006 4616 MOV r6,r2
000008 4619 MOV r1,r3
;;;105 WM_HWIN hDialog = paWidget->pfCreateIndirect(paWidget, hParent, x0, y0, cb); /* Create parent window */
00000a e9dd2308 LDRD r2,r3,[sp,#0x20]
00000e 4604 MOV r4,r0 ;104
000010 9600 STR r6,[sp,#0]
000012 6826 LDR r6,[r4,#0]
000014 47b0 BLX r6
000016 4606 MOV r6,r0
;;;106 WM_HWIN hDialogClient = WM_GetClientWindow(hDialog);
000018 f7fffffe BL WM_GetClientWindow
00001c 4680 MOV r8,r0
;;;107 WIDGET_OrState(hDialog, paWidget->Flags);
00001e 8a61 LDRH r1,[r4,#0x12]
000020 4630 MOV r0,r6
000022 f7fffffe BL WIDGET_OrState
;;;108 WM_ShowWindow(hDialog);
000026 4630 MOV r0,r6
000028 f7fffffe BL WM_ShowWindow
;;;109 WM_ShowWindow(hDialogClient);
00002c 4640 MOV r0,r8
;;;110 while (--NumWidgets > 0) {
00002e e007 B |L3.64|
|L3.48|
;;;111 WM_HWIN hChild;
;;;112 paWidget++;
;;;113 hChild = paWidget->pfCreateIndirect(paWidget, hDialogClient, 0, 0, 0); /* Create child window */
000030 2300 MOVS r3,#0
000032 9300 STR r3,[sp,#0]
000034 f8547f18 LDR r7,[r4,#0x18]!
000038 461a MOV r2,r3
00003a 4641 MOV r1,r8
00003c 4620 MOV r0,r4
00003e 47b8 BLX r7
|L3.64|
000040 f7fffffe BL WM_ShowWindow
000044 1e6d SUBS r5,r5,#1 ;110
000046 2d00 CMP r5,#0 ;110
000048 dcf2 BGT |L3.48|
;;;114 WM_ShowWindow(hChild);
;;;115 }
;;;116 WM_SetFocusOnNextChild(hDialog); /* Set the focus to the first child */
00004a 4630 MOV r0,r6
00004c f7fffffe BL WM_SetFocusOnNextChild
;;;117 WM_SendMessageNoPara(hDialogClient, WM_INIT_DIALOG);
000050 211e MOVS r1,#0x1e
000052 4640 MOV r0,r8
000054 f7fffffe BL WM_SendMessageNoPara
;;;118 return hDialog;
000058 4630 MOV r0,r6
;;;119 }
00005a e8bd83f8 POP {r3-r9,pc}
;;;120
ENDP
AREA ||i.GUI_EndDialog||, CODE, READONLY, ALIGN=1
GUI_EndDialog PROC
;;;124 */
;;;125 void GUI_EndDialog(WM_HWIN hDialog, int r) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
000004 460c MOV r4,r1
;;;126 WM_DIALOG_STATUS* pStatus;
;;;127 pStatus = GUI_GetDialogStatusPtr(hDialog);
000006 f7fffffe BL GUI_GetDialogStatusPtr
;;;128 if (pStatus) {
00000a b108 CBZ r0,|L4.16|
;;;129 pStatus->ReturnValue = r;
;;;130 pStatus->Done = 1;
00000c 2101 MOVS r1,#1
00000e c012 STM r0!,{r1,r4}
|L4.16|
;;;131 }
;;;132 WM_DeleteWindow(hDialog);
000010 4628 MOV r0,r5
000012 e8bd4070 POP {r4-r6,lr}
000016 f7ffbffe B.W WM_DeleteWindow
;;;133 }
;;;134
ENDP
AREA ||i.GUI_ExecCreatedDialog||, CODE, READONLY, ALIGN=2
GUI_ExecCreatedDialog PROC
;;;139 */
;;;140 int GUI_ExecCreatedDialog (WM_HWIN hDialog) {
000000 b51c PUSH {r2-r4,lr}
;;;141 WM_DIALOG_STATUS DialogStatus = {0};
000002 2200 MOVS r2,#0
000004 4669 MOV r1,sp
000006 4613 MOV r3,r2
000008 c10c STM r1!,{r2,r3}
;;;142 /* Let window know how to send feedback (close info & return value) */
;;;143 GUI_SetDialogStatusPtr(hDialog, &DialogStatus);
00000a 4669 MOV r1,sp
00000c f7fffffe BL GUI_SetDialogStatusPtr
;;;144 while (!DialogStatus.Done) {
000010 e005 B |L5.30|
;;;145 if (!GUI_Exec()) {
000012 bf00 NOP
|L5.20|
000014 f7fffffe BL GUI_Exec
000018 b908 CBNZ r0,|L5.30|
;;;146 GUI_X_WAIT_EVENT(); /* Wait for event (keyboard, mouse or whatever) */
00001a f7fffffe BL GUI_X_ExecIdle
|L5.30|
00001e 9800 LDR r0,[sp,#0] ;144
000020 2800 CMP r0,#0 ;144
000022 d0f7 BEQ |L5.20|
;;;147 }
;;;148 }
;;;149 return DialogStatus.ReturnValue;
000024 9801 LDR r0,[sp,#4]
;;;150 }
000026 bd1c POP {r2-r4,pc}
;;;151
ENDP
AREA ||i.GUI_ExecDialogBox||, CODE, READONLY, ALIGN=1
GUI_ExecDialogBox PROC
;;;161 */
;;;162 int GUI_ExecDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget,
000000 b57c PUSH {r2-r6,lr}
;;;163 int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0)
;;;164 {
000002 4614 MOV r4,r2
000004 461d MOV r5,r3
;;;165 WM_HWIN hDialog;
;;;166 hDialog = GUI_CreateDialogBox(paWidget, NumWidgets, cb, hParent, x0, y0);
000006 e9dd2306 LDRD r2,r3,[sp,#0x18]
00000a e9cd2300 STRD r2,r3,[sp,#0]
00000e 462b MOV r3,r5
000010 4622 MOV r2,r4
000012 f7fffffe BL GUI_CreateDialogBox
;;;167 return GUI_ExecCreatedDialog(hDialog);
000016 e8bd407c POP {r2-r6,lr}
00001a f7ffbffe B.W GUI_ExecCreatedDialog
;;;168 }
;;;169
ENDP
AREA ||i.GUI_GetDialogStatusPtr||, CODE, READONLY, ALIGN=1
GUI_GetDialogStatusPtr PROC
;;;91 */
;;;92 WM_DIALOG_STATUS* GUI_GetDialogStatusPtr(WM_HWIN hDialog) {
000000 b50e PUSH {r1-r3,lr}
;;;93 WM_MESSAGE Msg = {0};
000002 2200 MOVS r2,#0
000004 4669 MOV r1,sp
000006 4613 MOV r3,r2
000008 4694 MOV r12,r2
00000a e881100c STM r1,{r2,r3,r12}
;;;94 Msg.MsgId = WM_HANDLE_DIALOG_STATUS;
00000e 212a MOVS r1,#0x2a
;;;95 WM_SendMessage(hDialog, &Msg);
000010 9100 STR r1,[sp,#0]
000012 4669 MOV r1,sp
000014 f7fffffe BL WM_SendMessage
;;;96 return (WM_DIALOG_STATUS*)Msg.Data.p;
000018 9802 LDR r0,[sp,#8]
;;;97 }
00001a bd0e POP {r1-r3,pc}
;;;98 /*********************************************************************
ENDP
AREA ||i.GUI_SetDialogStatusPtr||, CODE, READONLY, ALIGN=1
GUI_SetDialogStatusPtr PROC
;;;80 */
;;;81 void GUI_SetDialogStatusPtr(WM_HWIN hDialog, WM_DIALOG_STATUS* pDialogStatus) {
000000 b53e PUSH {r1-r5,lr}
;;;82 WM_MESSAGE Msg = {0};
000002 2200 MOVS r2,#0
000004 466c MOV r4,sp
000006 4613 MOV r3,r2
000008 4615 MOV r5,r2
00000a c42c STM r4!,{r2,r3,r5}
;;;83 Msg.MsgId = WM_HANDLE_DIALOG_STATUS;
00000c 222a MOVS r2,#0x2a
;;;84 Msg.Data.p = pDialogStatus;
;;;85 WM_SendMessage(hDialog, &Msg);
00000e 9102 STR r1,[sp,#8]
000010 9200 STR r2,[sp,#0]
000012 4669 MOV r1,sp
000014 f7fffffe BL WM_SendMessage
;;;86 }
000018 bd3e POP {r1-r5,pc}
;;;87
ENDP
AREA ||.data||, DATA, ALIGN=2
_BkColor
DCD 0x00c0c0c0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?