完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在ucgui 创建了一个窗体(frame_time)怎么在这个窗体上实时显示RTC时间,我在rtc秒中断中调用了WM_InvalidateWindow(frame_time);这个函数,在主函数中空闲的地方调用了GUI_Delay(10)为什么不会发生重绘额而且一次都没有,如果这个方法不行的话,那应该怎么做才能实现这样的功能,求指教,,,,,
|
|
相关推荐
8个回答
|
|
我之前也没能重绘,后来我想了一个比较笨的方法,我用定时器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); }//这边定时发消息 |
|
|
|
帮顶....
|
|
|
|
使用EDIT空间可以更新的
|
|
|
|
感谢分享,小弟是刚接触到ucgui很多地方还不是很懂,请问怎么把板子上的按键,跟你上面的MY_KEY_XX等联系起来的,这部分代码是怎么实现的,我看到vc++6.0仿真的时候按键就是用的键盘上的上下左右是有用的,但是不知道如果下载的奥开发板上怎么用开发板上的按键实现同样 的功能,??
|
|
|
|
消息机制,你仿真的时候,相当于触摸屏的按键,系统自己处理好的。如果要使用实体按键,就得使用消息,GUI_SendKeyMsg(MY_KEY_REFRESH, 1); 发送对应的按键消息,然后在消息回调函数里面处理即可。
|
|
|
|
哥哥有没有例程给传个,不胜感激 了
|
|
|
|
我的例程是加RT-Thread的,而且有许多窗口,你看着累呀。就是GUI_SendKeyMsg(MY_KEY_REFRESH, 1);
再加上回调函数 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; } } 你发哪个按键消息,回调函数就处理哪个,不是挺简单的嘛。 |
|
|
|
那好吧啊,还是谢谢了,我慢慢学吧,
|
|
|
|
只有小组成员才能发言,加入小组>>
690 浏览 0 评论
1105 浏览 1 评论
2473 浏览 5 评论
2807 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2644 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
652浏览 9评论
648浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
779浏览 6评论
627浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 22:29 , Processed in 1.084361 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号