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

📄 framewin_setresizeable.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000020  f7fffffe          BL       FRAMEWIN_IsMaximized
000024  b970              CBNZ     r0,|L5.68|
;;;497        return 0;
;;;498      }
;;;499      switch(pMsg->MsgId) {
000026  6820              LDR      r0,[r4,#0]
000028  280c              CMP      r0,#0xc
00002a  d005              BEQ      |L5.56|
00002c  2818              CMP      r0,#0x18
00002e  d109              BNE      |L5.68|
;;;500      case WM_TOUCH:
;;;501        return _OnTouch(hWin, pMsg);
;;;502    #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
;;;503      case WM_MOUSEOVER:
;;;504        return _OnMouseOver(hWin, pMsg);
;;;505    #endif
;;;506      case WM_CAPTURE_RELEASED:
;;;507      #if GUI_SUPPORT_CURSOR
;;;508        _SetResizeCursor(0);
;;;509      #endif
;;;510        _CaptureFlags = 0;
000030  2000              MOVS     r0,#0
;;;511        return 1;
000032  60a8              STR      r0,[r5,#8]  ; _CaptureFlags
000034  2001              MOVS     r0,#1
;;;512      }
;;;513      return 0;
;;;514    }
000036  bd70              POP      {r4-r6,pc}
                  |L5.56|
000038  4621              MOV      r1,r4                 ;501
00003a  4630              MOV      r0,r6                 ;501
00003c  e8bd4070          POP      {r4-r6,lr}            ;501
000040  f7ffbffe          B.W      _OnTouch
                  |L5.68|
000044  2000              MOVS     r0,#0                 ;513
000046  bd70              POP      {r4-r6,pc}
;;;515    
                          ENDP

                  |L5.72|
                          DCD      ||.data||

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

                  _OnTouch PROC
;;;392    */
;;;393    static int _OnTouch(FRAMEWIN_Handle hWin, WM_MESSAGE* pMsg) {
000000  e92d47ff          PUSH     {r0-r10,lr}
;;;394      const GUI_PID_STATE* pState = (const GUI_PID_STATE*)pMsg->Data.p;
;;;395      if (pState) {  /* Something happened in our area (pressed or released) */
000004  688d              LDR      r5,[r1,#8]
000006  4681              MOV      r9,r0                 ;393
000008  2d00              CMP      r5,#0
00000a  d05d              BEQ      |L6.200|
;;;396        int x, y, Mode;
;;;397        x    = pState->x;
00000c  6828              LDR      r0,[r5,#0]
;;;398        y    = pState->y;
00000e  9003              STR      r0,[sp,#0xc]
000010  686f              LDR      r7,[r5,#4]
;;;399        Mode = _CheckReactBorder(hWin, x, y);
000012  4606              MOV      r6,r0
000014  2400              MOVS     r4,#0
000016  4669              MOV      r1,sp
000018  4648              MOV      r0,r9
00001a  9702              STR      r7,[sp,#8]
00001c  f7fffffe          BL       WM_GetClientRectEx
000020  2e00              CMP      r6,#0
000022  db27              BLT      |L6.116|
000024  2f00              CMP      r7,#0
000026  db25              BLT      |L6.116|
000028  f9bd1004          LDRSH    r1,[sp,#4]
00002c  42b1              CMP      r1,r6
00002e  db21              BLT      |L6.116|
000030  f9bd0006          LDRSH    r0,[sp,#6]
000034  42b8              CMP      r0,r7
000036  db1d              BLT      |L6.116|
000038  2203              MOVS     r2,#3
00003a  4630              MOV      r0,r6
00003c  f7fffffe          BL       _CheckBorderX
000040  f9bd1006          LDRSH    r1,[sp,#6]
000044  ea5f0800          MOVS     r8,r0
000048  d006              BEQ      |L6.88|
00004a  220c              MOVS     r2,#0xc
00004c  4638              MOV      r0,r7
00004e  f7fffffe          BL       _CheckBorderY
000052  ea400008          ORR      r0,r0,r8
000056  e00c              B        |L6.114|
                  |L6.88|
000058  2203              MOVS     r2,#3
00005a  4638              MOV      r0,r7
00005c  f7fffffe          BL       _CheckBorderY
000060  0004              MOVS     r4,r0
000062  d007              BEQ      |L6.116|
000064  f9bd1004          LDRSH    r1,[sp,#4]
000068  220c              MOVS     r2,#0xc
00006a  4630              MOV      r0,r6
00006c  f7fffffe          BL       _CheckBorderX
000070  4320              ORRS     r0,r0,r4
                  |L6.114|
000072  4604              MOV      r4,r0
                  |L6.116|
;;;400        if (pState->Pressed == 1) {
000074  7a28              LDRB     r0,[r5,#8]
;;;401          if (_CaptureFlags & FRAMEWIN_RESIZE) {
000076  4d15              LDR      r5,|L6.204|
000078  2801              CMP      r0,#1                 ;400
00007a  d117              BNE      |L6.172|
00007c  68a8              LDR      r0,[r5,#8]  ; _CaptureFlags
00007e  0700              LSLS     r0,r0,#28
000080  d006              BEQ      |L6.144|
;;;402            _ChangeWindowPosSize(hWin, &x, &y);
000082  aa02              ADD      r2,sp,#8
000084  a903              ADD      r1,sp,#0xc
000086  4648              MOV      r0,r9
000088  f7fffffe          BL       _ChangeWindowPosSize
;;;403            _SetCapture(hWin, x, y, 0);
00008c  2300              MOVS     r3,#0
;;;404            return 1;
00008e  e007              B        |L6.160|
                  |L6.144|
;;;405          } else if (Mode) {
000090  b1d4              CBZ      r4,|L6.200|
;;;406            WM_SetFocus(hWin);
000092  4648              MOV      r0,r9
000094  f7fffffe          BL       WM_SetFocus
;;;407            WM_BringToTop(hWin);
000098  4648              MOV      r0,r9
00009a  f7fffffe          BL       WM_BringToTop
;;;408            _SetCapture(hWin, x, y, Mode);
00009e  4623              MOV      r3,r4
                  |L6.160|
0000a0  e9dd2102          LDRD     r2,r1,[sp,#8]         ;403
0000a4  4648              MOV      r0,r9                 ;403
0000a6  f7fffffe          BL       _SetCapture
0000aa  e009              B        |L6.192|
                  |L6.172|
;;;409            return 1;
;;;410          }
;;;411          #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
;;;412          else if (_CaptureFlags) {
;;;413            WM_ReleaseCapture();
;;;414            return 1;
;;;415          }
;;;416          #endif
;;;417        } else if (WM_HasCaptured(hWin)) {
0000ac  4648              MOV      r0,r9
0000ae  f7fffffe          BL       WM_HasCaptured
0000b2  b148              CBZ      r0,|L6.200|
;;;418          _CaptureFlags &= ~(FRAMEWIN_RESIZE);
0000b4  68a8              LDR      r0,[r5,#8]  ; _CaptureFlags
0000b6  f020000f          BIC      r0,r0,#0xf
;;;419          #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
;;;420            if (!Mode)
;;;421          #endif
;;;422          {
;;;423            WM_ReleaseCapture();
0000ba  60a8              STR      r0,[r5,#8]  ; _CaptureFlags
0000bc  f7fffffe          BL       WM_ReleaseCapture
                  |L6.192|
;;;424          }
;;;425          return 1;
0000c0  2001              MOVS     r0,#1
                  |L6.194|
;;;426        }
;;;427      }
;;;428      return 0;
;;;429    }
0000c2  b004              ADD      sp,sp,#0x10
0000c4  e8bd87f0          POP      {r4-r10,pc}
                  |L6.200|
0000c8  2000              MOVS     r0,#0                 ;428
0000ca  e7fa              B        |L6.194|
;;;430    
                          ENDP

                  |L6.204|
                          DCD      ||.data||

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

                  _SetCapture PROC
;;;282    */
;;;283    static void _SetCapture(FRAMEWIN_Handle hWin, int x, int y, int Mode) {
000000  b570              PUSH     {r4-r6,lr}
;;;284      if ((_CaptureFlags & FRAMEWIN_REPOS_X) == 0) {
000002  4d0d              LDR      r5,|L7.56|
000004  4606              MOV      r6,r0                 ;283
000006  68a8              LDR      r0,[r5,#8]  ; _CaptureFlags
000008  461c              MOV      r4,r3                 ;283
00000a  0743              LSLS     r3,r0,#29
00000c  d400              BMI      |L7.16|
;;;285        _CaptureX = x;
00000e  6029              STR      r1,[r5,#0]  ; _CaptureX
                  |L7.16|
;;;286      }
;;;287      if ((_CaptureFlags & FRAMEWIN_REPOS_Y) == 0) {
000010  0700              LSLS     r0,r0,#28
000012  d400              BMI      |L7.22|
;;;288        _CaptureY = y;
000014  606a              STR      r2,[r5,#4]  ; _CaptureY
                  |L7.22|
;;;289      }
;;;290      if (Mode) {
000016  2c00              CMP      r4,#0
000018  d00d              BEQ      |L7.54|
;;;291        if (WM_HasCaptured(hWin) == 0) {
00001a  4630              MOV      r0,r6
00001c  f7fffffe          BL       WM_HasCaptured
000020  b918              CBNZ     r0,|L7.42|
;;;292          WM_SetCapture(hWin, 0);
000022  2100              MOVS     r1,#0
000024  4630              MOV      r0,r6
000026  f7fffffe          BL       WM_SetCapture
                  |L7.42|
;;;293        }
;;;294      #if GUI_SUPPORT_CURSOR
;;;295        _SetResizeCursor(Mode);
;;;296      #endif
;;;297        if (Mode & FRAMEWIN_MOUSEOVER) {
00002a  06e0              LSLS     r0,r4,#27
00002c  d500              BPL      |L7.48|
;;;298          Mode = 0;
00002e  2400              MOVS     r4,#0
                  |L7.48|
;;;299        }
;;;300        _CaptureFlags = (Mode | FRAMEWIN_MOUSEOVER);
000030  f0440010          ORR      r0,r4,#0x10
000034  60a8              STR      r0,[r5,#8]  ; _CaptureFlags
                  |L7.54|
;;;301      }
;;;302    }
000036  bd70              POP      {r4-r6,pc}
;;;303    
                          ENDP

                  |L7.56|
                          DCD      ||.data||

                          AREA ||.data||, DATA, ALIGN=2

                  _CaptureX
                          DCD      0x00000000
                  _CaptureY
                          DCD      0x00000000
                  _CaptureFlags
                          DCD      0x00000000
                  _HOOK_Resizeable
                          %        8

⌨️ 快捷键说明

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