金牌会员
 
- 积分
- 2388
- 金钱
- 2388
- 注册时间
- 2012-11-22
- 在线时间
- 404 小时
|
发表于 2014-8-23 12:22:05
|
显示全部楼层
我之前也没能重绘,后来我想了一个比较笨的方法,我用定时器1S给GUI发送一个固定消息,然后在消息处理函数里面更新时间就好了。
/* 时间菜单的回调函数 */
void time_call_back(WM_MESSAGE * pMsg)
{
WM_HWIN h_win = pMsg->hWin;
switch (pMsg -> MsgId)
{
case WM_PAINT:
{
paint_time(pMsg);
}
break;
case WM_INIT_DIALOG:
{
dialog_time_init(pMsg);
}
break;
case WM_KEY:
{
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
{
case MY_KEY_UP:
{
}
break;
case MY_KEY_DOWN:
{
}
break;
case MY_KEY_LEFT:
{
}
break;
case MY_KEY_RIGHT:
{
}
break;
case MY_KEY_ESCAPE:
{
/* 返回仪器状态菜单 */
{
GUI_EndDialog(h_win, 0);
GUI_CreateDialogBox(state_window, GUI_COUNTOF(state_window), &state_call_back, 0, 0, 0);
}
}
break;
case MY_KEY_ENTER:
{
}
break;
case MY_KEY_REFRESH://这部分用来更新时间
{
show_time(pMsg);
}
break;
}
}
break;
default:
{
WM_DefaultProc(pMsg);
}
break;
}
}
/* 定时器回调函数 */
static void rtc_timeout(void* parameter)
{
GUI_SendKeyMsg(MY_KEY_REFRESH, 1);
}//这边定时发消息 |
|