⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 widget_buttonround.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\widget_buttonround.o --depend=.\Obj\widget_buttonround.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 -D__MICROLIB ..\..\source\widget_buttonround.c]
                          THUMB

                          AREA ||i._OnPaint||, CODE, READONLY, ALIGN=2

                  _OnPaint PROC
;;;65     */
;;;66     static void _OnPaint(BUTTON_Handle hObj) {
000000  b570              PUSH     {r4-r6,lr}
000002  b090              SUB      sp,sp,#0x40
000004  4606              MOV      r6,r0
;;;67       int Index;
;;;68       char ac[50];
;;;69       GUI_RECT Rect;
;;;70       BUTTON_Obj * pObj;
;;;71       pObj = BUTTON_H2P(hObj);
000006  f7fff7ff          BL       GUI_ALLOC_h2p
;;;72       Index = (WIDGET_GetState(hObj) & BUTTON_STATE_PRESSED) ? 1 : 0;
00000a  4630              MOV      r0,r6
00000c  f7fff7ff          BL       WIDGET_GetState
000010  f3c0f3c0          UBFX     r5,r0,#8,#1
;;;73       WM_GetClientRect(&Rect);
000014  a801              ADD      r0,sp,#4
000016  f7fff7ff          BL       WM_GetClientRect
;;;74       /* Draw filled ellipse with button background color */
;;;75       GUI_SetColor(BUTTON_GetBkColor(hObj, Index));
00001a  4629              MOV      r1,r5
00001c  4630              MOV      r0,r6
00001e  f7fff7ff          BL       BUTTON_GetBkColor
000022  f7fff7ff          BL       GUI_SetColor
;;;76       GUI_FillEllipse(Rect.x1 / 2, Rect.y1 / 2, Rect.x1 / 2, Rect.y1 / 2);
000026  f9bdf9bd          LDRSH    r0,[sp,#8]
00002a  f9bdf9bd          LDRSH    r1,[sp,#0xa]
00002e  eb00eb00          ADD      r0,r0,r0,LSR #31
000032  eb01eb01          ADD      r1,r1,r1,LSR #31
000036  104b              ASRS     r3,r1,#1
000038  1042              ASRS     r2,r0,#1
00003a  1049              ASRS     r1,r1,#1
00003c  1040              ASRS     r0,r0,#1
00003e  f7fff7ff          BL       GUI_FillEllipse
;;;77       /* Draw black shape */
;;;78       GUI_SetColor(GUI_BLACK);
000042  2000              MOVS     r0,#0
000044  f7fff7ff          BL       GUI_SetColor
;;;79       GUI_DrawEllipse(Rect.x1 / 2, Rect.y1 / 2, Rect.x1 / 2, Rect.y1 / 2);
000048  f9bdf9bd          LDRSH    r1,[sp,#8]
00004c  f9bdf9bd          LDRSH    r0,[sp,#0xa]
000050  eb01eb01          ADD      r4,r1,r1,LSR #31
000054  eb00eb00          ADD      r0,r0,r0,LSR #31
000058  1043              ASRS     r3,r0,#1
00005a  1041              ASRS     r1,r0,#1
00005c  1062              ASRS     r2,r4,#1
00005e  1060              ASRS     r0,r4,#1
000060  f7fff7ff          BL       GUI_DrawEllipse
;;;80       /* Draw button text with widget attributes */
;;;81       GUI_SetColor(BUTTON_GetTextColor(hObj, Index));
000064  4629              MOV      r1,r5
000066  4630              MOV      r0,r6
000068  f7fff7ff          BL       BUTTON_GetTextColor
00006c  f7fff7ff          BL       GUI_SetColor
;;;82       GUI_SetBkColor(BUTTON_GetBkColor(hObj, Index));
000070  4629              MOV      r1,r5
000072  4630              MOV      r0,r6
000074  f7fff7ff          BL       BUTTON_GetBkColor
000078  f7fff7ff          BL       GUI_SetBkColor
;;;83       GUI_SetFont(BUTTON_GetFont(hObj));
00007c  4630              MOV      r0,r6
00007e  f7fff7ff          BL       BUTTON_GetFont
000082  f7fff7ff          BL       GUI_SetFont
;;;84       BUTTON_GetText(hObj, ac, sizeof(ac));
000086  2232              MOVS     r2,#0x32
000088  a903              ADD      r1,sp,#0xc
00008a  4630              MOV      r0,r6
00008c  f7fff7ff          BL       BUTTON_GetText
;;;85       if (_Pressed) {
000090  4808              LDR      r0,|L1.180|
000092  68c0              LDR      r0,[r0,#0xc]  ; _Pressed
000094  b138              CBZ      r0,|L1.166|
;;;86         strcpy(ac + strlen(ac), "\npressed");
000096  a803              ADD      r0,sp,#0xc
000098  f7fff7ff          BL       strlen
00009c  a903              ADD      r1,sp,#0xc
00009e  4408              ADD      r0,r0,r1
0000a0  a105              ADR      r1,|L1.184|
0000a2  f7fff7ff          BL       strcpy
                  |L1.166|
;;;87       }
;;;88       GUI_DispStringInRect(ac, &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
0000a6  220e              MOVS     r2,#0xe
0000a8  a901              ADD      r1,sp,#4
0000aa  a803              ADD      r0,sp,#0xc
0000ac  f7fff7ff          BL       GUI_DispStringInRect
;;;89     }
0000b0  b010              ADD      sp,sp,#0x40
0000b2  bd70              POP      {r4-r6,pc}
;;;90     
                          ENDP

                  |L1.180|
0000b4  00000000          DCD      ||.data||
                  |L1.184|
0000b8  0a707265          DCB      "\n\160\162\145"
0000bc  73736564          DCB      "ssed"
0000c0  00000000          DCB      "\0\0\0\0"

                          AREA ||i._cbButton||, CODE, READONLY, ALIGN=2

                  _cbButton PROC
;;;100    */
;;;101    static void _cbButton(WM_MESSAGE *pMsg) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
;;;102      switch (pMsg->MsgId) {
000004  6800              LDR      r0,[r0,#0]
000006  4d0c              LDR      r5,|L2.56|
000008  280f              CMP      r0,#0xf
00000a  d104              BNE      |L2.22|
;;;103        case WM_PAINT:
;;;104          _OnPaint(pMsg->hWin);
00000c  f9b4f9b4          LDRSH    r0,[r4,#4]
000010  f7fff7ff          BL       _OnPaint
;;;105          break;
000014  e002              B        |L2.28|
                  |L2.22|
;;;106        default:
;;;107          _pcbCallback(pMsg); /* The original callback */
000016  6829              LDR      r1,[r5,#0]  ; _pcbCallback
000018  4620              MOV      r0,r4
00001a  4788              BLX      r1
                  |L2.28|
;;;108          break;
;;;109      }
;;;110      if (pMsg->MsgId == WM_TOUCH) {
00001c  6820              LDR      r0,[r4,#0]
00001e  280c              CMP      r0,#0xc
000020  d109              BNE      |L2.54|
;;;111        if (BUTTON_IsPressed(pMsg->hWin)) {
000022  f9b4f9b4          LDRSH    r0,[r4,#4]
000026  f7fff7ff          BL       BUTTON_IsPressed
00002a  b118              CBZ      r0,|L2.52|
;;;112          if (!_Pressed) {
00002c  68e8              LDR      r0,[r5,#0xc]  ; _Pressed
00002e  2800              CMP      r0,#0
000030  d101              BNE      |L2.54|
;;;113            _Pressed = 1;
000032  2001              MOVS     r0,#1
                  |L2.52|
000034  60e8              STR      r0,[r5,#0xc]  ; _Pressed
                  |L2.54|
;;;114          }
;;;115        } else {
;;;116          _Pressed = 0;
;;;117        }
;;;118      }
;;;119    }
000036  bd70              POP      {r4-r6,pc}
;;;120    
                          ENDP

                  |L2.56|
000038  00000000          DCD      ||.data||

                          AREA ||i._cbDialog||, CODE, READONLY, ALIGN=2

                  _cbDialog PROC
;;;126    */
;;;127    static void _cbDialog(WM_MESSAGE *pMsg) {
000000  e92de92d          PUSH     {r4-r8,lr}
000004  4605              MOV      r5,r0
;;;128      int NCode, Id;
;;;129      WM_HWIN hDlg;
;;;130      BUTTON_Handle hButton;
;;;131      hDlg = pMsg->hWin;
000006  f9b0f9b0          LDRSH    r6,[r0,#4]
;;;132      switch (pMsg->MsgId) {
00000a  6800              LDR      r0,[r0,#0]
00000c  280e              CMP      r0,#0xe
00000e  d043              BEQ      |L3.152|
000010  280f              CMP      r0,#0xf
000012  d01e              BEQ      |L3.82|
000014  f44ff44f          MOV      r7,#0x170
000018  281e              CMP      r0,#0x1e
00001a  d035              BEQ      |L3.136|
00001c  2826              CMP      r0,#0x26
00001e  d17c              BNE      |L3.282|
;;;133        case WM_PAINT:
;;;134          WM_DefaultProc(pMsg); /* Handle dialog items */
;;;135          /* After drawing the dialog items add some user drawn items to the window */
;;;136          GUI_SetPenSize(10);
;;;137          GUI_SetColor(GUI_GREEN);
;;;138          GUI_DrawLine( 95,  5, 185, 95);
;;;139          GUI_SetColor(GUI_RED);
;;;140          GUI_DrawLine( 95, 95, 185,  5);
;;;141          break;
;;;142        case WM_INIT_DIALOG:
;;;143          hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0);
;;;144          WM_SetHasTrans(hButton);              /* Set transparency flag for button */
;;;145          break;
;;;146        case WM_KEY:
;;;147          switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
;;;148            case GUI_KEY_ESCAPE:
;;;149              GUI_EndDialog(hDlg, 1);
;;;150              break;
;;;151            case GUI_KEY_ENTER:
;;;152              GUI_EndDialog(hDlg, 0);
;;;153              break;
;;;154          }
;;;155          break;
;;;156        case WM_NOTIFY_PARENT:
;;;157          Id    = WM_GetId(pMsg->hWinSrc);      /* Id of widget */
000020  f9b5f9b5          LDRSH    r0,[r5,#6]
000024  f7fff7ff          BL       WM_GetId
000028  4604              MOV      r4,r0
;;;158          NCode = pMsg->Data.v;                 /* Notification code */
;;;159          switch (NCode) {
00002a  68a8              LDR      r0,[r5,#8]
00002c  2802              CMP      r0,#2
00002e  d159              BNE      |L3.228|
;;;160            case WM_NOTIFICATION_RELEASED:      /* React only if released */
;;;161              hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0);
000030  4639              MOV      r1,r7
000032  4630              MOV      r0,r6
000034  f7fff7ff          BL       WM_GetDialogItem
000038  4607              MOV      r7,r0
00003a  4d4a              LDR      r5,|L3.356|
;;;162              if (Id == GUI_ID_BUTTON1) {       /* Toggle callback */
00003c  f5a4f5a4          SUB      r0,r4,#0x100
000040  3871              SUBS     r0,r0,#0x71
000042  d140              BNE      |L3.198|
;;;163                if (_pcbCallback) {
000044  6829              LDR      r1,[r5,#0]  ; _pcbCallback
000046  b379              CBZ      r1,|L3.168|
;;;164                  WM_SetCallback(hButton, _pcbCallback);
000048  4638              MOV      r0,r7
00004a  f7fff7ff          BL       WM_SetCallback
;;;165                  _pcbCallback = 0;
00004e  2000              MOVS     r0,#0
000050  e035              B        |L3.190|
                  |L3.82|
000052  4628              MOV      r0,r5                 ;134
000054  f7fff7ff          BL       WM_DefaultProc
000058  200a              MOVS     r0,#0xa               ;136
00005a  f7fff7ff          BL       GUI_SetPenSize
00005e  f44ff44f          MOV      r0,#0xff00            ;137
000062  f7fff7ff          BL       GUI_SetColor
000066  235f              MOVS     r3,#0x5f              ;138
000068  22b9              MOVS     r2,#0xb9              ;138
00006a  2105              MOVS     r1,#5                 ;138
00006c  4618              MOV      r0,r3                 ;138
00006e  f7fff7ff          BL       GUI_DrawLine
000072  20ff              MOVS     r0,#0xff              ;139
000074  f7fff7ff          BL       GUI_SetColor
000078  e8bde8bd          POP      {r4-r8,lr}            ;140
00007c  2305              MOVS     r3,#5                 ;140
00007e  22b9              MOVS     r2,#0xb9              ;140
000080  215f              MOVS     r1,#0x5f              ;140
000082  4608              MOV      r0,r1                 ;140
000084  f7fff7ff          B.W      GUI_DrawLine
                  |L3.136|
000088  4639              MOV      r1,r7                 ;143
00008a  4630              MOV      r0,r6                 ;143
00008c  f7fff7ff          BL       WM_GetDialogItem
000090  e8bde8bd          POP      {r4-r8,lr}            ;144
000094  f7fff7ff          B.W      WM_SetHasTrans
                  |L3.152|
000098  68a8              LDR      r0,[r5,#8]            ;147
00009a  6800              LDR      r0,[r0,#0]            ;147
00009c  280d              CMP      r0,#0xd               ;147

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -