硬汉嵌入式论坛

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

[emWin] 窗口回调重绘问题

[复制链接]

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
发表于 2016-9-2 11:40:45 | 显示全部楼层 |阅读模式
如图 QQ截图20160902113849.png
这条红线是在WM_PAINT的消息里面进行重绘的
但是,如何才能把这条红线显示在这些BUTTON上面,而不是现在的下面呢
回复

使用道具 举报

11

主题

130

回帖

168

积分

初级会员

积分
168
发表于 2016-9-2 21:03:23 | 显示全部楼层
在确保这些button全部绘制完成后,无效化button的父窗口,在父窗口回调函数WM_PAINT消息处理中划线。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-9-3 10:03:01 | 显示全部楼层
这个有点麻烦,你可以创建一个带透明标志的窗口,然后窗口的WM_PAIT消息里面仅绘制一条线,看看效果是不是出来了。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-9-3 14:26:31 | 显示全部楼层

回 有梦为马 的帖子

有梦为马:在确保这些button全部绘制完成后,无效化button的父窗口,在父窗口回调函数WM_PAINT消息处理中划线。 (2016-09-02 21:03) 
这条线现在就是在WM_PAINT中进行重绘的
估计按照EMWIN的重绘机制,就是只能在控件的后面重绘别的内容了

无效化BUTTON都没有用
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-9-3 14:31:46 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个有点麻烦,你可以创建一个带透明标志的窗口,然后窗口的WM_PAIT消息里面仅绘制一条线,看看效果是不是出来了。 (2016-09-03 10:03) 
在WM_INIT消息中调用WM_SetHasTrans()将FRAME设置成TRANS模式也还是不行,和现在一样的效果
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-9-4 09:24:55 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:在WM_INIT消息中调用WM_SetHasTrans()将FRAME设置成TRANS模式也还是不行,和现在一样的效果 (2016-09-03 14:31) 
设置这个窗口显示到顶层。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-9-4 13:19:31 | 显示全部楼层

回 eric2013 的帖子

eric2013:设置这个窗口显示到顶层。 (2016-09-04 09:24) 
在WM_PAINT消息里面这样写

WM_SetHasTrans(pMsg->hWin);
WM_BringToTop(pMsg->hWin);
            
GUI_SetColor(GUI_RED);
GUI_DrawLine(0,0,100,100);

效果还是一样的,在BUTTON的下面
回复

使用道具 举报

11

主题

130

回帖

168

积分

初级会员

积分
168
发表于 2016-9-5 08:50:04 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:这条线现在就是在WM_PAINT中进行重绘的
估计按照EMWIN的重绘机制,就是只能在控件的后面重绘别的内容了

无效化BUTTON都没有用 (2016-09-03 14:26) 
emwin是按控件的父子关系层次重绘的。试了这样可以,改button的回调函数并设置给最后一个创建的button。回调函数里改wm_paint,先调用之前的BUTTON_Callback,然后在这里画线。不要用gui的API画线函数,它是以当前窗口为参考点,用最原始的自己移植时提供的画线函数。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-9-5 09:51:28 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:在WM_PAINT消息里面这样写

WM_SetHasTrans(pMsg->hWin);
WM_BringToTop(pMsg->hWin);
....... (2016-09-04 13:19) 
创建窗口后,设置一次即可
WM_SetHasTrans();
WM_BringToTop()

不需要在WM_PAINT重复设置,估计都没有起到作用。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 06:57 , Processed in 0.311707 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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