EmWin在对话框里怎么显示实时刷新数值?

2019-12-10 18:30发布

Emwin对话框里刷新显示数值到底是怎么实现的?郁闷了一个星期了都无果啊。
现在的方法如下:
        回调函数中的部分程序:
        case WM_PAINT:        
                for(t=0;t<1;t++)                  //重复显示背景图
                {
                        GUI_DrawBitmap(&bm5050,0,(t+1)*50);        
                        GUI_DrawBitmap(&bm5050,50,(t+1)*50);
                }
                DrawMyBiaozhen();             //绘制时速表指针
                GUI_DispDecAt(tmp_progbar1,10,400,4);       //显示adc数值
                break;
        然后在主程序中循环调用WM_InvalidateWindow(hMain);

这样刷新效果非常慢,完全不能用。请问有什么比较好的方法可以实现吗?万分感激
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
SealedGhost
1楼-- · 2019-12-11 18:49
可以啊 case 到WM_PAINT的处理中 执行GUI_DispDec然后将显示区域无效化(WM_InvalidateRect),如果用的RTOS需要在GUI任务中定时调GUI_Exec,或者GUI_Delay
guyong2012
2楼-- · 2019-12-11 19:21
在当前窗口中建立gui软件定时器,然后利用gui中TIMER消息刷新:

case TIMER: //你想刷新的控件
wq_601840968
3楼-- · 2019-12-12 00:01
 精彩回答 2  元偷偷看……
SealedGhost
4楼-- · 2019-12-12 04:22
wq_601840968 发表于 2019-5-21 15:37
如果gui运行在一个独立线程中,adc采集函数运行在另一个线程中,这种情况在adc函数中发自定义消息,gui能 ...

按我的理解,emWin本身是不支持跨任务发送消息(按键、鼠标等类似情况除外)的。从中断或者其他任务发送的消息要用RTOS的通信机制完成。在GUI运行的任务中捕获到其他任务的消息后转成WM_Message派发给窗口

一周热门 更多>