硬汉嵌入式论坛

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

[emWin] 怎么在窗口框架界面使用存储设备啊

[复制链接]

1

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2017-10-19 15:06:17 | 显示全部楼层 |阅读模式
例如在如图的界面,是用GUIBuilder创建的FrameWin界面,用当滑动Slider控件的时候,上面的最大值、最小值几个字一直在闪,虽然我知道要使用储存设备解决这个问题,但是我不知道将储存设备的代码添加在哪里,哪位大神可不可以上传个类似界面使用了储存设备的代码啊,我拿来参考参考,谢谢各位大佬,提前给各位大佬拜个早年了!!!
QQ截图20171019145250.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2017-10-19 16:06:30 | 显示全部楼层
直接将函数WM_SetCreateFlags(WM_CF_MEMDEV)放在GUI_Init函数后面就可以。
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
发表于 2019-1-22 23:42:07 | 显示全部楼层
本帖最后由 溪云初_VS28s 于 2019-1-22 23:47 编辑
eric2013 发表于 2017-10-19 16:06
直接将函数WM_SetCreateFlags(WM_CF_MEMDEV)放在GUI_Init函数后面就可以。

汉哥,这样操作的话,会在每个窗口都自动使能存储设备吗?例如以下代码,如果我在CreateWindowInitPage()这个窗口里面,其中的按键控件触发的NOTIFICATION消息里面创建了新的全屏窗口,那这个新窗口以及它再往下级创建的窗口,都会自动使能存储设备吗?还是说需要每个创建窗口都需要添加一下 WM_SetCreateFlags(WM_CF_MEMDEV)这个函数呢?

void MainTask(void){
GUI_Init();
#if GUI_SUPPORT_MEMDEV
WM_SetCreateFlags(WM_CF_MEMDEV);
#endif
GUI_UC_SetEncodeUTF8();
GUI_UC_SetEncodeUTF8();
BUTTON_SetDefaultSkinClassic();
PROGBAR_SetDefaultSkinClassic();
//        hWin = CreateWindow();
WM_SetCallback(WM_HBKWIN,_cbBK);       
CreateWindowInitPage();
while(1)        {
GUI_Delay(5);
}
}

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-1-23 01:45:42 | 显示全部楼层
溪云初_VS28s 发表于 2019-1-22 23:42
汉哥,这样操作的话,会在每个窗口都自动使能存储设备吗?例如以下代码,如果我在CreateWindowInitPage() ...

调用一次就可以了。
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
发表于 2019-1-23 12:00:27 | 显示全部楼层
eric2013 发表于 2019-1-23 01:45
调用一次就可以了。

我想把控件和文字都放在存储设备里,再统一发数据到屏幕上,存储设备的创建和GUI_MEMDEV_WriteAt这句最终的绘制到屏幕,应该放到WM_PAINT消息,还是INIT_DIALOG消息里呢,我在INIT_DIALOG里设置了一些控件的背景颜色、字体等
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-1-23 15:59:04 | 显示全部楼层
溪云初_VS28s 发表于 2019-1-23 12:00
我想把控件和文字都放在存储设备里,再统一发数据到屏幕上,存储设备的创建和GUI_MEMDEV_WriteAt这句最终 ...

统一显示的话,可以使用三缓冲。
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
发表于 2019-1-23 17:13:49 | 显示全部楼层
本帖最后由 溪云初_VS28s 于 2019-1-23 23:15 编辑
eric2013 发表于 2019-1-23 15:59
统一显示的话,可以使用三缓冲。

汉哥,可以介绍一下三缓冲怎么使用吗?我只找到了WM_MULTIBUF_Enable(1);  这一行代码,用了之后,还是挺慢的。而且我在屏幕上显示了运行时间,38M左右的像素时钟,驱动1024*600的RGB565格式的屏幕居然需要460毫秒。使用存储设备和多缓冲我都试了,都很慢,该怎么办呢。还有就是我想在多级窗口上使用存储设备,现在想到的方法是背景界面做一个存储设备,然后覆盖背景的部分往存储设备上累积,这张图累积完成之后,一起往屏幕丢过去。有个疑问是:WM_INIT_DIALOG消息里面的控件字体、颜色等等的设置,会同样绘制到存储设备中吗。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-1-24 00:28:17 | 显示全部楼层
溪云初_VS28s 发表于 2019-1-23 17:13
汉哥,可以介绍一下三缓冲怎么使用吗?我只找到了WM_MULTIBUF_Enable(1);  这一行代码,用了之后,还是挺 ...

显示个图片需要要460毫秒?
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
发表于 2019-1-24 10:34:56 | 显示全部楼层
eric2013 发表于 2019-1-24 00:28
显示个图片需要要460毫秒?

是的。我微信号码是15062376679,方便的话,汉哥加我一下,我发视频给你。800*480的屏可以到50毫秒以内,1024*600的屏直接奔500毫秒了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-1-25 00:21:35 | 显示全部楼层
溪云初_VS28s 发表于 2019-1-24 10:34
是的。我微信号码是15062376679,方便的话,汉哥加我一下,我发视频给你。800*480的屏可以到50毫秒以内, ...

这时间的确是太长了。估计哪里没整过,

另外你的板子应该是16位SDRAM,使用32位SDRAM的话,刷800*480图片仅需15ms。
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
发表于 2019-1-25 09:56:37 | 显示全部楼层
eric2013 发表于 2019-1-25 00:21
这时间的确是太长了。估计哪里没整过,

另外你的板子应该是16位SDRAM,使用32位SDRAM的话,刷800*480 ...

确实是16位的SDRAM。使用多缓冲的话,是不是需要在PRE_PAINT和WM_POST_PAINT消息里面分别加上MULTI_BUF使能和关闭呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-17 18:01 , Processed in 0.285748 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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