http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。"> 本文转载自:aspx">http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。_IT技术专题(解决Windows 程序界面闪烁问题的一些经验 )
    当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 本文转载自:aspx">http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。
 

 

    摘要:上次在csdn上面写了 《关于windows编程的一些心得》,呵呵,本来只是随便把自己学习过程中的一些体会写出来,没想到最后人气还满高的,网友larry还到我的blog上留了言,虽然只有短短的一句话,但是还是让偶感动不已,于是在上班中抽个空,写下这篇文章。在上篇文章里面说到消息对于win32编程的重要性。的确,如果作为一个为windows平台开发应用程序的程序员,如果对消息(message)这个概......
    摘要:问题描述:在用非.net客户端调用webservice中,按照使用soap toolkit中的指导实现起来很简单,但在实际使用过程中却发现一个问题。假如webservice提供的方法是:int simplemath.add(int n1,int n2),返回值是n1+n2, 但按照soap toolkit提供的例子,使用vc进行调用,得到的返回值却是0。记录下我的解决过程,备忘。试验环境:os:w......


解决Windows 程序界面闪烁问题的一些经验

本文转载自:aspx">http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx

先来谈谈闪烁产生的原因 【程序编程相关:The Slider Control

一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 【推荐阅读:VC++ 学习笔记(二)

一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的. 【扩展信息:CSliderCtrl类的成员函数

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

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

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

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

原因二:

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

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

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

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

原因三:


...   下一页
 ·directshow中 filter graph及其组成     »显示摘要«
    摘要:智慧的鱼(aoosang)摘要:本篇文档概括性的介绍了directshow的主要组成部分,以及一些directshow的基本概念。熟悉这些基本的知识对于directshow的应用开发或者过滤器的开发者都会有所帮助。 directshow是微软公司提供的一套在windows平台上进行流媒体处理的开发包,与directx开发包一起发布。那么,directshow能够做些什么呢?且看,directsho......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE