首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 图形图象-> FLASH教程
解决Windows 程序界面闪烁问题的一些经验-.NET教程,Windows开发
作者:网友供稿 点击:474
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。

先来谈谈闪烁产生的原因

原因一:
如果熟悉显卡原理的话,调用gdi函数向屏幕输出的时候并不是立刻就显示在屏幕
上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。

一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的。

这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个
刷新周期内完成,那么给人的视觉感受就是,先看到只有背景色的图像,然后看到画上内容的图像,
这样就会感觉闪烁了。

解决方法:尽量快的输出图像,使输出在一个刷新周期内完成,如果输出内容很多比较慢,那么采用
内存缓冲的方法,先把要输出的内容在内存准备好,然后一次输出到显存。要知道一次api调用一般可以
在一个刷新周期内完成。

对于gdi,用创建内存dc的方法就可以了

原因二:

复杂的界面有多层窗口组成,当windows在窗口改变大小的时候是先重画父窗口,然后重画子窗口,子父
窗口重画的过程一般无法在一个刷新周期内完成,所以会呈现闪烁。

我们知道父窗口上被子窗口挡住的部分其实没必要重画的

解决方法:给窗口加个风格 ws_clipchildren ,这样父窗口上被子窗口挡住的部分就不会重画了。

如果同级窗口之间有重叠,那么需要再加上 ws_clipsiblings 风格

原因三:

有时候需要在窗口上使用一些控件,比如ie,当你的窗口改变大小的时候ie会闪烁,即使你有了ws_clipchildren
也没用。原因在于窗口的类风格有cs_hredraw 或者 cs_vredraw,这两个风格表示窗口在宽度或者高度变化的时候
重画,但是这样就会引起ie闪烁

解决方法:注册窗口类的时候不要使用这两个风格,如果窗口需要在改变大小的时候重画,那么可以在wm_size的时候
调用redrawwindow。

原因四:

界面上窗口很多,而且改变大小时很多窗口都要移动和改变大小,如果使用movewindow或者setwindowpos两个api来
改变窗口的大小和位置,由于他们是等待窗口重画完成后才返回,所以过程很慢,这样视觉效果就可能会闪烁。

解决方法:

使用以下api来处理窗口移动,begindeferwindowpos, deferwindowpos,enddeferwindowpos
先调用 begindeferwindowpos 设定需要移动的窗口的个数
使用deferwindowpos,来移动窗口,这个api并不真的造成窗口移动
enddeferwindowpos 一次性完成所有窗口的大小和位置的改变。

有个地方要特别注意,要仔细计算清楚要移动多少个窗口,begindeferwindowpos设定
的个数一定要和实际的个数一致,否则在win9x下,如果实际移动的窗口数多于调用begindeferwindowpos
时设定的个数,可能会造成系统崩溃。在windows nt系列下不会有这样的问题。



文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·adodb.stream对象的方法/属性-ASP教程,数据库相关
·DataGrid - 导出Excel文件-.NET教程,数据库应用
·有滚动条、固定Header的ASP.Net DataGrid实现-ASP教程,数据库相关
·解决Windows 程序界面闪烁问题的一些经验-.NET教程,Windows开发
·C#数据访问类-.NET教程,C#语言
·jsp生成html--replace-JSP教程,Jsp/Servlet
·查询两个表中字段个数不同,名称不同的SQL语句-ASP教程,数据库相关
·【C#】输入汉字字符串索引拼音的首字母-.NET教程,C#语言
·使用SQLServer2005-.NET教程,Web Service开发
·Java语言中字符的处理-JSP教程,Java技巧及代码
最新文章
·flash中作毛笔写字动画效果_flash教程
·用dreamweaver制作网页时关于文字自动换行的小技巧_dreamweaver教程
·seo中十大影响链接权重的因素浅析_seo网站优化
·在windows vista系统下扩大“发送到”的范围_windows vista
·众多网站引入嵌入式广告 网络广告面临拐点_站长访谈
·王怀南:遍地都是黄金 宝宝树创新模式_站长访谈
·幻想着靠蓝海大赚是不可能的_站长心得
·谈谈做站与站长的站德问题_站长心得
·photoshop打造非主流效果—颓废诡异效果_photoshop教程
·google pagerank 技术解密 1_google推广
相关主题
  • 解决windows vista与vpn的兼容问题_windows vista
  • 解决windows xp sp2带来的网络故障_windows xp
  • 解决win2003 iis6的请求的资源在使用中(无法运行asp程序)的解决方法_windows 2003
  • 解决windows xp系统中cpu占用率过高的问题
  • 解决winxp不能一次整理多分区硬盘的问题
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