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

📄 edit.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00001a  4621              MOV      r1,r4
00001c  4638              MOV      r0,r7
00001e  f7fffffe          BL       WIDGET_HandleActive
000022  2800              CMP      r0,#0
000024  d02e              BEQ      |L13.132|
;;;455        return;
;;;456      }
;;;457      switch (pMsg->MsgId) {
000026  6820              LDR      r0,[r4,#0]
000028  280b              CMP      r0,#0xb
00002a  d014              BEQ      |L13.86|
00002c  280c              CMP      r0,#0xc
00002e  d009              BEQ      |L13.68|
000030  280e              CMP      r0,#0xe
000032  d015              BEQ      |L13.96|
000034  280f              CMP      r0,#0xf
000036  d120              BNE      |L13.122|
;;;458      case WM_TOUCH:
;;;459        _OnTouch(hObj, pObj, pMsg);
;;;460        break;
;;;461      case WM_PAINT:
;;;462        GUI_DEBUG_LOG("EDIT: _Callback(WM_PAINT)\n");
;;;463        _Paint(pObj, hObj);
000038  4639              MOV      r1,r7
00003a  4628              MOV      r0,r5
00003c  e8bd41f0          POP      {r4-r8,lr}
000040  f7ffbffe          B.W      _Paint
                  |L13.68|
000044  68a0              LDR      r0,[r4,#8]
000046  b1c0              CBZ      r0,|L13.122|
000048  7a01              LDRB     r1,[r0,#8]
00004a  b1b1              CBZ      r1,|L13.122|
00004c  6801              LDR      r1,[r0,#0]
00004e  4638              MOV      r0,r7
000050  f7fffffe          BL       EDIT_SetCursorAtPixel
000054  e011              B        |L13.122|
                  |L13.86|
000056  f1050028          ADD      r0,r5,#0x28
00005a  f7fffffe          BL       GUI_ALLOC_FreePtr
;;;464        return;
;;;465      case WM_DELETE:
;;;466        GUI_DEBUG_LOG("EDIT: _Callback(WM_DELETE)\n");
;;;467        _Delete(pObj);
;;;468        break;       /* No return here ... WM_DefaultProc needs to be called */
00005e  e00c              B        |L13.122|
                  |L13.96|
;;;469      case WM_KEY:
;;;470        if (IsEnabled) {
000060  b15e              CBZ      r6,|L13.122|
;;;471          if ( ((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
000062  68a0              LDR      r0,[r4,#8]
000064  6841              LDR      r1,[r0,#4]
000066  2900              CMP      r1,#0
000068  dd07              BLE      |L13.122|
;;;472            int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key;
;;;473            switch (Key) {
00006a  6801              LDR      r1,[r0,#0]
00006c  2909              CMP      r1,#9
00006e  d004              BEQ      |L13.122|
;;;474              case GUI_KEY_TAB:
;;;475                break;                    /* Send to parent by not doing anything */
;;;476              default:
;;;477                EDIT_AddKey(hObj, Key);
000070  4638              MOV      r0,r7
000072  e8bd41f0          POP      {r4-r8,lr}
000076  f7ffbffe          B.W      EDIT_AddKey
                  |L13.122|
;;;478                return;
;;;479            }
;;;480          }
;;;481        }
;;;482        break;
;;;483      }
;;;484      WM_DefaultProc(pMsg);
00007a  4620              MOV      r0,r4
00007c  e8bd41f0          POP      {r4-r8,lr}
000080  f7ffbffe          B.W      WM_DefaultProc
                  |L13.132|
;;;485    }
000084  e8bd81f0          POP      {r4-r8,pc}
;;;486    
                          ENDP


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

                  EDIT__GetCurrentChar PROC
;;;384    */
;;;385    U16 EDIT__GetCurrentChar(EDIT_Obj* pObj) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
;;;386      U16 Char = 0;
;;;387      if (pObj->hpText) {
000004  f9b41028          LDRSH    r1,[r4,#0x28]
000008  2000              MOVS     r0,#0                 ;386
00000a  2900              CMP      r1,#0
00000c  d00b              BEQ      |L14.38|
00000e  4608              MOV      r0,r1
;;;388        const char* pText;
;;;389        pText  = (const char*) GUI_ALLOC_h2p(pObj->hpText);
000010  f7fffffe          BL       GUI_ALLOC_h2p
000014  4605              MOV      r5,r0
;;;390        pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000016  6c21              LDR      r1,[r4,#0x40]
000018  f7fffffe          BL       GUI_UC__NumChars2NumBytes
00001c  4428              ADD      r0,r0,r5
;;;391        Char   = GUI_UC_GetCharCode(pText);
00001e  e8bd4070          POP      {r4-r6,lr}
000022  f7ffbffe          B.W      GUI_UC_GetCharCode
                  |L14.38|
;;;392      }
;;;393      return Char;
;;;394    }
000026  bd70              POP      {r4-r6,pc}
;;;395    
                          ENDP


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

                  EDIT__SetCursorPos PROC
;;;401    */
;;;402    void EDIT__SetCursorPos(EDIT_Obj* pObj, int CursorPos) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
;;;403      if (pObj->hpText) {
000004  f9b00028          LDRSH    r0,[r0,#0x28]
000008  460c              MOV      r4,r1                 ;402
00000a  2800              CMP      r0,#0
00000c  d019              BEQ      |L15.66|
;;;404        char* pText;
;;;405        int NumChars, Offset;
;;;406        pText    = (char*) GUI_ALLOC_h2p(pObj->hpText);
00000e  f7fffffe          BL       GUI_ALLOC_h2p
;;;407        NumChars = GUI__GetNumChars(pText);
000012  f7fffffe          BL       GUI__GetNumChars
;;;408        Offset   = (pObj->EditMode == GUI_EDIT_MODE_INSERT) ? 0 : 1;
000016  f8951048          LDRB     r1,[r5,#0x48]
00001a  b101              CBZ      r1,|L15.30|
00001c  2101              MOVS     r1,#1
                  |L15.30|
;;;409        if (CursorPos < 0) {
00001e  2c00              CMP      r4,#0
000020  da00              BGE      |L15.36|
;;;410          CursorPos = 0;
000022  2400              MOVS     r4,#0
                  |L15.36|
;;;411        }
;;;412        if (CursorPos > NumChars) {
000024  4284              CMP      r4,r0
000026  dd00              BLE      |L15.42|
;;;413          CursorPos = NumChars;
000028  4604              MOV      r4,r0
                  |L15.42|
;;;414        }
;;;415        if (CursorPos > (pObj->MaxLen - Offset)) {
00002a  f9b5002a          LDRSH    r0,[r5,#0x2a]
00002e  1a40              SUBS     r0,r0,r1
000030  42a0              CMP      r0,r4
000032  da00              BGE      |L15.54|
;;;416          CursorPos = pObj->MaxLen - Offset;
000034  4604              MOV      r4,r0
                  |L15.54|
;;;417        }
;;;418        if (pObj->CursorPos != CursorPos) {
000036  6c28              LDR      r0,[r5,#0x40]
000038  42a0              CMP      r0,r4
00003a  d000              BEQ      |L15.62|
;;;419          pObj->CursorPos = CursorPos;
00003c  642c              STR      r4,[r5,#0x40]
                  |L15.62|
;;;420        }
;;;421        pObj->SelSize = 0;
00003e  2000              MOVS     r0,#0
;;;422      }
000040  6468              STR      r0,[r5,#0x44]
                  |L15.66|
;;;423    }
000042  bd70              POP      {r4-r6,pc}
;;;424    
                          ENDP


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

                  _DeleteChar PROC
;;;339    */
;;;340    static void _DeleteChar(EDIT_Handle hObj, EDIT_Obj* pObj) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
;;;341      if (pObj->hpText) {
000004  f9b10028          LDRSH    r0,[r1,#0x28]
000008  460c              MOV      r4,r1                 ;340
00000a  2800              CMP      r0,#0
00000c  d019              BEQ      |L16.66|
;;;342        unsigned CursorOffset;
;;;343        char* pText;
;;;344        pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  4606              MOV      r6,r0
;;;345        CursorOffset = GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000014  6c21              LDR      r1,[r4,#0x40]
000016  f7fffffe          BL       GUI_UC__NumChars2NumBytes
00001a  4604              MOV      r4,r0
;;;346        if (CursorOffset < strlen(pText)) {
00001c  4630              MOV      r0,r6
00001e  f7fffffe          BL       strlen
000022  42a0              CMP      r0,r4
000024  d90d              BLS      |L16.66|
;;;347          int NumBytes;
;;;348          pText += CursorOffset;
000026  4434              ADD      r4,r4,r6
;;;349          NumBytes = GUI_UC_GetCharSize(pText);
000028  4620              MOV      r0,r4
00002a  f7fffffe          BL       GUI_UC_GetCharSize
;;;350          strcpy(pText, pText + NumBytes);
00002e  1821              ADDS     r1,r4,r0
000030  4620              MOV      r0,r4
000032  f7fffffe          BL       strcpy
;;;351          WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
000036  4628              MOV      r0,r5
000038  e8bd4070          POP      {r4-r6,lr}
00003c  2105              MOVS     r1,#5
00003e  f7ffbffe          B.W      WM_NotifyParent
                  |L16.66|
;;;352        }
;;;353      }
;;;354    }
000042  bd70              POP      {r4-r6,pc}
;;;355    
                          ENDP


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

                  _IncrementBuffer PROC
;;;266    */
;;;267    static int _IncrementBuffer(EDIT_Obj* pObj, unsigned AddBytes) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
;;;268      WM_HMEM hNew;
;;;269      int NewSize;
;;;270      NewSize = pObj->BufferSize + AddBytes;
000004  8d80              LDRH     r0,[r0,#0x2c]
000006  1846              ADDS     r6,r0,r1
;;;271      hNew    = GUI_ALLOC_Realloc(pObj->hpText, NewSize);
000008  f9b40028          LDRSH    r0,[r4,#0x28]
00000c  4631              MOV      r1,r6
00000e  f7fffffe          BL       GUI_ALLOC_Realloc
000012  0005              MOVS     r5,r0
;;;272      if (hNew) {
000014  d009              BEQ      |L17.42|
;;;273        if (!(pObj->hpText)) {
000016  8d20              LDRH     r0,[r4,#0x28]
000018  b920              CBNZ     r0,|L17.36|
;;;274          char* pText;
;;;275          pText  = (char*) GUI_ALLOC_h2p(hNew);
00001a  4628              MOV      r0,r5
00001c  f7fffffe          BL       GUI_ALLOC_h2p
;;;276          *pText = 0;
000020  2100              MOVS     r1,#0
000022  7001              STRB     r1,[r0,#0]
                  |L17.36|
;;;277        }
;;;278        pObj->BufferSize = NewSize;
000024  85a6              STRH     r6,[r4,#0x2c]
;;;279        pObj->hpText     = hNew;
000026  8525              STRH     r5,[r4,#0x28]
;;;280        return 1;
000028  2001              MOVS     r0,#1
                  |L17.42|
;;;281      }
;;;282      return 0;
;;;283    }
00002a  bd70              POP      {r4-r6,pc}
;;;284    
                          ENDP


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

                  _InsertChar PROC
;;;361    */
;;;362    static int _InsertChar(EDIT_Handle hObj, EDIT_Obj* pObj, U16 Char) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4605              MOV      r5,r0
000006  f9b1002a          LDRSH    r0,[r1,#0x2a]
00000a  460c              MOV      r4,r1
00000c  4690              MOV      r8,r2
00000e  2800              CMP      r0,#0
000010  dd0d              BLE      |L18.46|
000012  f9b41028          LDRSH    r1,[r4,#0x28]
000016  2000              MOVS     r0,#0
000018  b121              CBZ      r1,|L18.36|
00001a  4608              MOV      r0,r1
00001c  f7fffffe          BL       GUI_ALLOC_h2p
000020  f7fffffe          BL       GUI__GetNumChars
                  |L18.36|
000024  f9b4102a          LDRSH    r1,[r4,#0x2a]
000028  1c40              ADDS     r0,r0,#1
00002a  4288              CMP      r0,r1
00002c  dc24              BGT      |L18.120|
                  |L18.46|
;;;363      if (_IsCharsAvailable(pObj, 1)) {
;;;364        int BytesNeeded;
;;;365        BytesNeeded = GUI_UC__CalcSizeOfChar(Char);
00002e  4640              MOV      r0,r8
000030  f7fffffe          BL       GUI_UC__CalcSizeOfChar
000034  4606              MOV      r6,r0
;;;366        if (_IsSpaceInBuffer(pObj, BytesNeeded)) {
000036  4601              MOV      r1,r0
000038  4620              MOV      r0,r4
00003a  f7fffffe          BL       _IsSpaceInBuffer
00003e  b1d8              CBZ      r0,|L18.120|
;;;367          int CursorOffset;

⌨️ 快捷键说明

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