今天无意发现之前写的一个小工具在缩放窗口的时候,出现闪屏,主要有两个位置:

  1. 工具栏出一闪屏

  2. 右侧的控制面板出现闪屏 (这个控制面板与多层元件组合而成)

之前真没注意到这个问题,平时都是最大化/恢复窗口,没缩放窗口,所以没发现这样的问题。

网上搜索了一下,找到一些解决方案:

[百度文库] VC窗口闪烁问题的解决 - http://wenku.baidu.com/view/3c7e747931b765ce0508146a.html

我遇到的问题属于第2种情况:

原因二:  复杂的界面有多层窗口组成,当windows在窗口改变大小的时候是先重画父窗口,然后重画子窗口,子父  窗口重画的过程一般无法在一个刷新周期内完成,所以会呈现闪烁。 我们知道父窗口上被子窗口挡住的部分其实没必要重画的  解决方法:给窗口加个风格 WS_CLIPCHILDREN ,这样父窗口上被子窗口挡住的部分就不会重画了。  如果同级窗口之间有重叠,那么需要再加上 WS_CLIPSIBLINGS 风格

我在创建主窗口的相关代码中加一个dwStyle: WS_CLIPCHILDREN

就解决了闪屏的问正式。

今天还发现一个新的 dwExStyle:WS_EX_COMPOSITED  (xp下什么双缓冲绘图机制)

相关的介绍:

http://www.cppblog.com/xfpl-at-hotmail-dot-com/archive/2009/10/10/98261.html?opt=admin

http://blog.sina.com.cn/s/blog_874559b70100thqy.html

我在一个多层次控件的父窗口,其实就是一个类似java中的JPanel上,设置 dwExStyle: WS_EX_COMPOSITED

竟然可以解决缩放窗口时JPanel中控件重绘造成的闪屏情况。

但是,当我把这个指定给一个画图片的面板上,发现虽然彻底解决了图片重绘时的闪屏问题,但是电脑的CPU占用达到50%.

看来这个 dwExStyle: WS_EX_COMPOSITED 是要付出代价的.

2014-01-11

win32 窗口缩放时出现闪屏的更多相关文章

  1. android启动第一个界面时即闪屏的核心代码(两种方式)

    闪屏,就是SplashScreen,也能够说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后.自己主动关闭.  第一种方式: android的实现很easy,使用Handler对象的postDe ...

  2. JQuery Mobile - 解决切换页面时,闪屏,白屏等问题

    在点击链接,切换页面时候,总是闪屏,感觉很别扭,看起来不舒服,怎么解决这个问题?方法很简单,就是在每个页面的meta标签内定义user-scalable的属性为 no! <meta name=& ...

  3. 前端页面中如何在窗口缩放时让两个div始终在同一行显示

    直接贴代码吧 先总结一下吧  有两种方法 一    最外层设置一个大div  给这个大div固定的宽度和高度 给里面两个小div 设置浮动  设置宽高 <!DOCTYPE html> &l ...

  4. Android如何避免切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题

    1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有SurfaceView.结果,每次打开程序第一次进入到该Acti ...

  5. Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

    本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...

  6. MFC框架下Opengl窗口闪屏问题解决方案

    转自https://blog.csdn.net/niusiqiang/article/details/43116153 虽然启用了双缓冲,但是仍然会出闪屏的情况,这是由于OpenGL自己有刷新背景的函 ...

  7. 在DevExpress程序中使用SplashScreenManager控件实现启动闪屏和等待信息窗口

    在我很早的WInform随笔<WinForm界面开发之"SplashScreen控件">有介绍如何使用闪屏的处理操作,不过那种是普通WInform和DevExpress ...

  8. DevExpress21:SplashScreenManager控件实现启动闪屏和等待信息窗口

    DevExpress中SplashScreenManager这个控件的主要作用就是显示程序集加载之前的进度条显示和进行耗时操作时候的等待界面. 一.SplashScreenManager控件的使用 1 ...

  9. winform MDI子窗口闪动问题(本人测试100%有效解决闪屏问题)

    将下面的代码随便放到主窗体的任何一个地方 protected override CreateParams CreateParams //解决MDI闪屏 { get { CreateParams cp ...

随机推荐

  1. Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)

    这套接口自动化持续集成环境已经部署差不多了,现在说说我的设计思路 1:利用Docker容器化Gitlab,Jenkins,Jmeter,Ant,链接如下 Docker_容器化gitlab Docker ...

  2. 测试网站页面网速的一个简单Python脚本

    无聊之余,下面分享一个Python小脚本:测试网站页面访问速度 [root@huanqiu ~]# vim pywww.py #!/usr/bin/python # coding: UTF-8 imp ...

  3. BugPhobia回顾篇章:团队Beta 阶段工作分析

    0x00:序言 1 universe, 9 planets, 204 countries,809 islands, 7 seas, and i had the privilege to meet yo ...

  4. Linux内核分析 第七周 可执行程序的装载

    张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第七 ...

  5. WinForm(WPF) splash screen demo with C#

    https://www.codeproject.com/Articles/21062/Splash-Screen-Control https://www.codeproject.com/Article ...

  6. Excel读写方案XLSReadWriteII使用技巧总结

    XLSReadWriteII是一个读写Excel的组件.他的一般已用只要按照Demo操作基本都能实现,只要不是非常复杂的应用,XLSReadWriteII还是能够胜任的. 最近被派了一个写入图库的应用 ...

  7. as_matrix、保存训练模型

    #-*- coding: utf-8 -*- #构建并测试CART决策树模型 import pandas as pd #导入数据分析库 from random import shuffle #导入随机 ...

  8. scipy线性模块liner(linalg)

    #liner import numpy as np from scipy import linalg as lg arr=np.array([[1,1],[0,1]]) matr=np.mat('[1 ...

  9. 关于EXCEL if、countif 在查找数据的用法

    最近被其他部门的同事教导使用excel.突然觉得以前用代码切来切去的东西,和频繁比对的数据原来是用excel就能那么方便的算出,瞬间感觉打开了新世界的大门. 先说if和countif结合使用,来判断一 ...

  10. calico实现docker容器内部的网络链接

    calico官网 https://www.projectcalico.org// calico介绍 http://www.sdnlab.com/17161.html calico网络 环境 系统   ...