📄 progbar.lst
字号:
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 + -