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

📄 dropdown.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
000014  f7fffffe          BL       GUI_GetYDistOfFont
000018  4605              MOV      r5,r0
;;;527        pObj->Props.pFont = pfont;
;;;528        DROPDOWN__AdjustHeight(hObj, pObj);
00001a  4621              MOV      r1,r4
00001c  4630              MOV      r0,r6
00001e  6427              STR      r7,[r4,#0x40]
000020  f7fffffe          BL       DROPDOWN__AdjustHeight
;;;529        DROPDOWN_Invalidate(hObj);
000024  4630              MOV      r0,r6
000026  f7fffffe          BL       WM_InvalidateWindow
;;;530        if (pObj->hListWin) {
00002a  f8b40060          LDRH     r0,[r4,#0x60]
00002e  2800              CMP      r0,#0
000030  d011              BEQ      |L13.86|
;;;531          if (OldHeight != GUI_GetYDistOfFont(pObj->Props.pFont)) {
000032  6c20              LDR      r0,[r4,#0x40]
000034  f7fffffe          BL       GUI_GetYDistOfFont
000038  42a8              CMP      r0,r5
00003a  d005              BEQ      |L13.72|
;;;532            DROPDOWN_Collapse(hObj);
00003c  4630              MOV      r0,r6
00003e  f7fffffe          BL       DROPDOWN_Collapse
;;;533            DROPDOWN_Expand(hObj);
000042  4630              MOV      r0,r6
000044  f7fffffe          BL       DROPDOWN_Expand
                  |L13.72|
;;;534          }
;;;535          LISTBOX_SetFont(pObj->hListWin, pfont);
000048  f9b40060          LDRSH    r0,[r4,#0x60]
00004c  4639              MOV      r1,r7
00004e  e8bd41f0          POP      {r4-r8,lr}
000052  f7ffbffe          B.W      LISTBOX_SetFont
                  |L13.86|
;;;536        }
;;;537        WM_UNLOCK();
;;;538      }
;;;539    }
000056  e8bd81f0          POP      {r4-r8,pc}
;;;540    
                          ENDP


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

                  DROPDOWN_SetScrollbarWidth PROC
;;;644    */
;;;645    void DROPDOWN_SetScrollbarWidth(DROPDOWN_Handle hObj, unsigned Width) {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
;;;646      DROPDOWN_Obj* pObj;
;;;647      if (hObj) {
000004  2800              CMP      r0,#0
000006  d010              BEQ      |L14.42|
;;;648        WM_LOCK();
;;;649        pObj = DROPDOWN_H2P(hObj);
000008  f7fffffe          BL       GUI_ALLOC_h2p
;;;650        ASSERT_IS_VALID_PTR(pObj);
;;;651        if (Width != (unsigned)pObj->ScrollbarWidth) {
00000c  f8901066          LDRB     r1,[r0,#0x66]
000010  42a1              CMP      r1,r4
000012  d00a              BEQ      |L14.42|
;;;652          pObj->ScrollbarWidth = Width;
000014  f8804066          STRB     r4,[r0,#0x66]
;;;653          if (pObj->hListWin) {
000018  f9b00060          LDRSH    r0,[r0,#0x60]
00001c  2800              CMP      r0,#0
00001e  d004              BEQ      |L14.42|
;;;654            LISTBOX_SetScrollbarWidth(pObj->hListWin, Width);
000020  4621              MOV      r1,r4
000022  e8bd4010          POP      {r4,lr}
000026  f7ffbffe          B.W      LISTBOX_SetScrollbarWidth
                  |L14.42|
;;;655          }
;;;656        }
;;;657        WM_UNLOCK();
;;;658      }  
;;;659    }
00002a  bd10              POP      {r4,pc}
;;;660    
                          ENDP


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

                  DROPDOWN_SetSel PROC
;;;586    */
;;;587    void DROPDOWN_SetSel(DROPDOWN_Handle hObj, int Sel) {
000000  b570              PUSH     {r4-r6,lr}
000002  0005              MOVS     r5,r0
000004  460c              MOV      r4,r1
;;;588      int NumItems, MaxSel;
;;;589      DROPDOWN_Obj* pObj;
;;;590      if (hObj) {
000006  d016              BEQ      |L15.54|
;;;591        WM_LOCK();
;;;592        pObj = DROPDOWN_H2P(hObj);
000008  4628              MOV      r0,r5
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;593        ASSERT_IS_VALID_PTR(pObj);
;;;594        NumItems = _GetNumItems(pObj);
00000e  8dc1              LDRH     r1,[r0,#0x2e]
;;;595        MaxSel = NumItems ? NumItems-1 : 0;
000010  b101              CBZ      r1,|L15.20|
000012  1e49              SUBS     r1,r1,#1
                  |L15.20|
;;;596        if (Sel > MaxSel) {
000014  428c              CMP      r4,r1
000016  dd00              BLE      |L15.26|
;;;597          Sel = MaxSel;
000018  460c              MOV      r4,r1
                  |L15.26|
;;;598        }
;;;599        if (Sel != pObj->Sel) {
00001a  f9b01028          LDRSH    r1,[r0,#0x28]
00001e  42a1              CMP      r1,r4
000020  d009              BEQ      |L15.54|
;;;600          pObj->Sel = Sel;
000022  8504              STRH     r4,[r0,#0x28]
;;;601          DROPDOWN_Invalidate(hObj);
000024  4628              MOV      r0,r5
000026  f7fffffe          BL       WM_InvalidateWindow
;;;602          WM_NotifyParent(hObj, WM_NOTIFICATION_SEL_CHANGED);
00002a  4628              MOV      r0,r5
00002c  e8bd4070          POP      {r4-r6,lr}
000030  2104              MOVS     r1,#4
000032  f7ffbffe          B.W      WM_NotifyParent
                  |L15.54|
;;;603        }
;;;604        WM_UNLOCK();
;;;605      }
;;;606    }
000036  bd70              POP      {r4-r6,pc}
;;;607    
                          ENDP


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

                  DROPDOWN_SetTextColor PROC
;;;565    */
;;;566    void DROPDOWN_SetTextColor(DROPDOWN_Handle hObj, unsigned int Index, GUI_COLOR color) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  0007              MOVS     r7,r0
000006  460c              MOV      r4,r1
000008  4615              MOV      r5,r2
;;;567      DROPDOWN_Obj* pObj;
;;;568      if (hObj) {
00000a  d015              BEQ      |L16.56|
;;;569        if (Index < GUI_COUNTOF(pObj->Props.aBackColor)) {
00000c  2c03              CMP      r4,#3
00000e  d213              BCS      |L16.56|
;;;570          WM_LOCK();
;;;571          pObj = DROPDOWN_H2P(hObj);
000010  4638              MOV      r0,r7
000012  f7fffffe          BL       GUI_ALLOC_h2p
000016  4606              MOV      r6,r0
;;;572          ASSERT_IS_VALID_PTR(pObj);
;;;573          pObj->Props.aTextColor[Index] = color;
000018  eb000084          ADD      r0,r0,r4,LSL #2
;;;574          DROPDOWN_Invalidate(hObj);
00001c  6505              STR      r5,[r0,#0x50]
00001e  4638              MOV      r0,r7
000020  f7fffffe          BL       WM_InvalidateWindow
;;;575          if (pObj->hListWin) {
000024  f9b60060          LDRSH    r0,[r6,#0x60]
000028  2800              CMP      r0,#0
00002a  d005              BEQ      |L16.56|
;;;576            LISTBOX_SetTextColor(pObj->hListWin, Index, color);
00002c  462a              MOV      r2,r5
00002e  4621              MOV      r1,r4
000030  e8bd41f0          POP      {r4-r8,lr}
000034  f7ffbffe          B.W      LISTBOX_SetTextColor
                  |L16.56|
;;;577          }
;;;578          WM_UNLOCK();
;;;579        }
;;;580      }
;;;581    }
000038  e8bd81f0          POP      {r4-r8,pc}
;;;582    
                          ENDP


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

                  DROPDOWN__AdjustHeight PROC
;;;273    */
;;;274    void DROPDOWN__AdjustHeight(DROPDOWN_Handle hObj, DROPDOWN_Obj* pObj) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
;;;275      int Height;
;;;276      Height = pObj->TextHeight;
000004  f9b1002c          LDRSH    r0,[r1,#0x2c]
000008  460c              MOV      r4,r1                 ;274
;;;277      if (!Height) {
00000a  b910              CBNZ     r0,|L17.18|
;;;278        Height = GUI_GetYDistOfFont(pObj->Props.pFont);
00000c  6c20              LDR      r0,[r4,#0x40]
00000e  f7fffffe          BL       GUI_GetYDistOfFont
                  |L17.18|
;;;279      }
;;;280      Height += pObj->Widget.pEffect->EffectSize + 2 *  pObj->Props.TextBorderSize;
000012  6a21              LDR      r1,[r4,#0x20]
000014  f9b4205c          LDRSH    r2,[r4,#0x5c]
000018  6949              LDR      r1,[r1,#0x14]
00001a  eb000042          ADD      r0,r0,r2,LSL #1
00001e  180e              ADDS     r6,r1,r0
;;;281      WM_SetSize(hObj, WM__GetWindowSizeX(&pObj->Widget.Win), Height);
000020  4620              MOV      r0,r4
000022  f7fffffe          BL       WM__GetWindowSizeX
000026  4601              MOV      r1,r0
000028  4632              MOV      r2,r6
00002a  4628              MOV      r0,r5
00002c  e8bd4070          POP      {r4-r6,lr}
000030  f7ffbffe          B.W      WM_SetSize
;;;282    }
;;;283    
                          ENDP


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

                  _DROPDOWN_Callback PROC
;;;287    */
;;;288    static void _DROPDOWN_Callback (WM_MESSAGE*pMsg) {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;289      DROPDOWN_Handle hObj = pMsg->hWin;
000004  f9b07004          LDRSH    r7,[r0,#4]
000008  4604              MOV      r4,r0                 ;288
;;;290      DROPDOWN_Obj* pObj = DROPDOWN_H2P(hObj);
00000a  4638              MOV      r0,r7
00000c  f7fffffe          BL       GUI_ALLOC_h2p
000010  4605              MOV      r5,r0
;;;291      char IsExpandedBeforeMsg;
;;;292      IsExpandedBeforeMsg = pObj->hListWin ? 1 : 0;
000012  f8b00060          LDRH     r0,[r0,#0x60]
000016  b108              CBZ      r0,|L18.28|
000018  2601              MOVS     r6,#1
00001a  e000              B        |L18.30|
                  |L18.28|
00001c  2600              MOVS     r6,#0
                  |L18.30|
;;;293      /* Let widget handle the standard messages */
;;;294      if (WIDGET_HandleActive(hObj, pMsg) == 0) {
00001e  4621              MOV      r1,r4
000020  4638              MOV      r0,r7
000022  f7fffffe          BL       WIDGET_HandleActive
000026  2800              CMP      r0,#0
000028  d05c              BEQ      |L18.228|
;;;295        return;
;;;296      }
;;;297      switch (pMsg->MsgId) {
00002a  6820              LDR      r0,[r4,#0]
00002c  280f              CMP      r0,#0xf
00002e  d048              BEQ      |L18.194|
000030  dc11              BGT      |L18.86|
000032  280b              CMP      r0,#0xb
000034  d049              BEQ      |L18.202|
000036  280c              CMP      r0,#0xc
000038  d035              BEQ      |L18.166|
00003a  280e              CMP      r0,#0xe
00003c  d14d              BNE      |L18.218|
;;;298      case WM_NOTIFY_PARENT:
;;;299        switch (pMsg->Data.v) {
;;;300        case WM_NOTIFICATION_SCROLL_CHANGED:
;;;301          WM_NotifyParent(hObj, WM_NOTIFICATION_SCROLL_CHANGED);
;;;302          break;
;;;303        case WM_NOTIFICATION_CLICKED:
;;;304          DROPDOWN_SetSel(hObj, LISTBOX_GetSel(pObj->hListWin));
;;;305          WM_SetFocus(hObj);
;;;306          break;
;;;307        case LISTBOX_NOTIFICATION_LOST_FOCUS:
;;;308          DROPDOWN_Collapse(hObj);
;;;309          break;
;;;310        }
;;;311        break;
;;;312      case WM_PID_STATE_CHANGED:
;;;313        if (IsExpandedBeforeMsg == 0) {    /* Make sure we do not react a second time */
;;;314          const WM_PID_STATE_CHANGED_INFO * pInfo = (const WM_PID_STATE_CHANGED_INFO*)pMsg->Data.p;
;;;315          if (pInfo->State) {
;;;316            DROPDOWN_Expand(hObj);
;;;317          }
;;;318        }
;;;319        break;
;;;320      case WM_TOUCH:
;;;321        if (_OnTouch(hObj, pMsg) == 0) {
;;;322          return;
;;;323        }
;;;324        break;
;;;325      case WM_PAINT:
;;;326        _Paint(hObj);
;;;327        break;
;;;328      case WM_DELETE:
;;;329        _FreeAttached(pObj);
;;;330        break;       /* No return here ... WM_DefaultProc needs to be called */
;;;331      case WM_KEY:
;;;332        if ( ((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
00003e  68a0              LDR      r0,[r4,#8]

⌨️ 快捷键说明

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