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

📄 progbar.lst

📁 Keil C下通过的UCGUI,UCGUI的移植源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
                  r.x0=r.x1+1; r.x1=GUI_XMAX;
                  WM_SetUserClipArea(&r);
                  _DrawPart(pObj, 1, xText, yText, pText);
                }
                WM_SetUserClipArea(NULL);
                GUI_SetTextMode(tm);
              }
              
              /*********************************************************************
              *
              *       _Delete
              */
              void _Delete(PROGBAR_Handle hObj) {
                _FreeText(hObj);
                DEINIT_ID(PROGBAR_H2P(hObj));
              }
              
              /*********************************************************************
              *
              *       _Callback
C51 COMPILER V8.05a   PROGBAR                                                              04/11/2008 14:19:37 PAGE 5   

              */
              static void _Callback (WM_MESSAGE*pMsg) {
                PROGBAR_Handle hObj = (PROGBAR_Handle)pMsg->hWin;
                switch (pMsg->MsgId) {
                case WM_PAINT:
                  _Paint(hObj);
                  return;
                case WM_DELETE:
                  _Delete(hObj);
                  break;
                }
                WM_DefaultProc(pMsg);
              }
              
              /*********************************************************************
              *
              *       Exported routines:  Create
              *
              **********************************************************************
              */
              
              PROGBAR_Handle PROGBAR_CreateAsChild(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Fl
             -ags) {
                /* Create the window */
                PROGBAR_Handle hObj =WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, 
                                                            Flags, _Callback, sizeof(PROGBAR_Obj) - sizeof(WM_Obj));
                if (hObj) {
                  PROGBAR_Obj* pObj = (PROGBAR_Obj*) WM_HMEM2Ptr(hObj);
                  INIT_ID(pObj);
                  pObj->Widget.Id       = Id;
                  /* init member variables */
                  pObj->pFont =GUI_DEFAULT_FONT;
                  pObj->BarColor[0] = 0x555555;
                  pObj->BarColor[1] = 0xaaaaaa;
                  pObj->TextColor[0] = 0xffffff;
                  pObj->TextColor[1] = 0x000000;
                  pObj->TextAlign    = GUI_TA_CENTER;
                  pObj->Max =100;
                  pObj->Min =0;
                }
                return hObj;
              }
              
              PROGBAR_Handle PROGBAR_Create(int x0, int y0, int xsize, int ysize, int Flags) {
                return PROGBAR_CreateAsChild(x0, y0, xsize, ysize, 0, 0, Flags) ;
              }
              
              PROGBAR_Handle  PROGBAR_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int 
             -x0, int y0, WM_CALLBACK* cb) {
                PROGBAR_Handle  hThis;
                GUI_USE_PARA(cb);
                hThis = PROGBAR_CreateAsChild(
                  pCreateInfo->x0 + x0, pCreateInfo->y0 + y0, pCreateInfo->xSize, pCreateInfo->ySize,
                  hWinParent, pCreateInfo->Id, pCreateInfo->Flags);
                return hThis;
              }
              
              /*********************************************************************
              *
              *       Exported routines:  Various methods
              *
              **********************************************************************
C51 COMPILER V8.05a   PROGBAR                                                              04/11/2008 14:19:37 PAGE 6   

              */
              void PROGBAR_SetValue(PROGBAR_Handle hObj, int v) {
                PROGBAR_Obj* pObj;
                GUI_RECT r;
                if (hObj) {
                  WM_LOCK();
                  pObj= PROGBAR_H2P(hObj);
                  /* Put v into legal range */
                  if (v < pObj->Min)
                          v = pObj->Min;
                  if (v > pObj->Max)
                          v = pObj->Max;
                  if (pObj->v != v) {
                    /* Invalidate */
                    if (pObj->hpText) {
                      /* Calculate invalid area */
                      r.x0 = _Value2X(hObj, pObj->v);
                      r.x1 = _Value2X(hObj, v);
                      /* Make sure x0 <= x1 */
                                  if (r.x0 > r.x1) {
                                          int t = r.x0;
                                          r.x0 = r.x1;
                                          r.x1 = t;
                                  }
                                  r.y0 =0;
                                  r.y1 =4095;
                      WM_InvalidateRect(hObj,&r);
                          } else {
                      Invalidate(hObj);
                          }
                    pObj->v = v;                         /* Update stored value */
                  }
                  WM_UNLOCK();
                }
              }
              
              void PROGBAR_SetFont(PROGBAR_Handle hObj, const GUI_FONT* pfont) {
                PROGBAR_Obj* pObj;
                if (hObj) {
                  WM_LOCK();
                  pObj = PROGBAR_H2P(hObj);
                  pObj->pFont = pfont;
                  Invalidate(hObj);
                  WM_UNLOCK();
                }
              }
              
              void PROGBAR_SetBarColor(PROGBAR_Handle hObj, int index, GUI_COLOR color) {
                PROGBAR_Obj* pObj;
                if (hObj) {
                  WM_LOCK();
                  pObj = PROGBAR_H2P(hObj);
                  pObj->BarColor[index] = color;
                  Invalidate(hObj);
                  WM_UNLOCK();
                }
              }
              
              void PROGBAR_SetTextColor(PROGBAR_Handle hObj, int index, GUI_COLOR color) {
                PROGBAR_Obj* pObj;
                if (hObj) {
                  WM_LOCK();
C51 COMPILER V8.05a   PROGBAR                                                              04/11/2008 14:19:37 PAGE 7   

                  pObj = PROGBAR_H2P(hObj);
                  pObj->TextColor[index] = color;
                  Invalidate(hObj);
                  WM_UNLOCK();
                }
              }
              
              void PROGBAR_SetText(PROGBAR_Handle hObj, const char* s) {
                PROGBAR_Obj* pObj;
                WM_HMEM hMem;
                if (hObj) {
                  WM_LOCK();
                  pObj = PROGBAR_H2P(hObj);
                  _FreeText(hObj);
                  if (s != NULL) {
                    hMem = WM_ALLOC(strlen(s)+1);
                    strcpy((char *) WM_HMEM2Ptr(hMem), s);
                    pObj->hpText = hMem;
                  }
                  Invalidate(hObj);
                  WM_UNLOCK();
                }
              }
              
              void PROGBAR_SetTextAlign(PROGBAR_Handle hObj, int Align) {
                PROGBAR_Obj* pObj;
                if (hObj) {
                  WM_LOCK();
                  pObj = PROGBAR_H2P(hObj);
                  pObj->TextAlign = Align;
                  Invalidate(hObj);
                  WM_UNLOCK();
                }
              }
              
              void PROGBAR_SetTextPos(PROGBAR_Handle hObj, int XOff, int YOff) {
                PROGBAR_Obj* pObj;
                if (hObj) {
                  WM_LOCK();
                  pObj = PROGBAR_H2P(hObj);
                  pObj->XOff = XOff;
                  pObj->YOff = YOff;
                  Invalidate(hObj);
                  WM_UNLOCK();
                }
              }
              
              void PROGBAR_SetMinMax(PROGBAR_Handle hObj, int Min, int Max) {
                PROGBAR_Obj* pObj;
                if (hObj) {
                  WM_LOCK();
                  pObj = PROGBAR_H2P(hObj);
                  if (Max > Min) {
                    if ((Max != pObj->Max) || (Min != pObj->Min)) {
                      pObj->Min = Min;
                      pObj->Max = Max;
                      Invalidate(hObj);
                    }
                  }
                  WM_UNLOCK();
                }
              }
C51 COMPILER V8.05a   PROGBAR                                                              04/11/2008 14:19:37 PAGE 8   

              
              #else
 427          
 428          void WIDGET_Progbar(void) {} /* avoid empty object files */
 429          
 430          #endif /* GUI_WINSUPPORT */


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 + -