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

📄 wm.txt

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

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

                  WM_Activate PROC
;;;1638   */
;;;1639   void WM_Activate(void) {
000000  4901              LDR      r1,|L1.8|
;;;1640     WM_IsActive = 1;       /* Running */
000002  2001              MOVS     r0,#1
000004  7008              STRB     r0,[r1,#0]
;;;1641   }
000006  4770              BX       lr
;;;1642   
                          ENDP

                  |L1.8|
                          DCD      ||.data||

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

                  WM_CreateWindow PROC
;;;885    */
;;;886    WM_HWIN WM_CreateWindow(int x0, int y0, int width, int height, U16 Style, WM_CALLBACK* cb, int NumExtraBytes) {
000000  e92d41ff          PUSH     {r0-r8,lr}
000004  460d              MOV      r5,r1
000006  4616              MOV      r6,r2
000008  461f              MOV      r7,r3
;;;887      return WM_CreateWindowAsChild(x0,y0,width,height, 0 /* No parent */,  Style, cb, NumExtraBytes);
00000a  a90a              ADD      r1,sp,#0x28
00000c  c90e              LDM      r1,{r1-r3}
00000e  4604              MOV      r4,r0                 ;886
000010  2000              MOVS     r0,#0
000012  e88d000f          STM      sp,{r0-r3}
000016  463b              MOV      r3,r7
000018  4632              MOV      r2,r6
00001a  4629              MOV      r1,r5
00001c  4620              MOV      r0,r4
00001e  f7fffffe          BL       WM_CreateWindowAsChild
;;;888    }
000022  b004              ADD      sp,sp,#0x10
000024  e8bd81f0          POP      {r4-r8,pc}
;;;889    
                          ENDP


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

                  WM_CreateWindowAsChild PROC
;;;801    */
;;;802    WM_HWIN WM_CreateWindowAsChild( int x0, int y0, int width, int height
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;803                                   ,WM_HWIN hParent, U16 Style, WM_CALLBACK* cb
;;;804                                   ,int NumExtraBytes) {
;;;805      WM_Obj* pWin;
;;;806      WM_HWIN hWin;
;;;807      WM_ASSERT_NOT_IN_PAINT();
;;;808      WM_LOCK();
;;;809      Style |= WM__CreateFlags;
000004  4c45              LDR      r4,|L3.284|
000006  4607              MOV      r7,r0                 ;804
000008  e9dd650a          LDRD     r6,r5,[sp,#0x28]
00000c  89a0              LDRH     r0,[r4,#0xc]  ; WM__CreateFlags
;;;810      /* Default parent is Desktop 0 */
;;;811      if (!hParent) {
00000e  f8dd9034          LDR      r9,[sp,#0x34]
000012  4688              MOV      r8,r1                 ;804
000014  4692              MOV      r10,r2                ;804
000016  469b              MOV      r11,r3                ;804
000018  4305              ORRS     r5,r5,r0              ;809
00001a  b92e              CBNZ     r6,|L3.40|
;;;812        if (WM__NumWindows) {
00001c  88a0              LDRH     r0,[r4,#4]  ; WM__NumWindows
00001e  b118              CBZ      r0,|L3.40|
;;;813        #if GUI_NUM_LAYERS == 1
;;;814          hParent = WM__ahDesktopWin[0];
000020  f104000a          ADD      r0,r4,#0xa
000024  f9b06000          LDRSH    r6,[r0,#0]  ; WM__ahDesktopWin
                  |L3.40|
;;;815        #else
;;;816          hParent = WM__ahDesktopWin[GUI_Context.SelLayer];
;;;817        #endif
;;;818        }
;;;819      }
;;;820      if (hParent == WM_UNATTACHED) {
000028  1c70              ADDS     r0,r6,#1
00002a  d101              BNE      |L3.48|
;;;821        hParent = WM_HWIN_NULL;
00002c  2600              MOVS     r6,#0
00002e  e019              B        |L3.100|
                  |L3.48|
;;;822      }  
;;;823      if (hParent) {
000030  b1c6              CBZ      r6,|L3.100|
;;;824        WM_Obj* pParent = WM_H2P(hParent);
000032  4630              MOV      r0,r6
000034  f7fffffe          BL       GUI_ALLOC_h2p
;;;825        x0 += pParent->Rect.x0;
000038  f9b01000          LDRSH    r1,[r0,#0]
;;;826        y0 += pParent->Rect.y0;
00003c  f9b02002          LDRSH    r2,[r0,#2]
000040  440f              ADD      r7,r7,r1              ;825
000042  4490              ADD      r8,r8,r2
;;;827        if (width==0) {
000044  f1ba0f00          CMP      r10,#0
000048  d104              BNE      |L3.84|
;;;828          width = pParent->Rect.x1 - pParent->Rect.x0+1;
00004a  f9b03004          LDRSH    r3,[r0,#4]
00004e  1a59              SUBS     r1,r3,r1
000050  f1010a01          ADD      r10,r1,#1
                  |L3.84|
;;;829        }
;;;830        if (height==0) {
000054  f1bb0f00          CMP      r11,#0
000058  d104              BNE      |L3.100|
;;;831          height = pParent->Rect.y1 - pParent->Rect.y0+1;
00005a  f9b00006          LDRSH    r0,[r0,#6]
00005e  1a80              SUBS     r0,r0,r2
000060  f1000b01          ADD      r11,r0,#1
                  |L3.100|
;;;832        }
;;;833      }
;;;834      if ((hWin = (WM_HWIN) GUI_ALLOC_AllocZero(NumExtraBytes + sizeof(WM_Obj))) == 0) {
000064  f1090020          ADD      r0,r9,#0x20
000068  b200              SXTH     r0,r0
00006a  f7fffffe          BL       GUI_ALLOC_AllocZero
00006e  ea5f0900          MOVS     r9,r0
000072  d04f              BEQ      |L3.276|
;;;835        GUI_DEBUG_ERROROUT("WM_CreateWindow: No memory to create window");
;;;836      } else {
;;;837        WM__NumWindows++;
000074  4829              LDR      r0,|L3.284|
000076  4929              LDR      r1,|L3.284|
000078  8880              LDRH     r0,[r0,#4]  ; WM__NumWindows
00007a  1c40              ADDS     r0,r0,#1
00007c  8088              STRH     r0,[r1,#4]
;;;838        pWin = WM_H2P(hWin);
00007e  4648              MOV      r0,r9
000080  f7fffffe          BL       GUI_ALLOC_h2p
;;;839        pWin->Rect.x0 = x0;
000084  8007              STRH     r7,[r0,#0]
;;;840        pWin->Rect.y0 = y0;
;;;841        pWin->Rect.x1 = x0 + width - 1;
000086  eb07010a          ADD      r1,r7,r10
00008a  f8a08002          STRH     r8,[r0,#2]            ;840
00008e  1e49              SUBS     r1,r1,#1
000090  8081              STRH     r1,[r0,#4]
;;;842        pWin->Rect.y1 = y0 + height - 1;
000092  eb08010b          ADD      r1,r8,r11
000096  1e49              SUBS     r1,r1,#1
000098  80c1              STRH     r1,[r0,#6]
;;;843        pWin->cb = cb;
00009a  990c              LDR      r1,[sp,#0x30]
;;;844        /* Copy the flags which can simply be accepted */
;;;845        pWin->Status |= (Style & (WM_CF_SHOW |
00009c  6101              STR      r1,[r0,#0x10]
00009e  4604              MOV      r4,r0                 ;838
0000a0  8b81              LDRH     r1,[r0,#0x1c]
0000a2  f643708f          MOV      r0,#0x3f8f
0000a6  4028              ANDS     r0,r0,r5
0000a8  4301              ORRS     r1,r1,r0
0000aa  481c              LDR      r0,|L3.284|
0000ac  83a1              STRH     r1,[r4,#0x1c]
0000ae  f9b00008          LDRSH    r0,[r0,#8]  ; WM__FirstWin
0000b2  b150              CBZ      r0,|L3.202|
0000b4  f7fffffe          BL       GUI_ALLOC_h2p
0000b8  4607              MOV      r7,r0
0000ba  4648              MOV      r0,r9
0000bc  f7fffffe          BL       GUI_ALLOC_h2p
0000c0  8ab9              LDRH     r1,[r7,#0x14]
0000c2  8281              STRH     r1,[r0,#0x14]
0000c4  f8a79014          STRH     r9,[r7,#0x14]
0000c8  e002              B        |L3.208|
                  |L3.202|
0000ca  4914              LDR      r1,|L3.284|
0000cc  f8a19008          STRH     r9,[r1,#8]
                  |L3.208|
;;;846                                  WM_SF_MEMDEV |
;;;847                                  WM_CF_MEMDEV_ON_REDRAW |
;;;848                                  WM_SF_STAYONTOP |
;;;849                                  WM_SF_CONST_OUTLINE |
;;;850                                  WM_SF_HASTRANS |
;;;851                                  WM_CF_ANCHOR_RIGHT |
;;;852                                  WM_CF_ANCHOR_BOTTOM |
;;;853                                  WM_CF_ANCHOR_LEFT |
;;;854                                  WM_CF_ANCHOR_TOP |
;;;855                                  WM_CF_LATE_CLIP));
;;;856        /* Add to linked lists */
;;;857        _AddToLinList(hWin);
;;;858        WM__InsertWindowIntoList(hWin, hParent);
0000d0  4631              MOV      r1,r6
0000d2  4648              MOV      r0,r9
0000d4  f7fffffe          BL       WM__InsertWindowIntoList
;;;859        /* Activate window if WM_CF_ACTIVATE is specified */
;;;860        if (Style & WM_CF_ACTIVATE) {
0000d8  06a8              LSLS     r0,r5,#26
0000da  d502              BPL      |L3.226|
;;;861          WM_SelectWindow(hWin);  /* This is not needed if callbacks are being used, but it does not cost a lot and makes life easier ... */
0000dc  4648              MOV      r0,r9
0000de  f7fffffe          BL       WM_SelectWindow
                  |L3.226|
;;;862        }
;;;863        /* Handle the Style flags, one at a time */
;;;864        #if WM_SUPPORT_TRANSPARENCY
;;;865          if (Style & WM_SF_HASTRANS) {
0000e2  07e8              LSLS     r0,r5,#31
0000e4  d003              BEQ      |L3.238|
;;;866            WM__TransWindowCnt++;          /* Increment counter for transparency windows */
0000e6  490d              LDR      r1,|L3.284|
0000e8  6a48              LDR      r0,[r1,#0x24]  ; WM__TransWindowCnt
0000ea  1c40              ADDS     r0,r0,#1
0000ec  6248              STR      r0,[r1,#0x24]  ; WM__TransWindowCnt
                  |L3.238|
;;;867          }
;;;868        #endif
;;;869        if (Style & WM_CF_BGND) {
0000ee  0668              LSLS     r0,r5,#25
0000f0  d502              BPL      |L3.248|
;;;870          WM_BringToBottom(hWin);
0000f2  4648              MOV      r0,r9
0000f4  f7fffffe          BL       WM_BringToBottom
                  |L3.248|
;;;871        }
;;;872        if (Style & WM_CF_SHOW) {
0000f8  07a8              LSLS     r0,r5,#30
0000fa  d507              BPL      |L3.268|
;;;873          pWin->Status |= WM_SF_ISVIS;  /* Set Visibility flag */
0000fc  8ba0              LDRH     r0,[r4,#0x1c]
0000fe  2100              MOVS     r1,#0
000100  f0400002          ORR      r0,r0,#2
000104  83a0              STRH     r0,[r4,#0x1c]
000106  4648              MOV      r0,r9
000108  f7fffffe          BL       WM_InvalidateRect
                  |L3.268|
;;;874          WM_InvalidateWindow(hWin);    /* Mark content as invalid */
;;;875        }
;;;876        WM__SendMsgNoData(hWin, WM_CREATE);
00010c  2101              MOVS     r1,#1
00010e  4648              MOV      r0,r9
000110  f7fffffe          BL       WM__SendMsgNoData
                  |L3.276|
;;;877      }
;;;878      WM_UNLOCK();
;;;879      return hWin;
000114  4648              MOV      r0,r9
;;;880    }
000116  e8bd9ff0          POP      {r4-r12,pc}
;;;881    
                          ENDP

00011a  0000              DCW      0x0000
                  |L3.284|
                          DCD      ||.data||

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

                  WM_Deactivate PROC
;;;1646   */
;;;1647   void WM_Deactivate(void) {
000000  4902              LDR      r1,|L4.12|
;;;1648     WM_IsActive = 0;       /* No clipping performed by WM */
000002  2000              MOVS     r0,#0
000004  7008              STRB     r0,[r1,#0]
;;;1649     WM_LOCK();
;;;1650     LCD_SetClipRectMax();
000006  f7ffbffe          B.W      LCD_SetClipRectMax
;;;1651     WM_UNLOCK();
;;;1652   }
;;;1653   
                          ENDP

00000a  0000              DCW      0x0000
                  |L4.12|
                          DCD      ||.data||

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

                  WM_DefaultProc PROC
;;;1663   */
;;;1664   void WM_DefaultProc(WM_MESSAGE* pMsg) {
000000  b570              PUSH     {r4-r6,lr}
;;;1665     WM_HWIN hWin = pMsg->hWin;
000002  f9b05004          LDRSH    r5,[r0,#4]
000006  4604              MOV      r4,r0                 ;1664
;;;1666     const void *p = pMsg->Data.p;
;;;1667     WM_Obj* pWin = WM_H2P(hWin);
000008  6886              LDR      r6,[r0,#8]
00000a  4628              MOV      r0,r5
00000c  f7fffffe          BL       GUI_ALLOC_h2p
;;;1668     /* Exec message */
;;;1669     switch (pMsg->MsgId) {
000010  6821              LDR      r1,[r4,#0]
000012  2917              CMP      r1,#0x17
000014  d012              BEQ      |L5.60|
000016  dc07              BGT      |L5.40|
000018  290e              CMP      r1,#0xe
00001a  d011              BEQ      |L5.64|
00001c  2914              CMP      r1,#0x14
00001e  d118              BNE      |L5.82|
;;;1670     case WM_GET_INSIDE_RECT:      /* return client window in absolute (screen) coordinates */
;;;1671       WM__GetClientRectWin(pWin, (GUI_RECT*)p);
000020  4631              MOV      r1,r6

⌨️ 快捷键说明

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