硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2222|回复: 9
收起左侧

[emWin] 请问下,有没有在窗口回调函数的重绘中使用存储设备的案例?

[复制链接]

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2017-5-8 14:27:49 | 显示全部楼层 |阅读模式
我试着在WM_PAINT中使用MEMDEV设备绘制图形,再复制到LCD上,发现所有的控件都不能显示,一片漆黑,包括BUTTON,TEXT等等,不使用MEMDEV又正常,不知各位遇到过没?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-5-8 14:30:57 | 显示全部楼层
在创建对话框前,优先将图形绘制到存储设备里面,然后在WM_PIANT消息里面直接调用存储设备的绘制函数,这样才能发挥存储设备的性能,要不你每次都要往存储设备里面重绘。
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2017-5-8 14:34:00 | 显示全部楼层

回 eric2013 的帖子

eric2013:在创建对话框前,优先将图形绘制到存储设备里面,然后在WM_PIANT消息里面直接调用存储设备的绘制函数,这样才能发挥存储设备的性能,要不你每次都要往存储设备里面重绘。 (2017-05-08 14:30) 
非常谢谢,但是我想让图形动态变化,比如一个旋转的填充三角形,不知如何处理
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2017-5-8 15:39:29 | 显示全部楼层
我找到问题了,WM_SetCreateFlags(WM_CF_MEMDEV);这句话不能使用,使用它就不能使用GUI_MEMDEV_Create了,很奇怪
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-5-8 16:24:10 | 显示全部楼层

回 ssis909 的帖子

ssis909:我找到问题了,WM_SetCreateFlags(WM_CF_MEMDEV);这句话不能使用,使用它就不能使用GUI_MEMDEV_Create了,很奇怪 (2017-05-08 15:39) 
没有这个限制,你的动态内存小了?
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2017-5-8 19:56:04 | 显示全部楼层

回 eric2013 的帖子

eric2013:没有这个限制,你的动态内存小了? (2017-05-08 16:24) 
我用PC端仿真的,只能去掉WM_SetCreateFlags(WM_CF_MEMDEV);才可以显示正常,但是wm_paint重绘时,窗口就会闪烁
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-5-9 01:45:12 | 显示全部楼层

回 ssis909 的帖子

ssis909:我用PC端仿真的,只能去掉WM_SetCreateFlags(WM_CF_MEMDEV);才可以显示正常,但是wm_paint重绘时,窗口就会闪烁 (2017-05-08 19:56) 
没问题的,之前我做我们的F429综合Demo的时候用的是这个,后面性能不给力,没有三缓冲给力,就改三缓冲了。后面有时间了,我再测试下看看。
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2017-5-9 08:28:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:没问题的,之前我做我们的F429综合Demo的时候用的是这个,后面性能不给力,没有三缓冲给力,就改三缓冲了。后面有时间了,我再测试下看看。 (2017-05-09 01:45) 
感谢!昨晚研究一个小时,并查找网上资料,发现了WM_PAINT不能使用MEMDEV设备的绘图函数(非自动设备),只能放在其他消息里,比如自定义消息或定时器消息等等里,后来测试OK
回复

使用道具 举报

11

主题

130

回帖

168

积分

初级会员

积分
168
发表于 2017-5-9 09:43:20 | 显示全部楼层

回 ssis909 的帖子

ssis909:感谢!昨晚研究一个小时,并查找网上资料,发现了WM_PAINT不能使用MEMDEV设备的绘图函数(非自动设备),只能放在其他消息里,比如自定义消息或定时器消息等等里,后来测试OK (2017-05-09 08:28) 
你是群里的 南海椰风 吧。你可以测试下还有个问题,存在memdev设备的对话框在隐藏窗口时也必须删除memdev设备,不然会导致所有控件无反应,假死机。
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2017-5-9 10:18:13 | 显示全部楼层

回 有梦为马 的帖子

有梦为马:你是群里的 南海椰风 吧。你可以测试下还有个问题,存在memdev设备的对话框在隐藏窗口时也必须删除memdev设备,不然会导致所有控件无反应,假死机。 (2017-05-09 09:43) 
谢谢了![s:149]
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-15 13:53 , Processed in 0.293618 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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