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

📄 framewin_setresizeable.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\framewin_setresizeable.o --depend=.\Obj\framewin_setresizeable.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\FRAMEWIN_SetResizeable.c]
                          THUMB

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

                  FRAMEWIN_SetResizeable PROC
;;;525    */
;;;526    void FRAMEWIN_SetResizeable(FRAMEWIN_Handle hObj, int State) {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
;;;527      if (hObj) {
000004  2800              CMP      r0,#0
000006  d011              BEQ      |L1.44|
;;;528        FRAMEWIN_Obj* pObj;
;;;529        WM_LOCK();
;;;530        pObj = FRAMEWIN_H2P(hObj);
000008  f7fffffe          BL       GUI_ALLOC_h2p
;;;531        if (pObj) {
00000c  2800              CMP      r0,#0
00000e  d00d              BEQ      |L1.44|
;;;532          if (State) {
000010  b134              CBZ      r4,|L1.32|
;;;533            GUI_HOOK_Add(&pObj->pFirstHook, &_HOOK_Resizeable, &_HOOKFUNC_Resizeable);
000012  e8bd4010          POP      {r4,lr}
000016  4a06              LDR      r2,|L1.48|
000018  4906              LDR      r1,|L1.52|
00001a  3064              ADDS     r0,r0,#0x64
00001c  f7ffbffe          B.W      GUI_HOOK_Add
                  |L1.32|
;;;534          } else {
;;;535            GUI_HOOK_Remove(&pObj->pFirstHook, &_HOOK_Resizeable);
000020  e8bd4010          POP      {r4,lr}
000024  4903              LDR      r1,|L1.52|
000026  3064              ADDS     r0,r0,#0x64
000028  f7ffbffe          B.W      GUI_HOOK_Remove
                  |L1.44|
;;;536          }
;;;537        }
;;;538        WM_UNLOCK();
;;;539      }
;;;540    }
00002c  bd10              POP      {r4,pc}
;;;541    
                          ENDP

00002e  0000              DCW      0x0000
                  |L1.48|
                          DCD      _HOOKFUNC_Resizeable
                  |L1.52|
                          DCD      ||.data||+0xc

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

                  _ChangeWindowPosSize PROC
