zoukankan      html  css  js  c++  java
  • win32 窗口缩放时出现闪屏

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

    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

  • 相关阅读:
    ryzen nvidia hackintosh
    mysql count 主键之坑
    git命令
    MYSQL 注释
    yaf twig配置
    1.YAF 的安装
    yaf nginx 设置
    ubuntu 16 阿里云 vsftpd
    win10下 homestead 安装
    活动调度
  • 原文地址:https://www.cnblogs.com/personnel/p/4584914.html
Copyright © 2011-2022 走看看