5586|10

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于WINCE下,继承CButton类,实现一个图形按钮类;发现无论如何都是刷新背景。 [复制链接]


在WINDOWS下,Invalidate(FALSE)或者OnEraseBkgnd直接返回,就不会率刷新背景。

但在WINCE下,如果如何都刷背景。

按钮要实现如下效果:当鼠标移动按钮上面时,显示一副图,移开后显示另一副图,发现在WINCE下经常有闪屏的情况,本人认为就是绘制背景;

但同样的代码,移植到WINDOWS下,就没有任何问题;

我现在强烈认为是不是WINCE下的CVButton类的Invalidate(FALSE),还是会刷新背景啊;

请各位大侠帮忙指点,谢过先;
此帖出自WindowsCE论坛

最新回复

我也遇到了同样的问题。经过Debug后发现无论OnEraseBkgnd返回TRUE还是FALSE都会把背景擦除。  详情 回复 发表于 2008-6-2 13:09
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
OnEraseBkgn 直接返回了么,应该还是你的哪个环节出了问题,我做过类似的功能,没这个问题啊
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上的,直接返回了;
DEBUG我也跟了;

我做了很详细的测试论证;

此帖出自WindowsCE论坛
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

4
 
也有可能楼主的CPU速度不够,或者显示驱动没有做好。
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
会闪的原因很多,但根本原因是由于刷新速度不够快.像你说的情况的话,你调用CVButton.Invalidate(FALSE),都不会触发背景刷新,这个只会触发button控件的刷新,所以你检查会不会是你触发了button事件后还触发了整个窗体的刷新.你说在windows上没这个现象可能是因为windows上执行速度很快,看不到闪烁现象.

button类的Invalidate,本身是不会触发整个窗体的刷新的,因为我做过其他button的Invalidate都不会触发主窗体的OnPaint事件
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
感谢楼上的回答;
我也知道WINDOWS执行速度快,但是在CE下button的Invalidate并没有触发整个窗体的刷新。
另外,我也另外基于CStatic封装了一下,用Invalidate(FALSE),并没有闪烁现象,表示CE机器的速度是没有问题的;

但是,继承CButton总感觉刷了背景,导致闪烁;
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

7
 
我用的CBitmapButton和自己用CStatic写确实也没有这个问题.再帮你看看吧:(
此帖出自WindowsCE论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

8
 
如果你自己将WM_ERASEBKGND消息直接返回0看看..?我都是这么做的
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 
在WINDOWS下WM_ERASEBKGND直接返回,是没有问题
但是,在CE下直接返回,还是闪;

难道是CE的CButton的小BUG.
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
类似的功能我用api直接写的,一点问题都没有,mfc我没怎么用过,但底层的实现无非也是调用了相应的api,你说会闪,首先排除机器的速度问题,那不可能,就是你的封装的类库的问题,你为什么要调用WM_ERASEBKGND,这个过程就是刷新onpaint的过程,建议你换个算法,直接在控件获得焦点时bilblt图片.
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
我也遇到了同样的问题。经过Debug后发现无论OnEraseBkgnd返回TRUE还是FALSE都会把背景擦除。
此帖出自WindowsCE论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表