硬汉嵌入式论坛

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

[emWin] 关于对话框中,小工具与内存管理间的问题。

[复制链接]

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2022-11-11 08:36:37 | 显示全部楼层 |阅读模式
在对话框中,使用了BUTTON控件,在BUTTON控件创建时,使用了WM_CF_MEMDEV标志,但是实际使用过程中发现BUTTON好像并没有使用内存设备绘制,显示还是没有区别。如果我对对话框的WM_GetClientWindow窗口使能内存设备,发现显示有了变化。查看EMWIN的参考手册发现, image.png 只有image控件有内存设备相关的描述,想请问一下,BUTTON控件等无法使用内存设备去绘制嘛?如果可以,我需要做那些设置?如果不能使用简单的WM_CF_MEMDEV标志来开启内存设备,那我是否可以在WM_PRE_PAINT中启动内存设备,在WM_PAINT绘制内存,在WM_POST_PAINT中更新显示器?
图示为不使用内存时,使用高分辨率,高抗锯齿描述出来的图形,会出现残缺。如果对对话框的WM_GetClientWindow窗口使能内存设备,则可以避免该问题。
image.png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2022-11-11 09:55:52 | 显示全部楼层
按钮,窗口等控件的窗口存储设备使用,用户仅需在GUI_Init前或者后调用WM_SetCreateFlags(WM_CF_MEMDEV)即可
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2022-11-16 15:01:27 | 显示全部楼层
eric2013 发表于 2022-11-11 09:55
按钮,窗口等控件的窗口存储设备使用,用户仅需在GUI_Init前或者后调用WM_SetCreateFlags(WM_CF_MEMDEV)即 ...

意思就是不能单独为某个BUTTON单独使用内存设备?如果我在GUI_Init前或者后调用
WM_SetCreateFlags(WM_CF_MEMDEV),不就意味着我的所有控件都将使用内存设备绘制?目前如果所有的控件都是用内存设备绘制的话会有卡顿。另外我请教一下,多缓存和内存设备的关系,他们是非此即彼的功能嘛?还有一点,我是否可以根据消息机制,自己实现某一个小工具的内存设备绘制功能,例如在WM_PAINT之前开辟一块内存,在WM_PAINT里面更新内存设备到显示器,在WM_PAINT之后释放内存设备?这样是否可行?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2022-11-17 10:15:55 | 显示全部楼层
qtxxcj123 发表于 2022-11-16 15:01
意思就是不能单独为某个BUTTON单独使用内存设备?如果我在GUI_Init前或者后调用
WM_SetCreateFlags(WM_C ...

1、可以单独,如果你的全局是关闭的,单独配置就有意义了。
2、多缓冲和存储设备,二选一。
3、可以的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 05:14 , Processed in 0.223607 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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