硬汉嵌入式论坛

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

[emWin] 设置界面透明度,能够看到下层界面显示的时候,回调函数的问题

[复制链接]

13

主题

43

回帖

82

积分

初级会员

积分
82
发表于 2020-4-9 16:48:07 | 显示全部楼层 |阅读模式
就如图片中的方法设置,是可以显示双层界面,但是在创建对话框的函数中已经有一个回调函数_cb_RTType_Dialog,那么WM_SetCallback(hWin, _Alpha_cbWindow);这个函数的意义是什么,我试了一下,把他去掉还不能使背景透明,能不能麻烦哪位大神讲解一下还有就是,这样显示双层界面的话,在对话框的回调函数_cb_RTType_Dialogs中的WM_PAINT会进入三次,下层界面重绘也会进入三次,这样对于开发板来说会不会负担很大


QQ截图20200409164127.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-4-9 17:41:05 | 显示全部楼层
1、设置新的回调后就不使用之前创建的回调了。
2、特别注意,这个WM_PAINT并不是每次进入重绘所有,大部分情况下是做局部重绘,他会计算当前需要重绘的最大区域,然后去重绘。
回复

使用道具 举报

13

主题

43

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-4-9 17:56:23 | 显示全部楼层
eric2013 发表于 2020-4-9 17:41
1、设置新的回调后就不使用之前创建的回调了。
2、特别注意,这个WM_PAINT并不是每次进入重绘所有,大部分 ...

设置新的回调就不使用之前创建的回调了吗,不是啊,之前的回调是对话框资源列表的回调,设置新的之后,之前的还是会进入啊,如果不进入的话,对话框就不透明了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-4-9 18:00:25 | 显示全部楼层
笑物语 发表于 2020-4-9 17:56
设置新的回调就不使用之前创建的回调了吗,不是啊,之前的回调是对话框资源列表的回调,设置新的之后,之 ...

这也很好理解啊,这个说明你的对话框主体窗口不是Window,而是FrameWin。
回复

使用道具 举报

13

主题

43

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-4-9 19:04:56 | 显示全部楼层
eric2013 发表于 2020-4-9 18:00
这也很好理解啊,这个说明你的对话框主体窗口不是Window,而是FrameWin。

那这样的话,使用对话框资源列表创建的窗口实际上是有两个窗口的,一个是FrameWin,另一个是资源列表里面的window窗口,然后WM_SetCallback(hWin, _Alpha_cbWindow); 这个函数设置的整体的对话框资源列表的回调,然后_cb_RTType_Dialog这个回调实际上是对话框内部的窗口的回调吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-4-9 19:59:37 | 显示全部楼层
笑物语 发表于 2020-4-9 19:04
那这样的话,使用对话框资源列表创建的窗口实际上是有两个窗口的,一个是FrameWin,另一个是资源列表里面 ...

QQ截图20200409195934.png
回复

使用道具 举报

13

主题

43

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-4-10 09:30:07 | 显示全部楼层

好的。了解了。谢谢,麻烦你了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 22:41 , Processed in 0.254440 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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