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

📄 checkbox.txt

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

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

                  CHECKBOX_CreateEx PROC
;;;277    */
;;;278    CHECKBOX_Handle CHECKBOX_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000  e92d5fff          PUSH     {r0-r12,lr}
;;;279                                        int WinFlags, int ExFlags, int Id)
;;;280    {
;;;281      CHECKBOX_Handle hObj;
;;;282      GUI_USE_PARA(ExFlags);
;;;283      WM_LOCK();
;;;284      /* Calculate size if needed */
;;;285      if ((xsize == 0) || (ysize == 0)) {
000004  e9dda60e          LDRD     r10,r6,[sp,#0x38]
;;;286        int EffectSize;
;;;287        EffectSize = WIDGET_GetDefaultEffect()->EffectSize;
;;;288        if (xsize == 0) {
;;;289          xsize = CHECKBOX__DefaultProps.apBm[0]->XSize + 2 * EffectSize;
000008  4f20              LDR      r7,|L1.140|
00000a  f8ddb044          LDR      r11,[sp,#0x44]        ;285
00000e  4680              MOV      r8,r0                 ;280
000010  4689              MOV      r9,r1                 ;280
000012  0014              MOVS     r4,r2                 ;280
000014  461d              MOV      r5,r3                 ;280
000016  d000              BEQ      |L1.26|
000018  b965              CBNZ     r5,|L1.52|
                  |L1.26|
00001a  f7fffffe          BL       WIDGET_GetDefaultEffect
00001e  6940              LDR      r0,[r0,#0x14]         ;287
000020  b91c              CBNZ     r4,|L1.42|
000022  69b9              LDR      r1,[r7,#0x18]  ; CHECKBOX__DefaultProps
000024  8809              LDRH     r1,[r1,#0]
000026  eb010440          ADD      r4,r1,r0,LSL #1
                  |L1.42|
;;;290        }
;;;291        if (ysize == 0) {
00002a  b91d              CBNZ     r5,|L1.52|
;;;292          ysize = CHECKBOX__DefaultProps.apBm[0]->YSize + 2 * EffectSize;
00002c  69b9              LDR      r1,[r7,#0x18]  ; CHECKBOX__DefaultProps
00002e  8849              LDRH     r1,[r1,#2]
000030  eb010540          ADD      r5,r1,r0,LSL #1
                  |L1.52|
;;;293        }
;;;294      }
;;;295    #if WM_SUPPORT_TRANSPARENCY
;;;296      if (CHECKBOX__DefaultProps.BkColor == GUI_INVALID_COLOR) {
000034  68f8              LDR      r0,[r7,#0xc]  ; CHECKBOX__DefaultProps
000036  f06f4170          MVN      r1,#0xf0000000
00003a  4288              CMP      r0,r1
00003c  d101              BNE      |L1.66|
;;;297        WinFlags |= WM_CF_HASTRANS;
00003e  f0460601          ORR      r6,r6,#1
                  |L1.66|
;;;298      }
;;;299    #endif
;;;300      /* Create the window */
;;;301      hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _CHECKBOX_Callback,
000042  b2b1              UXTH     r1,r6
000044  2334              MOVS     r3,#0x34
000046  4a12              LDR      r2,|L1.144|
000048  e9cda100          STRD     r10,r1,[sp,#0]
00004c  e9cd2302          STRD     r2,r3,[sp,#8]
000050  462b              MOV      r3,r5
000052  4622              MOV      r2,r4
000054  4649              MOV      r1,r9
000056  4640              MOV      r0,r8
000058  f7fffffe          BL       WM_CreateWindowAsChild
00005c  0004              MOVS     r4,r0
;;;302                                    sizeof(CHECKBOX_Obj) - sizeof(WM_Obj));
;;;303      if (hObj) {
00005e  d010              BEQ      |L1.130|
;;;304        CHECKBOX_Obj* pObj = CHECKBOX_H2P(hObj);
000060  4620              MOV      r0,r4
000062  f7fffffe          BL       GUI_ALLOC_h2p
000066  4605              MOV      r5,r0
;;;305        /* init widget specific variables */
;;;306        WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000068  2210              MOVS     r2,#0x10
00006a  4659              MOV      r1,r11
00006c  f7fffffe          BL       WIDGET__Init
;;;307        CHECKBOX_INIT_ID(pObj);
;;;308        /* init member variables */
;;;309        pObj->Props = CHECKBOX__DefaultProps;
000070  2228              MOVS     r2,#0x28
000072  4906              LDR      r1,|L1.140|
000074  f1050028          ADD      r0,r5,#0x28
000078  f7fffffe          BL       __aeabi_memcpy4
;;;310        pObj->NumStates   = 2; /* Default behaviour is 2 states: checked and unchecked */
00007c  2102              MOVS     r1,#2
00007e  f8851050          STRB     r1,[r5,#0x50]
                  |L1.130|
;;;311      } else {
;;;312        GUI_DEBUG_ERROROUT_IF(hObj==0, "CHECKBOX_Create failed")
;;;313      }
;;;314      WM_UNLOCK();
;;;315      return hObj;
000082  4620              MOV      r0,r4
;;;316    }
000084  b004              ADD      sp,sp,#0x10
000086  e8bd9ff0          POP      {r4-r12,pc}
;;;317    
                          ENDP

00008a  0000              DCW      0x0000
                  |L1.140|
                          DCD      ||.data||
                  |L1.144|
                          DCD      _CHECKBOX_Callback

                          AREA ||i._CHECKBOX_Callback||, CODE, READONLY, ALIGN=1

                  _CHECKBOX_Callback PROC
;;;239    */
;;;240    static void _CHECKBOX_Callback (WM_MESSAGE *pMsg) {
000000  e92d47f0          PUSH     {r4-r10,lr}
;;;241      CHECKBOX_Handle hObj;
;;;242      CHECKBOX_Obj* pObj;
;;;243      hObj = pMsg->hWin;
000004  f9b09004          LDRSH    r9,[r0,#4]
000008  4605              MOV      r5,r0                 ;240
;;;244      pObj = CHECKBOX_H2P(hObj);
00000a  4648              MOV      r0,r9
00000c  f7fffffe          BL       GUI_ALLOC_h2p
000010  4604              MOV      r4,r0
;;;245      /* Let widget handle the standard messages */
;;;246      if (WIDGET_HandleActive(hObj, pMsg) == 0) {
000012  4629              MOV      r1,r5
000014  4648              MOV      r0,r9
000016  f7fffffe          BL       WIDGET_HandleActive
00001a  2800              CMP      r0,#0
00001c  d057              BEQ      |L2.206|
;;;247        return;
;;;248      }
;;;249      switch (pMsg->MsgId) {
00001e  6828              LDR      r0,[r5,#0]
000020  280c              CMP      r0,#0xc
000022  d021              BEQ      |L2.104|
000024  280e              CMP      r0,#0xe
000026  d007              BEQ      |L2.56|
000028  280f              CMP      r0,#0xf
00002a  d14b              BNE      |L2.196|
;;;250      case WM_KEY:
;;;251        _OnKey(hObj, pObj, pMsg);
;;;252        break;
;;;253      case WM_PAINT:
;;;254        GUI_DEBUG_LOG("CHECKBOX: _Callback(WM_PAINT)\n");
;;;255        _Paint(pObj, hObj);
00002c  4649              MOV      r1,r9
00002e  4620              MOV      r0,r4
000030  e8bd47f0          POP      {r4-r10,lr}
000034  f7ffbffe          B.W      _Paint
                  |L2.56|
000038  4648              MOV      r0,r9
00003a  f7fffffe          BL       WM__IsEnabled
00003e  b390              CBZ      r0,|L2.166|
000040  68a8              LDR      r0,[r5,#8]
000042  6841              LDR      r1,[r0,#4]
000044  2900              CMP      r1,#0
000046  dd3d              BLE      |L2.196|
000048  6800              LDR      r0,[r0,#0]
00004a  2820              CMP      r0,#0x20
00004c  d13a              BNE      |L2.196|
00004e  3450              ADDS     r4,r4,#0x50
000050  7860              LDRB     r0,[r4,#1]
000052  7821              LDRB     r1,[r4,#0]
000054  1c40              ADDS     r0,r0,#1
000056  fbb0f2f1          UDIV     r2,r0,r1
00005a  fb010012          MLS      r0,r1,r2,r0
00005e  7060              STRB     r0,[r4,#1]
000060  4648              MOV      r0,r9
000062  f7fffffe          BL       WM_InvalidateWindow
000066  e02d              B        |L2.196|
                  |L2.104|
000068  68a8              LDR      r0,[r5,#8]
00006a  2600              MOVS     r6,#0
00006c  4637              MOV      r7,r6
00006e  4680              MOV      r8,r0
000070  b1e8              CBZ      r0,|L2.174|
000072  4648              MOV      r0,r9
000074  f7fffffe          BL       WM_HasCaptured
000078  b9d0              CBNZ     r0,|L2.176|
00007a  f8980008          LDRB     r0,[r8,#8]
00007e  b198              CBZ      r0,|L2.168|
000080  2101              MOVS     r1,#1
000082  4648              MOV      r0,r9
000084  f7fffffe          BL       WM_SetCapture
000088  3450              ADDS     r4,r4,#0x50
00008a  7860              LDRB     r0,[r4,#1]
00008c  7821              LDRB     r1,[r4,#0]
00008e  1c40              ADDS     r0,r0,#1
000090  fbb0f2f1          UDIV     r2,r0,r1
000094  fb010012          MLS      r0,r1,r2,r0
000098  7060              STRB     r0,[r4,#1]
00009a  3c50              SUBS     r4,r4,#0x50
00009c  4648              MOV      r0,r9
00009e  f7fffffe          BL       WM_InvalidateWindow
0000a2  2601              MOVS     r6,#1
0000a4  e004              B        |L2.176|
                  |L2.166|
0000a6  e00d              B        |L2.196|
                  |L2.168|
0000a8  2701              MOVS     r7,#1
0000aa  2602              MOVS     r6,#2
0000ac  e000              B        |L2.176|
                  |L2.174|
0000ae  2603              MOVS     r6,#3
                  |L2.176|
0000b0  4631              MOV      r1,r6
0000b2  4648              MOV      r0,r9
0000b4  f7fffffe          BL       WM_NotifyParent
0000b8  2f01              CMP      r7,#1
0000ba  d103              BNE      |L2.196|
0000bc  f9b40024          LDRSH    r0,[r4,#0x24]
0000c0  f7fffffe          BL       GUI_StoreKey
                  |L2.196|
;;;256        return;
;;;257      case WM_TOUCH:
;;;258        _OnTouch(hObj, pObj, pMsg);
;;;259        break;
;;;260      }
;;;261      WM_DefaultProc(pMsg);
0000c4  4628              MOV      r0,r5
0000c6  e8bd47f0          POP      {r4-r10,lr}
0000ca  f7ffbffe          B.W      WM_DefaultProc
                  |L2.206|
;;;262    }
0000ce  e8bd87f0          POP      {r4-r10,pc}
;;;263    
                          ENDP


                          AREA ||i._Paint||, CODE, READONLY, ALIGN=1

                  _Paint PROC

⌨️ 快捷键说明

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