;;;307    */
;;;308    static void _ChangeWindowPosSize(FRAMEWIN_Handle hWin, int* px, int* py) {
000000  e92d47fc          PUSH     {r2-r10,lr}
000004  460e              MOV      r6,r1
;;;309      int dx = 0, dy = 0;
000006  2400              MOVS     r4,#0
000008  4681              MOV      r9,r0                 ;308
00000a  4617              MOV      r7,r2                 ;308
00000c  4625              MOV      r5,r4
;;;310      GUI_RECT Rect;
;;;311      WM_GetClientRectEx(hWin, &Rect);
00000e  4669              MOV      r1,sp
000010  f7fffffe          BL       WM_GetClientRectEx
;;;312      /* Calculate new size of window */
;;;313      if (_CaptureFlags & FRAMEWIN_RESIZE_X) {
000014  f8df8090          LDR      r8,|L2.168|
000018  f8d80008          LDR      r0,[r8,#8]  ; _CaptureFlags
00001c  07c1              LSLS     r1,r0,#31
00001e  d008              BEQ      |L2.50|
;;;314        dx = (_CaptureFlags & FRAMEWIN_REPOS_X) ? (_CaptureX - *px) : (*px - _CaptureX);
000020  0741              LSLS     r1,r0,#29
000022  2900              CMP      r1,#0
000024  6831              LDR      r1,[r6,#0]
000026  f8d82000          LDR      r2,[r8,#0]  ; _CaptureX
00002a  da01              BGE      |L2.48|
00002c  1a54              SUBS     r4,r2,r1
00002e  e000              B        |L2.50|
                  |L2.48|
000030  1a8c              SUBS     r4,r1,r2
                  |L2.50|
;;;315      }
;;;316      if (_CaptureFlags & FRAMEWIN_RESIZE_Y) {
000032  0781              LSLS     r1,r0,#30
000034  d508              BPL      |L2.72|
;;;317        dy = (_CaptureFlags & FRAMEWIN_REPOS_Y) ? (_CaptureY - *py) : (*py - _CaptureY);
000036  0701              LSLS     r1,r0,#28
000038  2900              CMP      r1,#0
00003a  6839              LDR      r1,[r7,#0]
00003c  f8d82004          LDR      r2,[r8,#4]  ; _CaptureY
000040  da01              BGE      |L2.70|
000042  1a55              SUBS     r5,r2,r1
000044  e000              B        |L2.72|
                  |L2.70|
000046  1a8d              SUBS     r5,r1,r2
                  |L2.72|
;;;318      }
;;;319      /* Check the minimal size of window */
;;;320      if ((Rect.x1 + dx + 1) < FRAMEWIN_MINSIZE_X) {
000048  f9bd1004          LDRSH    r1,[sp,#4]
00004c  1c62              ADDS     r2,r4,#1
00004e  440a              ADD      r2,r2,r1
000050  2a14              CMP      r2,#0x14
000052  da05              BGE      |L2.96|
;;;321        dx = FRAMEWIN_MINSIZE_X - Rect.x1 - 1;
000054  f1c10413          RSB      r4,r1,#0x13
;;;322        *px = _CaptureX + dx;
000058  f8d81000          LDR      r1,[r8,#0]  ; _CaptureX
00005c  4421              ADD      r1,r1,r4
00005e  6031              STR      r1,[r6,#0]
                  |L2.96|
;;;323      }
;;;324      if ((Rect.y1 + dy + 1) < FRAMEWIN_MINSIZE_Y) {
000060  f9bd1006          LDRSH    r1,[sp,#6]
000064  1c6a              ADDS     r2,r5,#1
000066  440a              ADD      r2,r2,r1
000068  2a14              CMP      r2,#0x14
00006a  da05              BGE      |L2.120|
;;;325        dy = FRAMEWIN_MINSIZE_Y - Rect.y1 - 1;
00006c  f1c10513          RSB      r5,r1,#0x13
;;;326        *py = _CaptureY + dy;
000070  f8d81004          LDR      r1,[r8,#4]  ; _CaptureY
000074  4429              ADD      r1,r1,r5
000076  6039              STR      r1,[r7,#0]
                  |L2.120|
;;;327      }
;;;328      /* Set new window position */
;;;329      if (_CaptureFlags & FRAMEWIN_REPOS_X) {
000078  0740              LSLS     r0,r0,#29
00007a  d504              BPL      |L2.134|
;;;330        WM_MoveWindow(hWin, -dx, 0);
00007c  2200              MOVS     r2,#0
00007e  4261              RSBS     r1,r4,#0
000080  4648              MOV      r0,r9
000082  f7fffffe          BL       WM_MoveWindow
                  |L2.134|
;;;331      }
;;;332      if (_CaptureFlags & FRAMEWIN_REPOS_Y) {
000086  f8d80008          LDR      r0,[r8,#8]  ; _CaptureFlags
00008a  0700              LSLS     r0,r0,#28
00008c  d504              BPL      |L2.152|
;;;333        WM_MoveWindow(hWin, 0, -dy);
00008e  426a              RSBS     r2,r5,#0
000090  2100              MOVS     r1,#0
000092  4648              MOV      r0,r9
000094  f7fffffe          BL       WM_MoveWindow
                  |L2.152|
;;;334      }
;;;335      /* Set new window size */
;;;336      WM_ResizeWindow(hWin, dx, dy);
000098  462a              MOV      r2,r5
00009a  4621              MOV      r1,r4
00009c  4648              MOV      r0,r9
00009e  f7fffffe          BL       WM_ResizeWindow
;;;337    }
0000a2  e8bd87fc          POP      {r2-r10,pc}
;;;338    
                          ENDP

0000a6  0000              DCW      0x0000
                  |L2.168|
                          DCD      ||.data||

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

                  _CheckBorderX PROC
;;;342    */
;;;343    static int _CheckBorderX(int x, int x1, int Border) {
000000  4603              MOV      r3,r0
;;;344      int Mode = 0;
000002  2000              MOVS     r0,#0
;;;345      if (x > (x1 - Border)) {
000004  1a89              SUBS     r1,r1,r2
000006  4299              CMP      r1,r3
000008  da01              BGE      |L3.14|
;;;346        Mode = FRAMEWIN_RESIZE_X;
00000a  2001              MOVS     r0,#1
                  |L3.12|
;;;347      } else if (x < (Border)) {
;;;348        Mode = FRAMEWIN_RESIZE_X | FRAMEWIN_REPOS_X;
;;;349      }
;;;350      return Mode;
;;;351    }
00000c  4770              BX       lr
                  |L3.14|
00000e  4293              CMP      r3,r2                 ;347
000010  dafc              BGE      |L3.12|
000012  2005              MOVS     r0,#5                 ;348
000014  4770              BX       lr
;;;352    
                          ENDP


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

                  _CheckBorderY PROC
;;;356    */
;;;357    static int _CheckBorderY(int y, int y1, int Border) {
000000  4603              MOV      r3,r0
;;;358      int Mode = 0;
000002  2000              MOVS     r0,#0
;;;359      if (y > (y1 - Border)) {
000004  1a89              SUBS     r1,r1,r2
000006  4299              CMP      r1,r3
000008  da01              BGE      |L4.14|
;;;360        Mode = FRAMEWIN_RESIZE_Y;
00000a  2002              MOVS     r0,#2
                  |L4.12|
;;;361      } else if (y < (Border)) {
;;;362        Mode = FRAMEWIN_RESIZE_Y | FRAMEWIN_REPOS_Y;
;;;363      }
;;;364      return Mode;
;;;365    }
00000c  4770              BX       lr
                  |L4.14|
00000e  4293              CMP      r3,r2                 ;361
000010  dafc              BGE      |L4.12|
000012  200a              MOVS     r0,#0xa               ;362
000014  4770              BX       lr
;;;366    
                          ENDP


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

                  _HOOKFUNC_Resizeable PROC
;;;490    */
;;;491    static int _HOOKFUNC_Resizeable(WM_MESSAGE* pMsg) {
000000  b570              PUSH     {r4-r6,lr}
;;;492      WM_HWIN hWin = pMsg->hWin;
000002  f9b06004          LDRSH    r6,[r0,#4]
000006  4604              MOV      r4,r0                 ;491
;;;493      if (WM_HasCaptured(hWin) && (_CaptureFlags == 0)) {
000008  4630              MOV      r0,r6
00000a  f7fffffe          BL       WM_HasCaptured
00000e  4d0e              LDR      r5,|L5.72|
000010  b108              CBZ      r0,|L5.22|
000012  68a8              LDR      r0,[r5,#8]  ; _CaptureFlags
000014  b1b0              CBZ      r0,|L5.68|
                  |L5.22|
;;;494        return 0;
;;;495      }
;;;496      if (FRAMEWIN_IsMinimized(hWin) || FRAMEWIN_IsMaximized(hWin)) {
000016  4630              MOV      r0,r6
000018  f7fffffe          BL       FRAMEWIN_IsMinimized
00001c  b990              CBNZ     r0,|L5.68|
00001e  4630              MOV      r0,r6

⌨️ 快捷键说明

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