📄 messagebox.txt
字号:
0000d8 900a STR r0,[sp,#0x28]
0000da 9816 LDR r0,[sp,#0x58]
;;;174 _aDialogCreate[1].x0 = (xSizeFrame - xSizeMessage - BorderSize * 2) / 2;
0000dc 900b STR r0,[sp,#0x2c]
0000de 1be1 SUBS r1,r4,r7
0000e0 4268 RSBS r0,r5,#0
0000e2 eb010140 ADD r1,r1,r0,LSL #1
0000e6 eb0171d1 ADD r1,r1,r1,LSR #31
0000ea 1049 ASRS r1,r1,#1
0000ec f8ad1032 STRH r1,[sp,#0x32]
;;;175 _aDialogCreate[1].y0 = MESSAGEBOX_BORDER;
0000f0 2104 MOVS r1,#4
0000f2 f8ad1034 STRH r1,[sp,#0x34]
;;;176 _aDialogCreate[1].xSize = xSizeMessage;
;;;177 _aDialogCreate[1].ySize = ySizeMessage;
;;;178 _aDialogCreate[1].Para = GUI_TA_TOP | GUI_TA_HCENTER;
0000f6 2102 MOVS r1,#2
;;;179 /* Fill button resource */
;;;180 _aDialogCreate[2].pfCreateIndirect = BUTTON_CreateIndirect;
0000f8 910f STR r1,[sp,#0x3c]
0000fa 4916 LDR r1,|L2.340|
;;;181 _aDialogCreate[2].pName = "OK";
0000fc 9110 STR r1,[sp,#0x40]
0000fe a116 ADR r1,|L2.344|
;;;182 _aDialogCreate[2].Id = GUI_ID_OK;
000100 9111 STR r1,[sp,#0x44]
;;;183 _aDialogCreate[2].x0 = (xSizeFrame - MESSAGEBOX_XSIZEOK - BorderSize * 2) / 2;
000102 eb040040 ADD r0,r4,r0,LSL #1
000106 f8ad7036 STRH r7,[sp,#0x36] ;176
00010a 2101 MOVS r1,#1 ;182
00010c 3832 SUBS r0,r0,#0x32
00010e f8ad1048 STRH r1,[sp,#0x48] ;182
000112 eb0070d0 ADD r0,r0,r0,LSR #31
000116 1040 ASRS r0,r0,#1
000118 f8ad004a STRH r0,[sp,#0x4a]
00011c f8ad8038 STRH r8,[sp,#0x38] ;177
;;;184 _aDialogCreate[2].y0 = MESSAGEBOX_BORDER * 2 + ySizeMessage;
000120 f1080008 ADD r0,r8,#8
000124 f8ad004c STRH r0,[sp,#0x4c]
;;;185 _aDialogCreate[2].xSize = MESSAGEBOX_XSIZEOK;
000128 2032 MOVS r0,#0x32
00012a f8ad004e STRH r0,[sp,#0x4e]
;;;186 _aDialogCreate[2].ySize = MESSAGEBOX_YSIZEOK;
00012e 2014 MOVS r0,#0x14
000130 f8ad0050 STRH r0,[sp,#0x50]
;;;187 /* Create dialog */
;;;188 return GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _MESSAGEBOX_cbCallback, 0, 0, 0);
000134 2300 MOVS r3,#0
000136 9300 STR r3,[sp,#0]
000138 4a08 LDR r2,|L2.348|
00013a 2103 MOVS r1,#3
00013c a804 ADD r0,sp,#0x10
00013e 9301 STR r3,[sp,#4]
000140 f7fffffe BL GUI_CreateDialogBox
;;;189 }
000144 b019 ADD sp,sp,#0x64
000146 e8bd8ff0 POP {r4-r11,pc}
;;;190
ENDP
00014a 0000 DCW 0x0000
|L2.332|
DCD FRAMEWIN_CreateIndirect
|L2.336|
DCD TEXT_CreateIndirect
|L2.340|
DCD BUTTON_CreateIndirect
|L2.344|
000158 4f4b00 DCB "OK",0
00015b 00 DCB 0
|L2.348|
DCD _MESSAGEBOX_cbCallback
AREA ||i._MESSAGEBOX_cbCallback||, CODE, READONLY, ALIGN=1
_MESSAGEBOX_cbCallback PROC
;;;65 */
;;;66 static void _MESSAGEBOX_cbCallback(WM_MESSAGE * pMsg) {
000000 b570 PUSH {r4-r6,lr}
;;;67 WM_HWIN hWin = pMsg->hWin;
;;;68 switch (pMsg->MsgId) {
000002 6801 LDR r1,[r0,#0]
000004 f9b04004 LDRSH r4,[r0,#4] ;67
000008 290e CMP r1,#0xe
00000a d019 BEQ |L3.64|
00000c 291e CMP r1,#0x1e
00000e d010 BEQ |L3.50|
000010 2926 CMP r1,#0x26
000012 d11f BNE |L3.84|
;;;69 case WM_INIT_DIALOG:
;;;70 FRAMEWIN_SetClientColor(hWin, MESSAGEBOX_BKCOLOR);
;;;71 break;
;;;72 case WM_KEY:
;;;73 {
;;;74 int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
;;;75 if (((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt) {
;;;76 switch (Key) {
;;;77 case GUI_KEY_ESCAPE:
;;;78 GUI_EndDialog(hWin, 1); /* End dialog with return value 1 if <ESC> is pressed */
;;;79 break;
;;;80 case GUI_KEY_ENTER:
;;;81 GUI_EndDialog(hWin, 0); /* End dialog with return value 0 if <ENTER> is pressed */
;;;82 break;
;;;83 }
;;;84 }
;;;85 }
;;;86 break;
;;;87 case WM_NOTIFY_PARENT:
;;;88 {
;;;89 int NCode = pMsg->Data.v; /* Get notification code */
;;;90 int Id = WM_GetId(pMsg->hWinSrc); /* Get control ID */
000014 6885 LDR r5,[r0,#8]
000016 f9b00006 LDRSH r0,[r0,#6]
00001a f7fffffe BL WM_GetId
;;;91 switch (NCode) {
00001e 2d02 CMP r5,#2
000020 d11c BNE |L3.92|
;;;92 case WM_NOTIFICATION_RELEASED: /* React only if released */
;;;93 if (Id == GUI_ID_OK) {
000022 2801 CMP r0,#1
000024 d11a BNE |L3.92|
|L3.38|
;;;94 GUI_EndDialog(hWin, 0); /* End dialog with return value 0 if OK */
000026 2100 MOVS r1,#0
|L3.40|
000028 4620 MOV r0,r4
00002a e8bd4070 POP {r4-r6,lr}
00002e f7ffbffe B.W GUI_EndDialog
|L3.50|
000032 4620 MOV r0,r4 ;70
000034 e8bd4070 POP {r4-r6,lr} ;70
000038 f06f417f MVN r1,#0xff000000 ;70
00003c f7ffbffe B.W FRAMEWIN_SetClientColor
|L3.64|
000040 6880 LDR r0,[r0,#8] ;74
000042 c803 LDM r0,{r0,r1} ;74
000044 2900 CMP r1,#0 ;75
000046 d009 BEQ |L3.92|
000048 280d CMP r0,#0xd ;76
00004a d0ec BEQ |L3.38|
00004c 281b CMP r0,#0x1b ;76
00004e d105 BNE |L3.92|
000050 2101 MOVS r1,#1 ;78
000052 e7e9 B |L3.40|
|L3.84|
;;;95 }
;;;96 break;
;;;97 }
;;;98 }
;;;99 break;
;;;100 default:
;;;101 WM_DefaultProc(pMsg);
000054 e8bd4070 POP {r4-r6,lr}
000058 f7ffbffe B.W WM_DefaultProc
|L3.92|
;;;102 }
;;;103 }
00005c bd70 POP {r4-r6,pc}
;;;104
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -