OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6151|回复: 3

emwin WM_PAINT问题

[复制链接]

20

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2015-7-6
在线时间
61 小时
发表于 2016-5-5 12:08:06 | 显示全部楼层 |阅读模式
1金钱
在EMWIN中建立窗口后,不在WM_PAINT下显示字符串或者显示位图的话是不能显示出来的。搜了很多资料解释说是因为建立的窗口将桌面背景覆盖了,直接使用GUI_DrawBitmap()显示位图是在桌面背景上显示的,所以显示出来的位图是看不见的。后来我在WM_PAINT下进行显示位图,位图信息需要更新的话就通过WM_InvalidateRect()将显示位图的区域进行无效话,这样竟可以进行位图更新。可是这样每次更新位图的时候WM_InvalidateRect()会将位图显示区域填充上背景颜色,造成每次更新位图会有闪烁。请问有没有什么办法可以不在WM_PAINT下可以直接显示位图。或者有什么办法不使用WM_InvalidateRect或WM_InvalidateWindow能够直接发送WM_PAINT消息。(我使用WM_SendMessage发送WM_PAINT,但是因为没有无效区域,系统不进行WM_PAINT下的操作)。谢谢

最佳答案

查看完整内容[请看2#楼]

问题解决了,使用WM_SelectWindow()选择需要创建的窗口为当前绘制窗口,就可以不用在WM_PAINT下显示了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2015-7-6
在线时间
61 小时
 楼主| 发表于 2016-5-5 12:08:07 | 显示全部楼层
问题解决了,使用WM_SelectWindow()选择需要创建的窗口为当前绘制窗口,就可以不用在WM_PAINT下显示了。
回复

使用道具 举报

20

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2015-7-6
在线时间
61 小时
 楼主| 发表于 2016-5-5 15:08:32 | 显示全部楼层
有谁能解答一下吗
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-6-3
在线时间
14 小时
发表于 2020-6-11 16:00:56 | 显示全部楼层
顶一个,我没有发送WM_PAINT消息,为什么case WM_PAINT显示图片也能成功,这个WM_PAINT消息从哪发出来的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表