中级会员
- 积分
- 395
- 金钱
- 395
- 注册时间
- 2016-8-18
- 在线时间
- 147 小时
|
发表于 2016-11-21 17:12:41
|
显示全部楼层
[mw_shl_code=c,true]static void _cbStatus(WM_MESSAGE * pMsg)
{
int xSize, ySize;
static uint8_t TempStr[50];
float CPU;
RTC_TimeTypeDef RTC_TimeStructure;
RTC_DateTypeDef RTC_DateStructure;
uint8_t sec, min, hour;
static WM_HTIMER hTimerTime;
WM_HWIN hWin;
hWin = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_PRE_PAINT:
//GUI_MULTIBUF_Begin();
break;
case WM_POST_PAINT:
//GUI_MULTIBUF_End();
break;
/* 创建窗口后为此窗口创建一个定时器 */
case WM_CREATE:
hTimerTime = WM_CreateTimer(hWin, ID_TIMER_TIME, 1000, 0);
break;
/* 窗口被删除的时候同时删除定时器 */
case WM_DELETE:
WM_DeleteTimer(hTimerTime);
break;
/* 定时器消息,定时器执行重绘消息 */
case WM_TIMER:
WM_InvalidateWindow(hWin);
WM_RestartTimer(pMsg->Data.v, 0);
break;
/* 收到USB插入的消息 */
case WM_MSG_USB_STATUS_CHANGED:
WM_InvalidateWindow(hWin);
break;
/* 执行重绘 */
case WM_PAINT:
xSize = WM_GetWindowSizeX(hWin);
ySize = WM_GetWindowSizeY(hWin);
/* 先绘制背景 */
GUI_SetColor(0x303030);
GUI_FillRect(0, 0, xSize , ySize - 3);
GUI_SetColor(0x808080);
GUI_DrawHLine(ySize - 2, 0, xSize );
GUI_SetColor(0x404040);
GUI_DrawHLine(ySize - 1, 0, xSize );
/* 显示时间 */
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_WHITE);
GUI_SetFont(GUI_FONT_16B_ASCII);
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);
sec = RTC_TimeStructure.RTC_Seconds;
min = RTC_TimeStructure.RTC_Minutes;
hour = RTC_TimeStructure.RTC_Hours;
RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure);
sprintf((char *)TempStr, "%02d:%02d:%02d", hour , min, sec);
GUI_DispStringAt((char *)TempStr, xSize - 50, 4);
/* 绘制闹钟图标 */
if (alarm_set == 1)
{
GUI_DrawBitmap(&_bmAlarm_16x16, xSize - 73, 3);
}
/* 显示logo */
GUI_DrawBitmap(&bmSTLogo40x20, 5, 1);
/* 显示CPU利用率 */
CPU = (float)OSStatTaskCPUUsage/100;
sprintf((char *)TempStr, "CPU : %5.2f %%", CPU);
if(OSStatTaskCPUUsage < 7500 )
{
GUI_SetColor(GUI_WHITE);
}
else
{
GUI_SetColor(GUI_RED);
}
GUI_DispStringAt( (char *)TempStr, 50, 4);
GUI_SetColor(GUI_WHITE);
break;
default:
WM_DefaultProc(pMsg);
}
}
/*
*********************************************************************************************************
* 函 数 名: Demo Main menu
* 功能说明: 主菜单
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
void DEMO_MainMenu(void)
{
ICONVIEW_Handle hIcon;
WM_HWIN hStatusWin;
int i = 0;
/* 启用多缓冲 */
WM_MULTIBUF_Enable(1);
/* 桌面窗口的回调函数 */
WM_SetCallback(WM_HBKWIN, _cbBk);
/* 创建一个状态窗口 */
hStatusWin = WM_CreateWindowAsChild(
0, /* 父窗口在窗口坐标中的左上X位置 */
0, /* 父窗口在窗口坐标中的左上Y位置 */
LCD_GetXSize(), /* 窗口的X尺寸。如果为0,则用父窗口客户区的X尺寸 */
31, /* 窗口的Y尺寸。如果为0,则用父窗口客户区的Y尺寸 */
WM_HBKWIN, /* 父窗口的句柄 */
WM_CF_SHOW|WM_CF_MEMDEV, /* 窗口创建标识 */
_cbStatus, /* 回调例程的指针,或不使用回调时为NULL */
0); /* 要分配的额外字节数,通常为0 */
/* 创建ICON控件 */
hIcon = ICONVIEW_CreateEx(0,
32,
LCD_GetXSize(),
LCD_GetYSize()- 33,
WM_HBKWIN,
WM_CF_SHOW | WM_CF_HASTRANS ,
ICONVIEW_CF_AUTOSCROLLBAR_V ,
'0',
112,
96);
/* 设置ICON控件的字体 */
ICONVIEW_SetFont(hIcon, &GUI_Font13B_ASCII);
/* 设置ICON控件的背景 */
ICONVIEW_SetBkColor(hIcon, ICONVIEW_CI_SEL, 0x941000 | 0x80404040);
/* 设置图标的Y轴间距 */
ICONVIEW_SetSpace(hIcon, GUI_COORD_Y, 3);
/* 设置小工具边框和图标之间的框架大小 */
ICONVIEW_SetFrame(hIcon, GUI_COORD_Y, 1);
/* 添加图标 */
for (i = 0; i < GUI_COUNTOF(_aBitmapItem); i++)
{
ICONVIEW_AddBitmapItem(hIcon,_aBitmapItem.pBitmap, _aBitmapItem.pText);
}
/* 设置聚焦 */
WM_SetFocus(hIcon);
while (1)
{
GUI_Delay(100);
}
}[/mw_shl_code] |
|