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

📄 widget.lst

📁 Keil C下通过的UCGUI,UCGUI的移植源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
              
              */
              void WIDGET_AndState(WM_HWIN hObj, int Mask) {
                U16 StateNew;
                WIDGET* pWidget = WIDGET_H2P(hObj);
                StateNew = pWidget->State & (~Mask);
                if (pWidget->State != StateNew) {
                  pWidget->State = StateNew;
                  WM_Invalidate(hObj);
                }
              }
              
              /*********************************************************************
              *
              *       WIDGET_SetInactive
              */
              void WIDGET_Disable(WM_HWIN hObj) {
                WIDGET* pWidget;
                if (hObj) {
                  WM_LOCK();
                  pWidget = WIDGET_H2P(hObj);
                  if (pWidget->State & WIDGET_STATE_ENABLED) {
                    pWidget->State &= ~WIDGET_STATE_ENABLED;
                    WM_Invalidate(hObj);
                  }
                  WM_UNLOCK();
                }
              }
              
              /*********************************************************************
              *
              *       WIDGET_Enable
              */
C51 COMPILER V8.05a   WIDGET                                                               04/11/2008 14:19:39 PAGE 5   

              void WIDGET_Enable(WM_HWIN hObj) {
                WIDGET* pWidget;
                if (hObj) {
                  WM_LOCK();
                  pWidget = WIDGET_H2P(hObj);
                  if ((pWidget->State & WIDGET_STATE_ENABLED) == 0) {
                    pWidget->State |= WIDGET_STATE_ENABLED;
                    WM_Invalidate(hObj);
                  }
                  WM_UNLOCK();
                }
              }
              
              
              void WIDGET__Init(WIDGET* pWidget, U16 State) {
                pWidget->pEffect       = _pEffectDefault;
                pWidget->State         = State;
              }
              
              
              /*********************************************************************
              *
              *       WIDGET_HandleActive
              */
              int WIDGET_HandleActive(WM_HWIN hObj, WM_MESSAGE* pMsg) {
                WM_MESSAGE Msg;
                WIDGET* pWidget = WIDGET_H2P(hObj);
                switch (pMsg->MsgId) {
                  case WM_GET_ID:
                    pMsg->Data.v = pWidget->Id;
                    return 0;                        /* Message handled -> Return */
                  case WM_SET_FOCUS:
                    if (pMsg->Data.v == 1) {
                      WIDGET_SetState(hObj, pWidget->State |  WIDGET_STATE_FOCUS);
              
                    } else {
                      WIDGET_SetState(hObj, pWidget->State & ~WIDGET_STATE_FOCUS);
                    }
                    Msg.MsgId = WM_NOTIFY_CHILD_HAS_FOCUS;
                    Msg.Data.v = pMsg->Data.v;
                    WM_SendToParent(hObj, &Msg);
                    return 0;
                  case WM_GET_HAS_FOCUS:
                    pMsg->Data.v = pWidget->State & WIDGET_STATE_FOCUS;
                    return 0;                         /* Message handled */
                  case WM_SET_ENABLE:
                    if (pMsg->Data.v) {
                      WIDGET_OrState(hObj, WIDGET_STATE_ENABLED);
                    } else {
                      WIDGET_AndState(hObj, WIDGET_STATE_ENABLED);
                    }
                  case WM_GET_ACCEPT_FOCUS:
                    pMsg->Data.v = (pWidget->State & WIDGET_STATE_FOCUSSABLE) ? 1 : 0;               /* Can handle focus
             - */
                    return 0;                         /* Message handled */
                   case WM_GET_INSIDE_RECT:
                    WIDGET__GetInsideRect(pWidget, (GUI_RECT*)pMsg->Data.p);
                    return 0;                         /* Message handled */
              
                }
                return 1;                           /* Message NOT handled */
              }
C51 COMPILER V8.05a   WIDGET                                                               04/11/2008 14:19:39 PAGE 6   

              
              
              
              void WIDGET__SetScrollState(WM_HWIN hWin, const WM_SCROLL_STATE* pVState, const WM_SCROLL_STATE* pHState) 
             -{
                WM_HWIN hScroll;
                /* vertical scrollbar */
                hScroll = WM_GetDialogItem(hWin, GUI_ID_VSCROLL);
                  WM_SetScrollState(hScroll, pVState);
                /* horizontal scrollbar */
                hScroll = WM_GetDialogItem(hWin, GUI_ID_HSCROLL);
                  WM_SetScrollState(hScroll, pHState);
              }
              
              
              
              void WIDGET__DrawFocusRect(WIDGET* pWidget, const GUI_RECT* pRect, int Dist) {
                GUI_RECT Rect;
                if (pWidget->State & WIDGET_STATE_VERTICAL) {
                  _RotateRect90(pWidget, &Rect, pRect);
                  pRect = &Rect;
                }
                GUI_DrawFocusRect(pRect, Dist);
              }
              
              void WIDGET__DrawVLine(WIDGET* pWidget, int x, int y0, int y1) {
                if (pWidget->State & WIDGET_STATE_VERTICAL) {
                  GUI_RECT r0, r1;
                  r0.x0 = x;
                  r0.x1 = x;
                  r0.y0 = y0;
                  r0.y1 = y1;
                  _RotateRect90(pWidget, &r1, &r0);
                  GUI_DrawHLine(r1.y0, r1.x0, r1.x1);
                } else {
                  GUI_DrawVLine(x, y0, y1);
                }
              }
              
              
              /*********************************************************************
              *
              *       WIDGET_FillRectEx
              */
              void WIDGET__FillRectEx(WIDGET* pWidget, const GUI_RECT* pRect) {
                if (pWidget->State & WIDGET_STATE_VERTICAL) {
                  GUI_RECT r;
                  _RotateRect90(pWidget, &r, pRect);
                  pRect = &r;
                }
                GUI_FillRectEx(pRect);
              }
              
              
              
              
              /*********************************************************************
              *
              *       WIDGET__EFFECT_ ...
              */
              
              void WIDGET__EFFECT_DrawDownRect(WIDGET* pWidget, GUI_RECT* pRect) {
C51 COMPILER V8.05a   WIDGET                                                               04/11/2008 14:19:39 PAGE 7   

                GUI_RECT Rect;
                if (pRect == NULL) {
                  WM_GetClientRect(&Rect);
                  pRect = &Rect;
                }
                if (pWidget->State & WIDGET_STATE_VERTICAL) {
                  _RotateRect90(pWidget, &Rect, pRect);
                  pRect = &Rect;
                }
                pWidget->pEffect->pfDrawDownRect(pRect);
              }
              
              void WIDGET__EFFECT_DrawDown(WIDGET* pWidget) {
                WIDGET__EFFECT_DrawDownRect(pWidget, NULL);
              }
              
              
              
              
              
              void WIDGET__EFFECT_DrawUpRect(WIDGET* pWidget, GUI_RECT* pRect) {
                GUI_RECT Rect;
                if (pWidget->State & WIDGET_STATE_VERTICAL) {
                  _RotateRect90(pWidget, &Rect, pRect);
                  pRect = &Rect;
                }
                pWidget->pEffect->pfDrawUpRect(pRect);
              }
              
              
              
              
              void WIDGET_SetDefaultEffect(const WIDGET_EFFECT* pEffect) {
                _pEffectDefault = pEffect;
              }
              
              
              
              #else                            /* Avoid problems with empty object modules */
 402            void WIDGET_C(void) {}
 403          #endif /* GUI_WINSUPPORT */
 404          
 405          
 406          
 407          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =      1    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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