完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教一下,我现在用EMWIN能显示出时间,但是不能够实现实时刷新,请问是哪儿的问题?
还有一个问题就是怎么将函数的返回值显示出来?以下是我的程序,请问是什么地方不对啊?非常感谢! static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetFont(&GUI_FontHZ16); GUI_SetColor(GUI_BLACK); GUI_GetTime(); sprintf((char*)ttbuf1,"%02d-%02d-%02d",calendar.w_year,calendar.w_month,calendar.w_date); GUI_DispStringAt((const char*)ttbuf1,65,13); sprintf((char *)ttbuf1,"%02d:%02d:%02d",calendar.hour,calendar.min,calendar.sec); GUI_DispStringAt((const char*)ttbuf1,155,13); WM_CreateTimer(TextDialoghWin,0,100,0); break; case WM_INIT_DIALOG: hItem = pMsg->hWin; FRAMEWIN_SetText(hItem, "Sleep condition"); FRAMEWIN_SetFont(hItem, GUI_FONT_24_ASCII); FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_6); TEXT_SetFont(hItem, &GUI_FontHZ16); TEXT_SetText(hItem, "时间:"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_7); TEXT_SetFont(hItem, &GUI_FontHZ16); TEXT_SetText(hItem, "睡眠总时间:"); TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWin); NCode = pMsg->Data.v; // switch(Id) // { // case ID_TEXT_7: // { switch(NCode) { case WM_PAINT: // SLP_TIME=Getslptime(); // GUI_DispDecAt(SLP_TIME,120,47,3); sprintf((char *)SLP_TIME,"%03d",sleeptime); GUI_DispStringAt((const char*)SLP_TIME,120,47); break; } // break; // } // break; // } break; default: WM_DefaultProc(pMsg); break; } } static void _cbBkWindow(WM_MESSAGE* pMsg) { switch(pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_BLUE); GUI_Clear(); break; case WM_TIMER: // WM_RestartTimer(pMsg->Data.v,1000); WM_InvalidateWindow(TextDialoghWin); WM_ShowWindow(TextDialoghWin); break; default: WM_DefaultProc(pMsg); break; } } void sleep() { // GUI_Init(); // Getslptime(); WM_SetCallback(WM_HBKWIN,_cbBkWindow); TextDialoghWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0); FRAMEWIN_AddCloseButton(TextDialoghWin,FRAMEWIN_BUTTON_RIGHT,0); FRAMEWIN_AddMaxButton(TextDialoghWin,FRAMEWIN_BUTTON_RIGHT,2); FRAMEWIN_AddMinButton(TextDialoghWin,FRAMEWIN_BUTTON_RIGHT,2); while(1) { sleeptime=Getslptime(); GUI_Exec(); // GUI_Delay(20); delay_ms(100); WM_InvalidateWindow(TextDialoghWin); //对话框窗口无效 } } |
|
相关推荐
3个回答
|
|
求帮助啊!比较着急
|
|
|
|
定时器消息,这里要特别注意,如果想要定时器每隔一段时间执行一次,而不是只执行一次,必须得调用WM_RestartTimer()。在这个消息里面将桌面窗口无效进而会执行桌面窗口的重绘消息。
你的时间需要刷新显示才会更新的 |
|
|
|
谢谢回复,麻烦问一下,WM_RestartTimer()应该放在什么地方啊?新手上路,请多指教,谢谢!
|
|
|
|
只有小组成员才能发言,加入小组>>
810 浏览 0 评论
1161 浏览 1 评论
2535 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2719 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1107浏览 3评论
198浏览 2评论
465浏览 2评论
378浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
459浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 23:45 , Processed in 0.949366 second(s), Total 54, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号