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条回答
dboyzju
1楼-- · 2019-12-10 20:17
你发送消息到对话框,在回调函数里显示数值不行吗,你这样整个窗口都要重绘啊
denis333
2楼-- · 2019-12-10 20:25
dboyzju 发表于 2015-6-25 14:52
你发送消息到对话框,在回调函数里显示数值不行吗,你这样整个窗口都要重绘啊 ...

感谢回复。因为第一次用gui,所以对整个gui运作的方法云里雾里的,看手册看的头都大了。
请问怎么“发送消息到对话框,在回调函数里显示数值”呢?
我是想实现一个在对话框里显示adc采集到的数值,并用类似demo里面那个speedmeter形式的指针旋转指出adc所在位置(表盘用图片,指针用gui绘制),怎么才能实时显示数值,并且只刷新表针位置而不整个刷新背景图片呢?请不吝赐教下
dboyzju
3楼-- · 2019-12-11 00:31
denis333 发表于 2015-6-25 15:01
感谢回复。因为第一次用gui,所以对整个gui运作的方法云里雾里的,看手册看的头都大了。
请问怎么“发送 ...

具体函数我记不清了,就是向当前聚焦窗口发送一条消息,然后我看你有WM_PAINT消息的处理啊,在switch里添加对特定消息的处理就行,EDIT控件不是可以设置数值吗,设置完了用GUI_Exec或者GUI_Delay一下就显示出来了
denis333
4楼-- · 2019-12-11 06:07
 精彩回答 2  元偷偷看……
SealedGhost
5楼-- · 2019-12-11 10:08
lz 是在adc采集函数中发送消息,主要是把 pMsg 的各项元素设置对,目标窗口句柄设置为你的显示窗口,消息类型即pMsg->MsgId  设置为WM_PAINT,把adc的值放在pMsg->Data里面,这样 你的窗口就能收到本条消息并case到 WM_PAINT事件,在你窗口的PAINT的处理分支中将pMsg->Data中的值取出,至于那个指针demo 我没看 所以后面怎么处理无法回答
denis333
6楼-- · 2019-12-11 16:02
SealedGhost 发表于 2015-6-25 22:19
lz 是在adc采集函数中发送消息,主要是把 pMsg 的各项元素设置对,目标窗口句柄设置为你的显示窗口,消息类 ...

感谢你的回复和指点。弱弱的问下,这种方法是不是要用文本小工具来实现?如果只是用GUI_DispDec可以实现吗?

一周热门 更多>